Files
Sun1602/Client/GameClient/Interface/uiPartyMan/uiPartyMan.h
T
2022-10-26 12:25:11 +08:00

223 lines
7.2 KiB
Objective-C

#ifndef __USER_INTERFACE_MANAGER_PARTY_H__
#define __USER_INTERFACE_MANAGER_PARTY_H__
//------------------------------------------------------------------------------
/**
@class uiPartyMan
interface manager for a party
(C) 2005 ckbang
*/
#include "uiPartyMan_def.h"
#include "uiBaseMan.h"
class uiPartyOption;
class uiPartyLeavePopup;
class uiPartyMember;
class ItemShareSystem;
struct stPendingUnexpectedStatus
{
//비정상 종료시 파티복귀 에서 필요한 값들은 Pending 해놓을 구조체
DWORD m_dwReturnPlayerKey;
TCHAR m_szReturnPlayerName[MAX_CHARNAME_LENGTH+1];
};
class uiPartyMan : public uiBaseMan
{
public:
uiPartyMan(InterfaceManager *pUIMan);
//--------------------------------------------------------------------------
// init/release
//
public:
virtual void OnRelease();
virtual void Process(DWORD dwTick);
virtual void OnInitialize();
//--------------------------------------------------------------------------
// functions
//
public:
void Reason(BYTE byErrorCode);
//--------------------------------------------------------------------------
// procedure
//
public:
virtual void NetworkProc( MSG_BASE * pMsg ); // Pure
//--------------------------------------------------------------------------
// member vars
//
private:
uiPartyMember* m_pUIPartyMembers[c_sMAX_PARTY_MEMBER_NUM];
uiPartyOption* m_pUIPartyOption;
uiPartyLeavePopup* m_pUIPartyLeavePopup;
ItemShareSystem* m_pUIItemShareSystem;
BOOL _LoadUI();
public:
bool IsLeader();
bool IsShowBuffInfos();
void uiClear(short idx);
void uiClearAll();
void uiShowAll();
bool Comp_HeroKey(DWORD dwKey);
void Insert_MemberInfo(uicPartyMemberInfoPlus memInfo);
void Remove_MemberInfo(DWORD dwObjKey, BYTE byReason);
void RefreshPartyHideInfo(BOOL bClear=FALSE);
void ChangePartyHideInfo(DWORD dwObjKey,BOOL bClear);
void uiPartySort(int sortType=eUIPARTY_SORT_NORMAL);
void PutMsg_PlayerEntered(uicPartyMemberInfoPlus memInfo);
void Migration(DWORD dwObjKey);
void DestroyParty();
void LeaveParty();
void AskJoinParty( const char * szName );
void ResponseJoinParty(char *pszMasterName);
// uiPartyMan_net.cpp
void InitInfo(MSG_CG_PARTY_CREATE_CMD *pMsg);
void AddInfo(MSG_CG_PARTY_JOIN_BRD* pMsg);
void NET_SEND_CG_PARTY_RETURN_C2G_LEADER_QUERY_ACK(byte byAnswer);
void NET_SEND_CG_PARTY_RETURN_C2G_MEMBER_QUERY_ACK(bool val);
void _callBack_ReturnParty(bool /*val*/) { return;}
void DeleteUnExpectedPartyMember(TCHAR * pszCharName);
// uiPartyMan_info.cpp
void ClearParty();
bool IsParty();
bool IsPartyMember(DWORD dwObjKey);
DWORD IsPartyMemberForName(const TCHAR* character_name);
short GetPartyNum();
int GetPartyIndex(TCHAR* character_name);
int GetPartyIndexByObjectKey(DWORD object_key);
const uicPartyMemberInfoPlus& GetParty(short idx);
const uicPartyMemberInfoPlus* GetPartyLeader();
STLX_VECTOR<uicPartyMemberInfoPlus> GetPartyList();
STLX_VECTOR<uicPartyMemberInfoPlus>& GetPartyListRef() { return m_vParty; }
void SetPartyList(const STLX_VECTOR<uicPartyMemberInfoPlus>& partyList);
#ifdef _DH_BATTLEZONE2_
int GetPartyIndexFromObjectkey(DWORD object_key);
void SetBattleZoneReady(int object_key,bool is_ready);
void AllCancleBattleZoneReady();
void CheckOutputZoneType();
#endif //_DH_BATTLEZONE2_
void ForcedExpulsion();
void ChangeMaster();
void ChangeLevel(DWORD dwObjKey, WORD wLevel);
void ChangeHP(DWORD dwObjKey, BYTE byHpRatio);
void ChangeMP(DWORD dwObjKey, BYTE byMpRatio);
#ifdef _NA_006638_20120415_ADD_SHIELD_INFO_IN_TARGET_INFO
void ChangeSD(DWORD object_key, BYTE sd_ratio);
#endif //_NA_006638_20120415_ADD_SHIELD_INFO_IN_TARGET_INFO
void ChangeChaoState(DWORD dwObjKey, BYTE byChaoState);
void NET_RECV_MSG_CG_PARTY_NAVI_INFO_BRD(MSG_CG_PARTY_NAVI_INFO_BRD* pMsg_NaviInfo);
PartyNaviInfo* GetPartyNaviInfo() { return m_pPartyNaviInfo; }
#ifdef _NA_003033_20110831_DICECAST_ITEM_ROUTING
void NET_RECV_MSG_CG_PARTY_DICECAST_RESULT_CMD(MSG_CG_PARTY_DICECAST_RESULT_CMD* dicecast_result);
#endif //_NA_003033_20110831_DICECAST_ITEM_ROUTING
void DeadPartyMembaer(DWORD dwObjKey);
void ResurrectionPartyMember(DWORD dwObjKey);
void SetOpenPartyJoinWindow(BOOL val) { m_bIsOpenPartyJoinWinodw = val; }
void UpdatePartyItemShareSystem();
void SetTargetingMember(int party_member_index);
uicPartyMemberInfoPlus* GetPartyMemberInfo(DWORD dwObjKey);
uicPartyMemberInfoPlus* GetPartyMemberInfoFromIndex(DWORD dwIndex);
DWORD GetMasterKey();
WORD GetPartyKey(){ return m_PartyKey; }
PartyNaviInfo* m_pPartyNaviInfo;
void uiSetPartView();
void SetShowFace(bool val);
void SetShowGague(bool val);
void SetShowBuf(bool val){ m_bIsShowBuf = val; }
bool GetShowFace(){ return m_bIsShowFace; }
bool GetShowGague(){ return m_bIsShowGague; }
bool GetShowBuf(){ return m_bIsShowBuf; }
void UpdateStatusIcon();
void Send_CG_PARTY_ROOM_FORCE_LEAVE_SYN();
protected:
void NoticeReasonLeaveParty(DWORD dwObjKey, BYTE byReason);
private:
bool m_bImTheLeader;
bool m_bShowBuffInfos;
BOOL m_bIsOpenPartyJoinWinodw;
bool m_bIsShowFace;
bool m_bIsShowGague;
bool m_bIsShowBuf;
STLX_VECTOR<uicPartyMemberInfoPlus> m_vParty;
WORD m_PartyKey;
DWORD m_MasterKey;
std::deque<stPendingUnexpectedStatus> m_dequePartyReturn;
DWORD m_dwPendingPartyKey;
#ifdef _NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
bool is_opened_return_party_window_;
bool is_disconnected_uesr_kick_;
char kick_player_name_[MAX_CHARNAME_LENGTH+1];
#endif //_NA_20111220_CHANGE_DISCONNECTED_USER_PROCESS
};
void _callBack_ReallyCancleReturnPartyMember(bool val);
void _callBack_Recall_PartyMember(bool val);
//------------------------------------------------------------------------------
/**
*/
inline
bool
uiPartyMan::IsLeader()
{
return this->m_bImTheLeader;
}
//------------------------------------------------------------------------------
/**
*/
inline
bool
uiPartyMan::IsShowBuffInfos()
{
return this->m_bShowBuffInfos;
}
//------------------------------------------------------------------------------
/**
*/
inline
DWORD
uiPartyMan::GetMasterKey()
{
return m_MasterKey;
}
//------------------------------------------------------------------------------
#endif // __USER_INTERFACE_MANAGER_PARTY_H__