// sonador #2.1.2.4.3 팻 조작 UI 연동 #pragma once #include #include "SGameUIMgr.h" // sonador 10.2.1 팻 시스템 구현 struct DATA_PET { DATA_PET() : pet_handle( 0 ), code( 0 ), pet_avatar( 0 ) { ::memset( name, 0, sizeof( name ) ); } AR_HANDLE pet_handle; AR_HANDLE cage_handle; int code; char name[ 19 ]; class SGameAvatarEx* pet_avatar; }; class SPetMgr : public SGameUIMgr { public: /// 생성자 SPetMgr(); /// 소멸자 virtual ~SPetMgr(); /// process virtual void Process( DWORD dwTime ); /// 팻 정보 초기화 virtual void ResetInfo(); /// empty ? virtual bool IsEmpty() const { return m_vPetDataList.empty(); } /// 현재 소환된 팻 정보를 획득 const DATA_PET& GetSummonPetData() const; /// 로컬 팻 여부 확인 DATA_PET* IsLocalPet( AR_HANDLE hPetHandle ); // sonador 10.2.1 팻 시스템 구현 /// 소환된 팻 여부 확인 SGameAvatarEx* IsSummonPet( AR_HANDLE hPetHandle ); /// 로컬 팻우리 여부 확인 DATA_PET* IsLocalPetCage( AR_HANDLE hPetCageHandle ); /// 로컬 플레이어의 팻 아바타를 등록 void AddPet( class SGameAvatarEx* pet, struct SMSG_ENTER* enterMsg ); /// 로컬 플레이어의 팻 아바타를 삭제 void RemovePet( AR_HANDLE hPetHandle ); /// SMSG_ADD_PET_INFO 처리 void OnMsgAddPetInfo( struct SMSG_ADD_PET_INFO* msg ); /// SMSG_REMOVE_PET_INFO 처리 void OnMsgRemovePetInfo( struct SMSG_REMOVE_PET_INFO* msg ); private: /// 팻 정보 컨테이너 타입 typedef std::vector< DATA_PET > pet_data_vector_t; /// 팻 정보 컨테이너 pet_data_vector_t m_vPetDataList; /// 현재 소환된 팻 정보 DATA_PET m_SummonPet; /// 팻 정보 검색용 함수자 struct PetDataFinder { PetDataFinder( AR_HANDLE handle ) : mHandle( handle ) {} AR_HANDLE mHandle; bool operator()( const DATA_PET& petData ) const { return mHandle == petData.pet_handle; } }; /// 팻 우리 검색용 함수자 struct PetCageFinder { PetCageFinder( AR_HANDLE handle ) : mHandle( handle ) {} AR_HANDLE mHandle; bool operator()( const DATA_PET& petData ) const { return mHandle == petData.cage_handle; } }; };