Files
Sun1602/Server/GameServer/SkillSystem/SkillCoolTimeAccessor.cpp
T
2022-10-26 12:25:11 +08:00

55 lines
1.5 KiB
C++

#include "stdafx.h"
#include "SkillCoolTimeAccessor.h"
#ifdef _NA_0_20110308_SKILL_COOL_TIME_STORAGE
SkillCoolTimeAccessor::SkillCoolTimeAccessor()
{
}
SkillCoolTimeAccessor::~SkillCoolTimeAccessor()
{
}
void SkillCoolTimeAccessor::ApplySkillCoolTime(Player* player, const SkillCoolTime* skill_cool_time)
{
for (uint i = 0 ; i < skill_cool_time->count ; ++i)
{
const SkillCoolTime::CoolTimeInfo& info = skill_cool_time->info[i];
util::Timer* timer = player->GetSkillCoolTimer(info.skill_code);
if (timer)
{
timer->Reset();
timer->InitCoolTime(GetTickCount() + info.remain_second);
}
}
}
void SkillCoolTimeAccessor::GetSkillCoolTime(Player* player, SkillCoolTime* OUT skill_cool_time)
{
const COOL_TIME_TABLE& cool_time_table = player->get_cool_time_table();
if (cool_time_table.empty())
{
skill_cool_time->count = 0;
return;
}
uint idx = 0;
COOL_TIME_TABLE::const_iterator iter = cool_time_table.begin();
for ( ; iter != cool_time_table.end() ; ++iter)
{
util::Timer* timer = iter->second;
uint remain_second = timer->GetRemainedTime();
if (remain_second)
{
SkillCoolTime::CoolTimeInfo& info = skill_cool_time->info[idx];
info.skill_code = iter->first;
info.remain_second = remain_second;
++idx;
}
}
skill_cool_time->count = idx;
}
#endif // _NA_0_20110308_SKILL_COOL_TIME_STORAGE