Files
Sun1602/Server/GameServer/CPetManager.h
T
2022-10-26 12:25:11 +08:00

78 lines
2.2 KiB
C++

#pragma once
#include "PetInfoParser.h"
class CPetManager
{
public:
CPetManager();
~CPetManager();
void Init(Player* pPlayer);
void Clear();
RC::ePET_SUMMON_RESULT UsePetItem(SCItemSlot& rPetItemSlot);
BOOLEAN AlreadySummonedPet() { return m_SummonedPet; }
public:
RC::ePET_SUMMON_RESULT ReturnPet(BOOL bForce = FALSE);
RC::ePET_SUMMON_RESULT ReturnPet(SCItemSlot* pPetItemSlot, BOOL bForce = FALSE);
// 왜 꼭 슬롯으로만 접근해야 하는가?... 쩌비... 나중에 창현씨한테 문의해서 바로ItemSlot얻는 부분에 대해서 문의하자.
SCItemSlot* GetUsedPetSlot() { return m_SummonedPet ? m_pPetItemSlot : 0; }
void Update();
void IncreaseFullness(BYTE value);
void DecreaseFullness(BYTE value);
void IncreaseIntimacy(BYTE value);
void DecreaseIntimacy(BYTE value);
BYTE GetFullness();
BYTE GetIntimacy();
void OnDead();
sPet_Script_Info* GetPetScriptInfo() { return m_pPetInfo; }
// (CHANGES) (f100524.2L) added by _NA000109_100427_ITEM_CUSTOMIZING_CONTENTS_
const sPet_Script_Info* GetImagePetScriptInfo() const { return m_pImagePetInfo; };
void SetSummonInfo();
void SetPetName(const char* pszPetName);
const char* GetPetName();
BOOL IsSetPetName();
private:
RC::ePET_SUMMON_RESULT SummonPet(SCItemSlot* pPetItemSlot);
void ApplyBasicOption();
void CancelBasicOption();
void StartAddOption();
void EndAddOption();
void ApplyAddOption(BYTE byptionLV);
void CancelAddOption();
BOOLEAN IsFullnessMin();
BYTE GetOptionLVByIntimacy();
BOOL IsValidPetItemSlot();
private:
Player* m_pPlayer;
BOOLEAN m_SummonedPet;
POSTYPE m_PetItemPos;
DBSERIAL m_PetItemSerial;
SCItemSlot* m_pPetItemSlot;
sPet_Script_Info* m_pPetInfo;
// (CHANGES) (f100524.2L) added by _NA000109_100427_ITEM_CUSTOMIZING_CONTENTS_
const sPet_Script_Info* m_pImagePetInfo;
BOOLEAN m_bAppliedBasicOption; //기본 옵션이 적용 되었는가?
BOOLEAN m_bAppliedAddOption; //추가 옵션이 적용 되었는가?
BYTE m_AppliedOptionLV;
BOOLEAN m_bMAXIntimacy;
util::Timer m_FiveMinTimer;
util::Timer m_TenMinTimer;
util::Timer m_MaxIntimacyTimer;
};