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

67 lines
2.0 KiB
C++

#pragma once
#include "gameroom.h"
#include "MissionRecordManager.h"
#include "RankingSystemCtl.h"
#include <TriggerManagerEx.h>
class GameMissionRoom : public GameRoom
{
__DECL_CUSTOMPOOL_PTR(GameMissionRoom)
public:
GameMissionRoom(void);
virtual ~GameMissionRoom(void);
virtual void OnKillMonster( Monster* pMonster );
virtual void OnCreate();
virtual void OnDestroy();
virtual eZONETYPE GetZoneType() { return eZONETYPE_MISSION; }
virtual VOID Ready( Player* pPlayer, MAPCODE FieldCode, WzID AreaID, WzVector* pwvStartPos );
virtual BOOL Join( Player* pPlayer, MAPCODE FieldCode, WzID AreaID, WzVector* pwvStartPos );
virtual VOID Leave( Player* pPlayer );
virtual BOOL MoveField( Player* pPlayer, MAPCODE FieldCode, WzID AreaID, WzVector* pwvStartPos );
virtual VOID LeaveForWarp( Player* pPlayer );
virtual VOID SetZone( Object* pObject, MAPCODE FieldCode, WzID AreaID, WzVector* pwvStartPos );
virtual eUSER_RELATION_TYPE IsFriendPVP( Player *pPlayer,Player *pTarget ) { __UNUSED((pPlayer, pTarget)); return USER_RELATION_FRIEND; }
#ifdef _NA_007369_20140625_ACTION_OPERATE_SWITCH_EX
TriggerManagerEx::SWITCH_CONTROL SWITCH;
inline BYTE GetSwitchValue(BYTE index) { return SWITCH.Get(index); }
inline void SetSwitchValue(BYTE index, BYTE value) { SWITCH.Set(index, value); }
#endif //_NA_007369_20140625_ACTION_OPERATE_SWITCH_EX
};
class Trigger;
template< class PACKET>
class SendActionDoneTriggers
{
PACKET m_msg;
public:
SendActionDoneTriggers(){ m_msg.m_byCount = 0; }
~SendActionDoneTriggers(){}
BOOL SendInfo( Player* pPlayer )
{
if( m_msg.m_byCount != 0 )
return pPlayer->SendPacket( &m_msg, m_msg.GetSize() );
return TRUE;
}
void operator()( Trigger* pTrigger )
{
if( pTrigger->GetTriggerState() == Trigger::TERMINATING_STATE )
{
if( pTrigger->IsAlwaysTrigger() ) return;
ASSERT( m_msg.m_byCount < PACKET::MAX_DONE_TRIGGER_ID_NUM );
if( m_msg.m_byCount >= PACKET::MAX_DONE_TRIGGER_ID_NUM ) return;
m_msg.m_dwDoneTriggerID[m_msg.m_byCount++] = pTrigger->TriggerID();
}
}
};