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

153 lines
4.2 KiB
C++

#include "StdAfx.h"
#ifdef _NA_008543_20151027_ONE_DAYS_GUILD_MISSION
#include ".\OneDaysGuildMissionInfoParser.h"
OneDaysGuildMissionInfoParser::OneDaysGuildMissionInfoParser(void)
{
}
OneDaysGuildMissionInfoParser::~OneDaysGuildMissionInfoParser(void)
{
}
VOID OneDaysGuildMissionInfoParser::Init()
{
}
VOID OneDaysGuildMissionInfoParser::Init(char* pszPackFileName)
{
SetPackFileName(pszPackFileName);
}
void OneDaysGuildMissionInfoParser::Release()
{
Unload();
//_NA_008801_20160429_ADD_GUILDMISSION_TIMEINFO_SCRIPT
_UnloadGuildMissionTimeInfo();
}
BOOL OneDaysGuildMissionInfoParser::LoadScript(eSCRIPT_CODE scriptCode, BOOL bReload)
{
switch (scriptCode)
{
case SCRIPT_ONEDAYSBUILDMISSION:
return _Load(bReload);
//_NA_008801_20160429_ADD_GUILDMISSION_TIMEINFO_SCRIPT
case SCRIPT_GUILDMISSIONTIME_INFO:
return _LoadGuildMissionTimeInfo(bReload);
}
return FALSE;
}
BOOL OneDaysGuildMissionInfoParser::_Load(BOOL bReload)
{
if (bReload == TRUE)
{
OneDaysGuildMissionInfo_Hash().clear();
}
int nRowSize = GetRowSize();
for(int nRow = 0; nRow < nRowSize; ++nRow)
{
OneDaysGuildMissionInfo* info = new OneDaysGuildMissionInfo();
info->index = GetDataBYTE("Index", nRow);
info->map_code = GetDataDWORD("MapCode", nRow);
info->play_time = GetDataDWORD("Playtime", nRow);
info->start_wait_time = GetDataDWORD("StartWaitTime", nRow);
info->end_wait_time = GetDataDWORD("EndWaitTime", nRow);
GetDataWZID(nRow, info->start_trigger_id, "StartTriggerID");
info->base_reward_item_code = GetDataDWORD("BaseItemCode", nRow);
OneDaysGuildMissionInfo_Hash::_Pairib result = oneoaysguildmissionInfo_hash().insert(
OneDaysGuildMissionInfo_Hash::value_type(static_cast<DWORD>(info->map_code), info));
ASSERT(result.second == true);
}
return TRUE;
}
void OneDaysGuildMissionInfoParser::Unload()
{
OneDaysGuildMissionInfo_Hash::const_iterator it, end( OneDaysGuildMissionInfo_Hash_.end() );
for(it = OneDaysGuildMissionInfo_Hash_.begin() ; it != end ; ++it)
{
OneDaysGuildMissionInfo* info = (it->second);
SAFE_DELETE(info);
}
OneDaysGuildMissionInfo_Hash_.clear();
}
const OneDaysGuildMissionInfo* OneDaysGuildMissionInfoParser::FindData(const MAPCODE map_code) const
{
OneDaysGuildMissionInfo_Hash::const_iterator begin_iterator = OneDaysGuildMissionInfo_Hash_.begin(),
end_iterator = OneDaysGuildMissionInfo_Hash_.end();
for (; begin_iterator != end_iterator; ++begin_iterator)
{
const OneDaysGuildMissionInfo* find_info = begin_iterator->second;
if (find_info->map_code == map_code)
{
return find_info;
}
}
return NULL;
}
//_NA_008801_20160429_ADD_GUILDMISSION_TIMEINFO_SCRIPT
BOOL OneDaysGuildMissionInfoParser::_LoadGuildMissionTimeInfo( BOOL bReload )
{
if (bReload == TRUE)
{
guildmissiontimeinfo_hash_.clear();
}
int nRowSize = GetRowSize();
for(int nRow = 0; nRow < nRowSize; ++nRow)
{
GuildMissionTimeInfo* info = new GuildMissionTimeInfo();
info->index = GetDataBYTE("Index", nRow);
info->map_code = GetDataWORD("MapCode", nRow);
info->day_of_week = GetDataBYTE("DayOfWeek", nRow);
info->wait_time = GetDataDWORD("WaitingTime", nRow);
info->starting_time = GetDataDWORD("MissionStartingTime", nRow);
info->end_time = GetDataDWORD("MissionEndTime", nRow);
GuildMissionTimeInfoHash::_Pairib result =
guildmissiontimeinfo_hash_.insert( GuildMissionTimeInfoHash::value_type(info->map_code, info));
}
return TRUE;
}
VOID OneDaysGuildMissionInfoParser::_UnloadGuildMissionTimeInfo()
{
GuildMissionTimeInfoHash::const_iterator it, end( guildmissiontimeinfo_hash_.end() );
for(it = guildmissiontimeinfo_hash_.begin() ; it != end ; ++it)
{
GuildMissionTimeInfo* info = (it->second);
SAFE_DELETE(info);
}
guildmissiontimeinfo_hash_.clear();
}
const GuildMissionTimeInfo* OneDaysGuildMissionInfoParser::FindGuildMissionTimeInfo( MAPCODE map_code ) const
{
GuildMissionTimeInfoHash::const_iterator itr = guildmissiontimeinfo_hash_.find(map_code);
if (itr == guildmissiontimeinfo_hash_.end()) {
return NULL;
}
const GuildMissionTimeInfo* info = itr->second;
return info;
}
#endif //(_NA_008543_20151027_ONE_DAYS_GUILD_MISSION)