#include "stdafx.h" ////////////////////////////////////////////////////////////////////////// #include #include ////////////////////////////////////////////////////////////////////////// #include #include ".\HuntingField.h" #include #include _IMPL_POOL(HuntingField) HuntingField::HuntingField(void) { } HuntingField::~HuntingField(void) { } VOID HuntingField::Create(KEYTYPE key, MAPCODE mapCode, ServerSession* pServerSession) { SetKey(key); SetMapCode(mapCode); SetLinkedServer(pServerSession); On_create(); } VOID HuntingField::On_create() { MSG_AG_ZONE_FIELD_CREATE_CMD msg; msg.m_dwKey = 0; msg.m_MapCode = GetMapCode(); msg.m_RoomKey = GetKey(); SendToLinkedServer(&msg, sizeof(msg)); } VOID HuntingField::On_destroy() { } VOID HuntingField::On_readyuser(User* pUser) { pUser->SetZoneState(ePRS_BEFORE_ENTER_FIELD); pUser->SetZoneKey(GetKey()); pUser->SetZoneType(eZONETYPE_FIELD); } VOID HuntingField::On_enteruser(User* pUser) { ZoneInterface::On_enteruser(pUser); pUser->SetZoneState(ePRS_AT_FIELD); pUser->SetSelectedCharMapCode(GetMapCode()); // ¹æ¿¡ µé¾î¿Ã¶§ ÆÄƼ°ü·Ã 󸮸¦ ÇÑ´Ù. AgentPartyManager::Instance()->EnterZone(pUser, this); } VOID HuntingField::On_leaveuser(User* pUser) { if (pUser->GetPartyState().IsPartyMember()) { AgentPartyManager::Instance()->LeaveZone(pUser, this); } } RC::eROOM_RESULT HuntingField::_CanJoinEach(User* pUser, eZONEPUBLIC roomPublic, TCHAR* pszRoomPWD) { // ÆÄƼ¿ø ¼ö°¡ MAX_FIELD_PARTYMEMBER_NUM ÀÌ»óÀÌ¸é µé¾î¿Ã ¼ö ¾ø´Ù. DWORD MemberNum = AgentPartyManager::Instance()->GetMemberNum(pUser->GetPartyState().GetPartyKey()); if(MemberNum > MAX_FIELD_PARTYMEMBER_NUM) return RC::RC_ROOM_PARTY_MEMBER_ACCESS; return RC::RC_ROOM_SUCCESS; }