Files
2022-10-26 12:25:11 +08:00

77 lines
3.2 KiB
C++

#pragma once
#include "GameZone.h"
#include "RankingSystemCtl.h"
class GameRoom : public GameZone
{
protected:
explicit GameRoom(void);
void operator = (const GameRoom&);
public:
virtual ~GameRoom(void);
virtual eZONETYPE GetZoneType() = 0;
virtual void SetZone( Object* pObject, MAPCODE FieldCode, WzID AreaID, WzVector* pwvStartPos ) = 0;
virtual void OnCreate();
virtual void OnDestroy();
virtual void Update( DWORD dwDeltaTick );
virtual void LeaveForWarp( Player* pPlayer );
virtual BOOL MoveField( Player* pPlayer, MAPCODE FieldCode, WzID AreaID, WzVector* pwvStartPos );
virtual void Ready( Player* pPlayer, MAPCODE FieldCode, WzID AreaID, WzVector* pwvStartPos )=0;
virtual BOOL Join( Player* pPlayer, MAPCODE FieldCode, WzID AreaID, WzVector* pwvStartPos );
virtual void Leave( Player* pPlayer );
inline void SetMasterUserKey( DWORD dwUserKey ) { m_MasterUserKey = dwUserKey; }
inline DWORD GetMasterUserKey() { return m_MasterUserKey; }
virtual void ChangeMaster(DWORD dwNextMasterUserKey );
virtual float GetBonusExp( Player* pPlayer );
virtual BOOL CanApplySuperMasterBenefit( Player* pPlayer );
inline const TCHAR* GetRoomTitle() { return m_pszRoomTitle; }
inline const BASE_ROOMINFO* GetBaseRoomInfo() { return &m_RoomInfo; }
virtual const ADDITIONAL_ROOMINFO* GetAdditionalInfo() { static ADDITIONAL_ROOMINFO info; return &info; }
virtual const ADDITIONAL_PVPINFO* GetAdditionalPVPInfo() { static ADDITIONAL_PVPINFO info; return &info; }
virtual void SetSpecialType( eROOM_SPECIAL_TYPE eType ) { m_RoomInfo.m_SpecialType = static_cast<BYTE>(eType); }
inline void SetRoomTitle(const TCHAR* title) { _tcsncpy(m_pszRoomTitle, title, MAX_ROOMTITLE_LENGTH*sizeof(TCHAR)); m_pszRoomTitle[MAX_ROOMTITLE_LENGTH]='\0'; }
inline void SetRoomPWD(const TCHAR* pw) { _tcsncpy(m_pszRoomPWD, pw, MAX_ROOMPASSWORD_LENGTH*sizeof(TCHAR)); m_pszRoomPWD[MAX_ROOMPASSWORD_LENGTH]='\0'; }
inline void SetBaseRoomInfo(const BASE_ROOMINFO* pInfo) { memcpy(&m_RoomInfo, pInfo, sizeof(BASE_ROOMINFO)); }
#ifdef _NA_008012_20150130_RANKING_SYSTEM
inline RankingSystemCtl* GetRankingSystemCtl() { return (Policyment.FIELD & Policyment.ENABLE_RANKING) ? m_pRankingSystemCtl : 0; }
#endif // _NA_008012_20150130_RANKING_SYSTEM
virtual eUSER_RELATION_TYPE IsFriendPVP( Player *pPlayer,Player *pTarget ) { __UNUSED((pPlayer, pTarget)); return USER_RELATION_NEUTRALIST; }
//!~ _NA_003649_20111115_BATTLE_ZONE_HARDMODE
void SetPartyZoneType(PartyZoneType party_zone_type) { party_zone_type_ = party_zone_type; };
PartyZoneType GetPartyZoneType() { return party_zone_type_; };
//~!
private:
DWORD m_MasterUserKey; //< ¹æÀå
TCHAR m_pszRoomTitle[MAX_ROOMTITLE_LENGTH+1];
TCHAR m_pszRoomPWD[MAX_ROOMPASSWORD_LENGTH+1];
BASE_ROOMINFO m_RoomInfo;
// <ChangeHandler>
// (NOTE) Specific Process Handler¸¦ ±³Ã¼ÇÑ´Ù.
public:
virtual void ChangeHandler( const eZONETYPE kindOfRoom, const eINSTANCE_DUNGEON_KIND kindOfIndun = INDUN_KIND_MAX );
PartyZoneType party_zone_type_; //_NA_003649_20111115_BATTLE_ZONE_HARDMODE
#ifdef _NA_008012_20150130_RANKING_SYSTEM
protected:
RankingSystemCtl* m_pRankingSystemCtl;
#endif // _NA_008012_20150130_RANKING_SYSTEM
};