DragonNest/Server/DNGameServer/ItemRespawnLogic.cpp
2024-12-20 16:56:44 +08:00

58 lines
3 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.


#include "stdafx.h"
#include "ItemRespawnLogic.h"
#include "EventControlHeader.h"
#include "EtWorldEventArea.h"
#include "DNGameRoom.h"
void CItemRespawnLogic::Reset()
{
m_vItemRespawn.clear();
}
void CItemRespawnLogic::AddItemRespawnArea( CEtWorldEventArea* pArea )
{
PvPRespawnItemAreaStruct* pData = reinterpret_cast<PvPRespawnItemAreaStruct*>(pArea->GetData());
m_vItemRespawn.push_back( SItemRespawn(pData->nRespawnIntervalSec,pData->nItemDropTableID,pArea->GetOBB(),(pData->bIsStartSpawn ? true : false) ) );
}
void CItemRespawnLogic::Process( const float fDelta )
{
for( UINT i=0 ; i<m_vItemRespawn.size() ; ++i )
{
// 이전DropItem이 남아있는지 검사
if( m_vItemRespawn[i].hLastDropItem )
{
m_vItemRespawn[i].Reset();
continue;
}
// 시작시 스폰되는 아이템
if( m_vItemRespawn[i].bIsStartSpawn )
{
m_vItemRespawn[i].bIsStartSpawn = false;
m_vItemRespawn[i].fRespawnDelta = 0.f;
}
m_vItemRespawn[i].fRespawnDelta -= fDelta;
if( m_vItemRespawn[i].fRespawnDelta <= 0.f )
{
EtVector3 vPos = m_vItemRespawn[i].sOBB.Center;
m_vItemRespawn[i].hLastDropItem = m_pGameRoom->RequestItemDropTable( m_vItemRespawn[i].uiItemDropTableID, &vPos );
}
}
}
//*******************************************************************
// [PvP] ItemRespawnLogic
//*******************************************************************
void CPvPItemRespawnLogic::FinishRound()
{
for( UINT i=0 ; i<m_vItemRespawn.size() ; ++i )
{
m_vItemRespawn[i].FinishRound();
}
}