Files
Sun1602/Client/GameClient/ChaosSystem/GuildMissionTreeParser.cpp
T
2022-10-26 12:25:11 +08:00

99 lines
2.7 KiB
C++

#include "SunClientPrecompiledHeader.h"
#ifdef _NA_008334_20150608_SONNENSCHEIN
#include "GuildMissionTreeParser.h"
BOOL GuildMissionTreeParser::_Load( BOOL bReload )
{
if (bReload == TRUE) {
GetGuildMissionInfoHash().clear();
}
int row_size = GetRowSize();
for (int row = 0; row < row_size; ++row)
{
GuildMissionInfo* mission_info = new GuildMissionInfo();
mission_info->large_group = GetDataBYTE("LGroup", row);
mission_info->sub_group = GetDataBYTE("SGroup", row);
mission_info->large_group_string = GetDataDWORD("LGroupStringCode", row);
mission_info->sub_group_string = GetDataDWORD("SGroupStringCode", row);
mission_info->mission_string_code = GetDataDWORD("MissionStringCode", row);
mission_info->map_code = GetDataWORD("MapCode", row);
sscanf(GetDataString("EnableColor", row), "%x", &(mission_info->font_color[0]));
sscanf(GetDataString("DisableColor", row), "%x", &(mission_info->font_color[1]));
sscanf(GetDataString("OverColor", row), "%x", &(mission_info->font_color[2]));
sscanf(GetDataString("SelectColor", row), "%x", &(mission_info->font_color[3]));
GetGuildMissionInfoHash().insert(GuildMissionInfoHash::value_type(mission_info->map_code, mission_info));
}
return TRUE;
}
VOID GuildMissionTreeParser::Init( char* file_name )
{
SetPackFileName(file_name);
}
VOID GuildMissionTreeParser::Release()
{
_Unload();
}
BOOL GuildMissionTreeParser::LoadScript( eSCRIPT_CODE script_code, BOOL is_reload )
{
switch(script_code)
{
case SCRIPT_GUILDMISSIONTREE:
return _Load(is_reload);
default:
break;
}
return FALSE;
}
const GuildMissionInfo* GuildMissionTreeParser::FindData( const MAPCODE& map_code ) const
{
GuildMissionInfoHash::const_iterator itr = info_hash_.find(map_code);
if (itr != info_hash_.end()) {
return itr->second;
}
return NULL;
}
VOID GuildMissionTreeParser::_Unload()
{
GuildMissionInfoHash::iterator itr = info_hash_.begin();
for (itr; itr != info_hash_.end(); ++itr)
{
GuildMissionInfo* info = itr->second;
SAFE_DELETE(info);
}
info_hash_.clear();
}
// ±×·ì¹øÈ£·Î ã±â
const GuildMissionInfo* GuildMissionTreeParser::FindData(const BYTE LGroup, const BYTE SGroup) const
{
GuildMissionInfoHash::const_iterator itr = info_hash_.begin();
for(itr; itr != info_hash_.end(); ++itr)
{
GuildMissionInfo* info = itr->second;
if (info->large_group == LGroup && info->sub_group == SGroup)
{
return info;
}
}
return NULL;
}
#endif //_NA_008334_20150608_SONNENSCHEIN