#pragma once #ifndef AGENTSERVER_CHAR_INFO_H #define AGENTSERVER_CHAR_INFO_H #include "UserInfo.Structures.h" //================================================================================================== namespace ns_object { ; struct CharacterInfoList { DWORD cur_hp, max_hp, cur_mp, max_mp, cur_sd, max_sd; #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE PLAYERFP cur_fp,max_fp; #endif //_NA_007514_20140828_NEW_CHARACTER_WITCHBLADE uint8_t chao_state; // last order... DWORD char_name_hashes[MAX_CHARACTER_SLOT_NUM]; SERVER_CHARACTER_PART nodes[MAX_CHARACTER_SLOT_NUM]; }; struct CharacterList { struct PoolInstance; // CharacterList(); ~CharacterList(); // void Init(); // called by User::Init void Release(); // called by User::Release // bool SelectCharacter(int selecting_char_slot_index); // void SerializeCharacterPart(BYTE slot_index, SERVER_CHARACTER_PART& INOUT parts, eSERIALIZE se); void LoadClientCharacterPart(BYTE slot_index, CLIENT_CHARACTER_PART* const result_parts) const; // data fields... SERVER_CHARACTER_PART* selected_char; uint8_t selected_char_slot_index; uint8_t number_of_characters; bool occupied_slots[MAX_CHARACTER_SLOT_NUM]; CharacterInfoList* character_infos; // managed by pool control, User::Init, User::Release // static PoolInstance* pool_instance_s; // __DISABLE_COPY(CharacterList); }; }; //end of namespace //================================================================================================== #if SUN_CODE_BACKUP // struct sUSER_CHAR_INFO { // ij¸¯ÅÍ Á¤º¸ BYTE m_bySelectedCharIndex; BYTE m_byCharNum; BOOL m_bOccupiedSlot[MAX_CHARACTER_SLOT_NUM]; // ij¸¯ÅÍ Á¤º¸ DWORD m_dwCurHP; DWORD m_dwMaxHP; DWORD m_dwCurMP; DWORD m_dwMaxMP; eCHAO_STATE m_ChaoState; SERVER_CHARACTER_PART m_CharacterPart[MAX_CHARACTER_LIST_NUM+1]; //< 0~5±îÁö »ç¿ë, 6´Â ÃʱⰪ(»ç¿ëÇÏÁö ¾ÊÀ½) struct { BYTE byPlayingTutorial; MAPCODE mcLastVillageMapCode; } m_Tutorials[MAX_CHARACTER_LIST_NUM]; DWORD m_dwCurSD; DWORD m_dwMaxSD; }; ////////////////////////////////////////////////////////////////////////// // // class CharacterOperator { sUSER_CHAR_INFO& m_rCHAR_INFO; public: CharacterOperator( sUSER_CHAR_INFO& rINFO ) : m_rCHAR_INFO(rINFO) { Clear(); } VOID Clear() { memset( &m_rCHAR_INFO, 0, sizeof(m_rCHAR_INFO) ); m_rCHAR_INFO.m_bySelectedCharIndex = MAX_CHARACTER_LIST_NUM; m_rCHAR_INFO.m_ChaoState = eCHAO_STATE_NORMAL; } VOID SelectChar( BYTE byIndex ); // TempUser½Ã´Â Null, UserÀÏ ¶§ : ¼±ÅÃµÈ Ä³¸¯ÅÍ virtual BYTE GetCharClass() { return m_rCHAR_INFO.m_bySelectedCharIndex= MAX_CHARACTER_SLOT_NUM ) return; if( se == SERIALIZE_STORE ) memcpy( &m_rCHAR_INFO.m_CharacterPart[bySlotIndex], &CharacterPart, sizeof(SERVER_CHARACTER_PART) ); else if( se == SERIALIZE_LOAD ) memcpy( &CharacterPart, &m_rCHAR_INFO.m_CharacterPart[bySlotIndex], sizeof(SERVER_CHARACTER_PART) ); } // VOID SerializeCharacterPart( BYTE bySlotIndex, CLIENT_CHARACTER_PART & INOUT CharacterPart, eSERIALIZE se ); // À¯È¿ÇÑ ½½·ÔÀÎÁö ¿©ºÎ ó¸® inline VOID SetOccupiedSlot( BYTE bySlotIndex, BOOL val ) { m_rCHAR_INFO.m_bOccupiedSlot[bySlotIndex] = val; } inline BOOL IsValidSlot( BYTE bySlotIndex ) { return m_rCHAR_INFO.m_bOccupiedSlot[bySlotIndex]; } inline VOID SetSelectedCharPlayingTutorial( BOOL bIsPlaying ) { ASSERT( m_rCHAR_INFO.m_bySelectedCharIndex <= MAX_CHARACTER_SLOT_NUM ); m_rCHAR_INFO.m_Tutorials[m_rCHAR_INFO.m_bySelectedCharIndex].byPlayingTutorial = (BYTE)bIsPlaying; } inline BOOL IsSelectedCharPlayingTutorial() { ASSERT( m_rCHAR_INFO.m_bySelectedCharIndex <= MAX_CHARACTER_SLOT_NUM ); return (BOOL)(m_rCHAR_INFO.m_Tutorials[m_rCHAR_INFO.m_bySelectedCharIndex].byPlayingTutorial ? TRUE : FALSE); } inline VOID SetSelectedCharLastVillageMapCode( MAPCODE mCode ) { ASSERT( m_rCHAR_INFO.m_bySelectedCharIndex <= MAX_CHARACTER_SLOT_NUM ); m_rCHAR_INFO.m_Tutorials[m_rCHAR_INFO.m_bySelectedCharIndex].mcLastVillageMapCode = mCode; } inline MAPCODE GetSelectedCharLastVillageMapCode() { ASSERT( m_rCHAR_INFO.m_bySelectedCharIndex <= MAX_CHARACTER_SLOT_NUM ); return m_rCHAR_INFO.m_Tutorials[m_rCHAR_INFO.m_bySelectedCharIndex].mcLastVillageMapCode; } }; #endif //SUN_CODE_BACKUP #endif //AGENTSERVER_CHAR_INFO_H