85 lines
2.1 KiB
C++
85 lines
2.1 KiB
C++
// sonador #2.1.2.4.3 팻 조작 UI 연동
|
|
#pragma once
|
|
|
|
#include <mmo/ArType.h>
|
|
#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;
|
|
} };
|
|
|
|
}; |