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

106 lines
3.8 KiB
C++

#include "StdAfx.h"
#ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
#include "GuildFacilityInfoParser.h"
BOOL GuildFacilityInfoParser::LoadScript(eSCRIPT_CODE script_code, BOOL is_reload)
{
__UNUSED((script_code, is_reload));
int row_size = GetRowSize();
for (int script_row = 0; script_row < row_size; ++script_row)
{
FACILITY_INFO guild_facility_info;
guild_facility_info.facility_name = std::string(GetDataString("facility_name", script_row));
GetData(script_row, guild_facility_info.facility_index, "facility_index");
GetData(script_row, guild_facility_info.facility_code, "facility_code");
GetData(script_row, guild_facility_info.facility_level, "facility_level");
GetData(script_row, guild_facility_info.upgrade_type, "upgrade_type");
GetData(script_row, guild_facility_info.upgrade_guild_point, "upgrade_guild_point");
GetData(script_row, guild_facility_info.upgrade_item_code, "upgrade_item_code");
GetData(script_row, guild_facility_info.upgrade_item_num, "upgrade_item_num");
//菩矫宏 可记
GetData(script_row, guild_facility_info.passive_option.option_type, "passive_option_type");
GetData(script_row, guild_facility_info.passive_option.option_value_type, "passive_option_value_type");
GetData(script_row, guild_facility_info.passive_option.option_value, "passive_option_value");
//咀萍宏 可记
GetData(script_row, guild_facility_info.active_option.active_item_code, "active_item_code");
GetData(script_row, guild_facility_info.active_option.active_item_count, "active_item_count");
GetData(script_row, guild_facility_info.active_option.active_skill_code, "active_skill_code");
if (IsValidFacilityInfo(&guild_facility_info) == false)
{
continue;
}
FACILITYTAG facility_tag = std::make_pair(guild_facility_info.facility_code, guild_facility_info.facility_level);
facility_map.insert(std::make_pair(facility_tag, guild_facility_info));
}
return TRUE;
}
const FACILITY_INFO* GuildFacilityInfoParser::GetGuildFacilityInfo(FCODE facility_code, FLEVEL facility_level)
{
FACILITY_MAP::iterator find_iter = facility_map.find(std::make_pair(facility_code, facility_level));
if (find_iter == facility_map.end())
{
return NULL;
}
return &(find_iter->second);
}
const bool GuildFacilityInfoParser::IsValidFacilityInfo(FACILITY_INFO* info)
{
if (info == NULL)
{
SUNLOG(eCRITICAL_LOG, _T("[%s]设施信息不正确."), __FUNCTION__);
ASSERT(false);
return false;
}
if (info->facility_code <= 0)
{
SUNLOG(eCRITICAL_LOG, _T("[%s]设施代码不正确.(%d)"), __FUNCTION__, info->facility_code);
ASSERT(false);
return false;
}
const FACILITY_INFO* prev_info = GetGuildFacilityInfo(info->facility_code, info->facility_level);
if (prev_info)
{
SUNLOG(eCRITICAL_LOG, _T("[%s]存在相同设施. (%d, %d)"), __FUNCTION__, info->facility_code, info->facility_level);
ASSERT(false);
return false;
}
return true;
}
const FACILITY_OPTION_PASSIVE* GuildFacilityInfoParser::GetGuildFacilityPassive( FCODE facility_code, FLEVEL facility_level )
{
const FACILITY_INFO* facility_info = GetGuildFacilityInfo(facility_code, facility_level);
if (facility_info == NULL)
{
return NULL;
}
return &(facility_info->passive_option);
}
const FACILITY_OPTION_ACTIVE* GuildFacilityInfoParser::GetGuildFacilityActive( FCODE facility_code, FLEVEL facility_level )
{
const FACILITY_INFO* facility_info = GetGuildFacilityInfo(facility_code, facility_level);
if (facility_info == NULL)
{
return NULL;
}
return &(facility_info->active_option);
}
#endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION