Files
Sun1602/ProgramCommon/SCPlayer.cpp
T
2022-10-26 12:25:11 +08:00

115 lines
2.4 KiB
C++

#include "stdafx.h"
#include <Struct.h>
#include ".\SCPlayer.h"
#include <ItemInfoParser.h>
#include <CoolTimerFactory.h>
#if defined(_SERVER)
__EMPTY_FILE_TAG();
#else //if !defined(_SERVER)
// CLIENT
SCPlayer::SCPlayer() : m_pItemCoolTimeHash(NULL)
{
m_pCharInfo = new BASE_PLAYERINFO;
ITEM_COOLTIME_MAP* pCoolTimeMap = ItemInfoParser::Instance()->GetItemCoolTimeMap();
m_pItemCoolTimeHash = new PLAYER_ITEM_COOL_TIMER_HASH;
m_pItemCoolTimeHash->Initialize( (DWORD)pCoolTimeMap->size() );
}
SCPlayer::~SCPlayer()
{
SAFE_DELETE( m_pCharInfo );
SAFE_DELETE( m_pItemCoolTimeHash );
}
VOID SCPlayer::SetCharInfo( const BASE_PLAYERINFO* pCharInfo )
{
memcpy( m_pCharInfo, pCharInfo, sizeof(BASE_PLAYERINFO) );
//m_dwWeaponKind = eWEAPONTYPE_PUNCH;
OnSetCharInfo();
}
eCHAR_TYPE SCPlayer::GetCharType() const
{
return (eCHAR_TYPE)SCPlayer::GetCharInfo()->m_byClassCode;
}
LEVELTYPE SCPlayer::GetLevel() const
{
return SCPlayer::GetCharInfo()->m_LV;
}
VOID SCPlayer::SetItemCoolTime( BOOL bPoolUse, DWORD dwCoolTimeMagin )
{
// 쿨타임 타이머 해쉬 테이블 생성
ITEM_COOLTIME_MAP* pCoolTimeMap = ItemInfoParser::Instance()->GetItemCoolTimeMap();
// 스킬별로 타이머를 생성한 후 해쉬테이블에 추가한다.
ITEM_COOLTIME_ITER it;
for( it = pCoolTimeMap->begin(); it != pCoolTimeMap->end(); ++it )
{
ITEM_COOLTIME_INFO CoolTimeInfo = (ITEM_COOLTIME_INFO)it->second;
util::Timer * pTimer = NULL;
if( bPoolUse )
{
pTimer = CoolTimerFactory::Instance()->Alloc();
}
else
{
pTimer = new util::Timer;
}
pTimer->SetTimer( CoolTimeInfo.m_dwCoolTime - dwCoolTimeMagin );
pTimer->InitCoolTime();
m_pItemCoolTimeHash->Add( pTimer, CoolTimeInfo.m_wCoolTimeType );
}
}
void SCPlayer::FreeItemCoolTime(BOOL pool_used)
{
if (m_pItemCoolTimeHash)
{
CoolTimerFactory* timer_factory = CoolTimerFactory::Instance();
m_pItemCoolTimeHash->SetFirst();
while (util::Timer* timer = m_pItemCoolTimeHash->GetNext())
{
if (pool_used)
{
timer_factory->Free(timer);
}
else
{
SAFE_DELETE(timer);
}
}
m_pItemCoolTimeHash->RemoveAll();
}
}
VOID SCPlayer::InitializeItemCooltime()
{
if (m_pItemCoolTimeHash)
{
m_pItemCoolTimeHash->SetFirst();
while (util::Timer* timer = m_pItemCoolTimeHash->GetNext()) {
timer->InitCoolTime();
}
}
}
#endif //!defined(_SERVER)