Files
2022-10-26 12:25:11 +08:00

191 lines
6.5 KiB
C++

#include "SunClientPrecompiledHeader.h"
#ifdef _NA_003027_20111013_HONOR_SYSTEM
#include "../ProgramCommon/HonorSystem/HonorSystemPacket.h"
#include "HonorSystem/HonorSystem.h"
#include "FameListParser.h"
#include "ReputeListParser.h"
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
#include "uiCharacterStatus/uiCharacterStatusTitleList.h"
#include "InterfaceManager.h"
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
namespace HonorSystem
{
HonorSystemData::HonorSystemData()
{
}
HonorSystemData::~HonorSystemData()
{
title_code_contaioner().clear();
fame_point_info_container().clear();
repute_point_info_container().clear();
}
void HonorSystemData::AddTitleCode(WORD add_title_code)
{
title_code_contaioner().insert(add_title_code);
}
void HonorSystemData::RemoveTitleCode(WORD remove_title_code)
{
title_code_contaioner().erase(remove_title_code);
}
void HonorSystemData::RecvTitleList(HonorTitleTable& title_table)
{
title_code_contaioner().clear();
DWORD title_count = title_table.count_;
WORD title_code;
for (DWORD table_index = 0; table_index < title_count; ++table_index)
{
title_code = title_table.title_[table_index].title_index_;
title_code_contaioner().insert(title_code);
}
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
// 실시간으로 갱신 될수도 있게되어서 리플리쉬 해줌
uiCharacterStatusTitleList* ui_title_list = GET_CAST_DIALOG(uiCharacterStatusTitleList, uiCharacterStatusTitleList::kDialog_ID);
if (ui_title_list != NULL)
{
ui_title_list->InitTitleListInfo();
}
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
}
bool HonorSystemData::IsHaveTitleCode(WORD remove_title_code)
{
TitleCodeContainer::iterator found_itr = title_code_contaioner().find(remove_title_code);
if (found_itr == title_code_contaioner().end())
{
return false;
}
return true;
}
void HonorSystemData::ClearTitleCodeList()
{
title_code_contaioner().clear();
}
void HonorSystemData::InitializeHonorPointTable()
{
// 명성
ClearFameReputePointTable();
FamePointInfo new_fame_point_info;
FameListParser::FameInfoMap& fame_info_container = FameListParser::Instance()->GetFameInfoContainer();
FameListParser::FameInfoMap::iterator fame_info_itr = fame_info_container.begin();
FameListParser::FameInfoMap::iterator fame_info_end_itr = fame_info_container.end();
for ( ; fame_info_itr != fame_info_end_itr; ++fame_info_itr)
{
FameListParser::FameInfo* fame_info = fame_info_itr->second;
if (fame_info == NULL)
{
continue;
}
new_fame_point_info.fame_code = fame_info->fame_code;
new_fame_point_info.fame_point_value = 0;
new_fame_point_info.fame_info = fame_info;
fame_point_info_container().insert(FamePointInfoContainer::value_type(fame_info->fame_code, new_fame_point_info));
}
ReputePointInfo new_repute_point_info;
ReputeListParser::ReputeInfoTable& repute_info_table = ReputeListParser::Instance()->GetReputeInfoTable();
ReputeListParser::ReputeInfoTable::iterator repute_info_itr = repute_info_table.begin();
ReputeListParser::ReputeInfoTable::iterator repute_info_end_itr = repute_info_table.end();
for ( ; repute_info_itr != repute_info_end_itr; ++repute_info_itr)
{
ReputeListParser::ReputeInfo* repute_info = (*repute_info_itr);
if (repute_info == NULL)
{
continue;
}
new_repute_point_info.repute_code = repute_info->repute_code;
new_repute_point_info.repute_point_value = 0;
new_repute_point_info.repute_info = repute_info;
repute_point_info_container().insert(ReputePointInfoContainer::value_type(repute_info->repute_code, new_repute_point_info));
}
}
void HonorSystemData::RecvFameReputePointTable(HonorPointTable& honor_point_table)
{
WORD honor_point_count = honor_point_table.count_;
for (int point_info_index = 0; point_info_index < honor_point_count; ++point_info_index)
{
HONOR_POINT_INFO& honor_point_info = honor_point_table.point_table_[point_info_index];
if (honor_point_info.type == HONOR_POINT_INFO::FAME)
{
ChangeFamePoint(honor_point_info.honor_point_code_, honor_point_info.honor_point_);
}
else if (honor_point_info.type == HONOR_POINT_INFO::REPUTE)
{
ChangeReputePoint(honor_point_info.honor_point_code_, honor_point_info.honor_point_);
}
}
}
void HonorSystemData::ChangeFamePoint(WORD fame_code, DWORD changed_fame_point)
{
FamePointInfoContainer::iterator found_itr = fame_point_info_container().find(fame_code);
if (found_itr == fame_point_info_container().end())
{
return;
}
FamePointInfo& fame_point_info = found_itr->second;
fame_point_info.fame_point_value = changed_fame_point;
}
void HonorSystemData::ChangeReputePoint(WORD repute_code, DWORD changed_repute_point)
{
ReputePointInfoContainer::iterator found_itr = repute_point_info_container().find(repute_code);
if (found_itr == repute_point_info_container().end())
{
return;
}
ReputePointInfo& repute_point_info = found_itr->second;
repute_point_info.repute_point_value = changed_repute_point;
}
void HonorSystemData::ClearFameReputePointTable()
{
fame_point_info_container().clear();
repute_point_info_container().clear();
}
HonorSystem::FamePointInfo* HonorSystemData::GetFamePointInfo(WORD fame_code)
{
FamePointInfoContainer::iterator found_itr = fame_point_info_container().find(fame_code);
if (found_itr == fame_point_info_container().end())
{
return NULL;
}
return &(found_itr->second);
}
HonorSystem::ReputePointInfo* HonorSystemData::GetReputePointInfo(WORD repute_code)
{
ReputePointInfoContainer::iterator found_itr = repute_point_info_container().find(repute_code);
if (found_itr == repute_point_info_container().end())
{
return NULL;
}
return &(found_itr->second);
}
};//namespace HonorSystem
#endif //_NA_003027_20111013_HONOR_SYSTEM