DragonNest/Server/DNGameServer/ItemRespawnLogic.h
2024-12-19 09:48:26 +08:00

67 lines
1.4 KiB
C++

#pragma once
#include "DnDropItem.h"
class CEtWorldEventArea;
class CItemRespawnLogic
{
public:
void AddItemRespawnArea( CEtWorldEventArea* pArea );
void Process( const float fDelta );
void Reset();
protected:
// CItemRespawnLogic Á÷Á¢ »ý¼º ±ÝÁö
CItemRespawnLogic( CDNGameRoom* pGameRoom):m_pGameRoom(pGameRoom)
{
}
// ItemRespawn
typedef struct tagItemRespawn
{
float fOrgRespawnDelta;
float fRespawnDelta;
UINT uiItemDropTableID;
SOBB sOBB;
DnDropItemHandle hLastDropItem;
bool bIsStartSpawn;
bool bIsOrgStartSpawn;
//
tagItemRespawn( UINT uiSec, UINT uiTableID, SOBB* _pOBB, bool _bIsStartSpawn ):fOrgRespawnDelta(static_cast<float>(uiSec)),fRespawnDelta(static_cast<float>(uiSec)),uiItemDropTableID(uiTableID),sOBB(*_pOBB)
,bIsOrgStartSpawn(_bIsStartSpawn),bIsStartSpawn(_bIsStartSpawn),hLastDropItem(CDnDropItem::Identity()){}
void Reset()
{
fRespawnDelta = fOrgRespawnDelta;
}
void FinishRound()
{
Reset();
bIsStartSpawn = bIsOrgStartSpawn;
}
}SItemRespawn;
CDNGameRoom* m_pGameRoom;
DNVector(SItemRespawn) m_vItemRespawn;
};
class CPvPItemRespawnLogic:public CItemRespawnLogic,public TBoostMemoryPool<CPvPItemRespawnLogic>
{
public:
CPvPItemRespawnLogic( CDNGameRoom* pGameRoom ):CItemRespawnLogic(pGameRoom)
{
}
void FinishRound();
};
class CDLItemRespawnLogic:public CItemRespawnLogic
{
public:
CDLItemRespawnLogic( CDNGameRoom* pGameRoom ):CItemRespawnLogic(pGameRoom)
{
}
};