Files
Sun1602/ProgramCommon/DominationInfoParser.cpp
T
git 9cb257e7ae Add GameClients drops and keep current 1602 source work.
CN1602 is the local client. KR is the official tree with unpacked Data, System, and Sound. Packed .wpk files stay off git.
2026-08-30 23:24:31 +03:00

708 lines
24 KiB
C++

#include "StdAfx.h"
#include "misc.h"
#include "DominationInfoParser.h"
#include <SolarDateTime.h>
#include <ItemOptionHeader.h>
DominationInfoParser::DominationInfoParser(void)
#ifdef _SERVER
: is_script_mode_(true)
, is_loaded_(false)
#endif
{
}
DominationInfoParser::~DominationInfoParser(void)
{
}
BOOL DominationInfoParser::LoadScript(eSCRIPT_CODE script_code, BOOL is_reload)
{
switch( script_code )
{
case SCRIPT_DOMINATIONINFO:
return (LoadDominationInfo((is_reload == TRUE)) ? TRUE : FALSE);
case SCRIPT_DOMINATION_EVENT_INFO:
return (LoadEventInfo((is_reload == TRUE)) ? TRUE : FALSE);
}
return FALSE;
}
bool DominationInfoParser::LoadDominationInfo(const bool /*is_reload*/)
{
const int row_size = GetRowSize();
for (int row = 0; row < row_size; ++row)
{
sDOMINATION_INFO domination_info;
GetData(row, domination_info.m_DominationMapCode, "MapCode");
GetData(row, domination_info.m_LinkMapCode, "FieldCode");
GetData(row, domination_info.m_SubMapCode, "SubFieldCode");
GetData(row, domination_info.m_Index, "Index");
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
GetData(row, domination_info.m_DominationType, "DominationType");
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
GetData(row, domination_info.m_MaxUser, "MaxUser");
GetData64(row, domination_info.m_BaseBattingMoney, "BaseBattingMoney");
GetData(row, domination_info.m_BattingCharge, "BattingChargeRate");
// added by _NA_0_20100705_DOMINATION_EVENT = {
GetData(row, domination_info.m_byUseFixEvent, "UseFixEvent");
GetData(row, domination_info.m_wEventDayOfWeek, "EventDayOfWeek");
GetData(row, domination_info.m_dwEventTime, "EventTime");
GetDataWZID(row, domination_info.m_dwEventTriggerID, "EventTriggerID");
// }
GetDataWZID(row, domination_info.m_StartTriggerID, "StartTriggerID");
GetDataWZID(row, domination_info.m_EndTriggerID, "EndTriggerID");
for (int i = 0; i < sDOMINATION_INFO::GATEID_MAX; ++i)
{
GetData(row, domination_info.m_GateID[i], "GateID%d", i+1);
}
GetData(row, domination_info.m_GateHPTunning, "GateHPtunning");
GetData(row, domination_info.m_RespawnDelay, "RespawnDelay");
for (int i = 0; i < sDOMINATION_INFO::LIMIT_MAX; ++i)
{
GetData(row, domination_info.m_LimitSkillGroup[i], "LimitSkillGroup%d", i+1);
GetData(row, domination_info.m_LimitItemGroup[i], "LimitItemGroup%d", i+1);
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
}
for (int i = 0; i < sDOMINATION_INFO::REWARD_OPTION_MAX; ++i)
{
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
AttrOptionInfo& option_info = domination_info.m_RewardOption[i];
GetData(row, option_info.m_wOptionKind, "RewardOptionKind%d", i+1);
GetData(row, option_info.m_byOptionType, "RewardOptionType%d", i+1);
GetData(row, option_info.m_iOptionValue, "RewardOptionValue%d", i+1);
}
GetData(row, domination_info.m_RewardDropHeimRate, "RewardDropHeimRate");
GetData(row, domination_info.m_BattingItemCode, "BattingItemCode");
#ifdef _NA_20120511_WORK_TO_DOMINATION_ADDITIONAL_REQUEST
GetData(row, domination_info.m_BattingGuildLevelLimit, "BattingGuildLevelLimit");
#endif
if (IsValidDominationInfo(domination_info, row+1) == false)
{
ASSERT(false);
continue;
}
script_infos_[domination_info.m_DominationMapCode] = domination_info;
typedef std::pair<MAPCODE, MAPCODE> MapCodePair;
if (domination_info.m_DominationMapCode != 0)
{
map_codes_.insert(
MapCodePair(domination_info.m_DominationMapCode, domination_info.m_DominationMapCode));
}
if (domination_info.m_LinkMapCode != 0)
{
map_codes_.insert(
MapCodePair(domination_info.m_LinkMapCode, domination_info.m_DominationMapCode));
}
if (domination_info.m_SubMapCode != 0)
{
map_codes_.insert(
MapCodePair(domination_info.m_SubMapCode, domination_info.m_DominationMapCode));
}
}
is_loaded_ = true;
return true;
}
bool DominationInfoParser::LoadEventInfo(const bool /*is_reload*/)
{
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
//기존의 이벤트는 dayOfweek(요일)을 인덱스로 구분하여 저장한다.
//몬트샤인과 관련된 수정 뿐만아니라 이벤트와 필드를 매칭시켜 다양한 시간의 점령전을 위해
//이벤트 자체에 Index를 두고 이 Index로 구분하여 event_infos_에 저장한다.
const char* field_name[DOMINATION_EVENT_MAX] = {
"AuctionStart",
"AuctionEnd",
"SelectAttackGuild",
"SelectAttackGuildEnd",
"SystemResetTime",
"WaitingTime",
"BattleStartingTime",
"BattleEndTime",
"AuctionStart2"
};
const int row_size = GetRowSize();
for (int row = 0; row < row_size; ++row)
{
sDOMINATION_EVENT_INFO event_info;
GetData(row, event_info.m_wEventIndex, "Index");
GetData(row, event_info.m_wMapCode, "MapCode");
GetData(row, event_info.m_wDayOfWeek, "DayOfWeek");
//점령전에서 경매 시스템을 사용하지 않으므로 스크립트에서 삭제하고 아래와 같이 상수로 처리한다.
event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START] = DOMINATION_EVENT_AUCTION_START_TIME;
event_info.m_dwTime[DOMINATION_EVENT_AUCTION_END] = DOMINATION_EVENT_AUCTION_END_TIME;
event_info.m_dwTime[DOMINATION_EVENT_SELECT_ATTACKGUILD] = DOMINATION_EVENT_SELECT_ATTACKGUILD_TIME;
event_info.m_dwTime[DOMINATION_EVENT_SELECT_ATTACKGUILD_END] = DOMINATION_EVENT_SELECT_ATTACKGUILD_END_TIME;
GetData(row, event_info.m_dwTime[DOMINATION_EVENT_SYSTEM_RESET], "SystemResetTime");
GetData(row, event_info.m_dwTime[DOMINATION_EVENT_WAIT], "WaitingTime");
GetData(row, event_info.m_dwTime[DOMINATION_EVENT_START], "BattleStartingTime");
GetData(row, event_info.m_dwTime[DOMINATION_EVENT_END], "BattleEndTime");
event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START2] = DOMINATION_EVENT_AUCTION_START2_TIME;
if (IsValidEventInfo(event_info))
{
event_infos_.insert(std::make_pair(event_info.m_wEventIndex, event_info));
}
}
return true;
#else
const char* field_name[DOMINATION_EVENT_MAX] = {
"AuctionStart",
"AuctionEnd",
"SelectAttackGuild",
"SelectAttackGuildEnd",
"SystemResetTime",
"WaitingTime",
"BattleStartingTime",
"BattleEndTime",
"AuctionStart2"
};
const int row_size = GetRowSize();
for (int row = 0; row < row_size; ++row)
{
sDOMINATION_EVENT_INFO event_info;
GetData(row, event_info.m_wDayOfWeek, "DayOfWeek");
for (int i = 0; i < DOMINATION_EVENT_MAX; ++i)
{
GetData(row, event_info.m_dwTime[i], field_name[i]);
}
if (IsValidEventInfo(event_info))
{
event_infos_.insert(std::make_pair(event_info.m_wDayOfWeek, event_info));
}
}
return true;
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
}
bool DominationInfoParser::IsValidDominationInfo(
const sDOMINATION_INFO& domination_info, const int row) const
{
if (row != domination_info.m_Index)
{
SUNLOG(
eCRITICAL_LOG,
_T("|%s|%d|零돨乞多꼇攣횅.|契뵀= %d, Index = %d|"),
__FUNCTION__,
__LINE__,
row,
domination_info.m_Index
);
ASSERT(false);
return false;
}
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
for (int i = 0; i < sDOMINATION_INFO::REWARD_OPTION_MAX; ++i)
#else
for (int i = 0; i < sDOMINATION_INFO::LIMIT_MAX; ++i)
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
{
const AttrOptionInfo& option_info = domination_info.m_RewardOption[i];
const WORD option_index = option_info.m_wOptionKind;
const BYTE option_type = option_info.m_byOptionType;
const int option_value = option_info.m_iOptionValue;
if (CheckOptionValidity(option_index, option_type, option_value) == false)
{
SUNLOG(
eCRITICAL_LOG,
_T("|%s|%d|쉽쟨buff朞淃꼇攣횅.|契뵀= %d, Index = %d, OptionIndex = %d, OptionType = %d, OptionValue = %d|"),
__FUNCTION__,
__LINE__,
row,
domination_info.m_Index,
option_index,
option_type,
option_value
);
ASSERT(false);
return false;
}
}
return true;
}
bool DominationInfoParser::IsValidEventInfo(const sDOMINATION_EVENT_INFO& eventInfo) const
{
if (eventInfo.m_wDayOfWeek > 6)
{
SUNLOG(
eCRITICAL_LOG,
_T("|%s|%d|槿퍅섯꼇攣횅.|DayOfWeek = %d|"),
__FUNCTION__,
__LINE__,
eventInfo.m_wDayOfWeek
);
ASSERT(false);
return false;
}
const DWORD* times = eventInfo.m_dwTime;
for (int i = DOMINATION_EVENT_AUCTION_START; i < DOMINATION_EVENT_AUCTION_START2; ++i, ++times)
{
const DWORD start_time = *times;
const DWORD end_time = *(times+1);
if (((start_time + end_time) != 0) && start_time >= end_time)
{
SUNLOG(
eCRITICAL_LOG,
_T("|%s|%d|역迦珂쇌댕黨써監珂쇌.|DayOfWeek = %d, StartTime = %d, EndTime = %d|"),
__FUNCTION__,
__LINE__,
eventInfo.m_wDayOfWeek,
start_time,
end_time
);
ASSERT(false);
return false;
}
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
if (GetCurEventState(eventInfo.m_wDayOfWeek, start_time,
eventInfo.m_wMapCode) != DOMINATION_EVENT_MAX)
#else
if (GetCurEventState(eventInfo.m_wDayOfWeek, start_time) != DOMINATION_EVENT_MAX)
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
{
SUNLOG(
eCRITICAL_LOG,
_T("|%s|%d|珂쇌綠쒔닸瞳.|DayOfWeek = %d, StartTime = %d|"),
__FUNCTION__,
__LINE__,
eventInfo.m_wDayOfWeek,
start_time
);
ASSERT(false);
return false;
}
}
return true;
}
const sDOMINATION_INFO* DominationInfoParser::GetDominationInfo(const MAPCODE field_code) const
{
const MAPCODE map_code = GetDominationFieldCode(field_code);
DOMINATION_SCRIPT_INFO_MAP::const_iterator it = script_infos_.find(map_code);
if (it != script_infos_.end())
{
return &(it->second);
}
return NULL;
}
MAPCODE DominationInfoParser::GetDominationFieldCode(const MAPCODE field_code) const
{
MapCodes::const_iterator it = map_codes_.find(field_code);
if (it != map_codes_.end())
{
return it->second;
}
return 0;
}
MAPCODE DominationInfoParser::GetDominationLinkMapCode(const MAPCODE map_code) const
{
DOMINATION_SCRIPT_INFO_MAP::const_iterator it = script_infos_.find(map_code);
if (it != script_infos_.end())
{
const sDOMINATION_INFO& domination_info = it->second;
return domination_info.m_LinkMapCode;
}
return 0;
}
MONEY DominationInfoParser::GetAreaLimitMoney(const MAPCODE map_code) const
{
DOMINATION_SCRIPT_INFO_MAP::const_iterator it = script_infos_.find(map_code);
if (it == script_infos_.end())
{
return 0;
}
const sDOMINATION_INFO& domination_info = it->second;
return domination_info.m_BaseBattingMoney;
}
const sDOMINATION_EVENT_INFO* DominationInfoParser::GetEventInfo(
const WORD day_of_week, const DWORD time) const
{
std::pair< EventInfos::const_iterator, EventInfos::const_iterator > range =
event_infos_.equal_range(day_of_week);
#ifdef _SERVER
if (is_script_mode_ == false)
{
range = gm_event_infos_.equal_range(day_of_week);
}
#endif
for(EventInfos::const_iterator it = range.first; it != range.second; ++it)
{
const sDOMINATION_EVENT_INFO& event_info = it->second;
const DWORD start_time = event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START];
const DWORD end_time = event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START2];
const bool is_include = Between(time, start_time, end_time);
if (is_include)
{
return &event_info;
}
}
return NULL;
}
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
const sDOMINATION_EVENT_INFO* DominationInfoParser::GetGMEventInfo(const WORD day_of_week,
const DWORD time,
const MAPCODE map_code) const
{
std::pair< EventInfos::const_iterator, EventInfos::const_iterator > range;
#ifdef _SERVER
if (is_script_mode_ == false)
{
range = gm_event_infos_.equal_range(day_of_week);
}
else
{
return NULL;
}
#endif
for(EventInfos::const_iterator it = range.first; it != range.second; ++it)
{
const sDOMINATION_EVENT_INFO& event_info = it->second;
if(event_info.m_wMapCode != 0 && event_info.m_wMapCode != map_code)
{
continue;
}
const DWORD start_time = event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START];
const DWORD end_time = event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START2];
const bool is_include = Between(time, start_time, end_time);
if (is_include)
{
return &event_info;
}
}
return NULL;
}
//점령전 이벤트 정보를 해당 필드에서 독립적으로 가지고 있기 위해 아래와 같은 함수를 추가하였다.
STLX_MULTIMAP<WORD, sDOMINATION_EVENT_INFO> DominationInfoParser::GetEventInfosFromMapCode(MAPCODE map_code)
{
EventInfos::const_iterator event_infos_it = event_infos_.begin();
EventInfos::const_iterator event_infos_end = event_infos_.end();
EventInfos event_infos;
//등록되어진 이벤트를 순회한다.
for ( ;event_infos_it != event_infos_end; ++event_infos_it)
{
const sDOMINATION_EVENT_INFO& event_info = event_infos_it->second;
//해당 점령지의 맵코드와 이벤트의 맵 코드를 체크한다
if (event_info.m_wMapCode != map_code)
{
continue;
}
event_infos.insert(std::make_pair(event_info.m_wEventIndex, event_info));
}
return event_infos;
}
eDOMINATION_EVENT_STATE DominationInfoParser::GetCurEventState(
const WORD day_of_week, const DWORD time, const DWORD map_code) const
{
EventInfos::const_iterator event_infos_it = event_infos_.begin();
EventInfos::const_iterator event_infos_end = event_infos_.end();
//등록되어진 이벤트를 순회한다.
for ( ;event_infos_it != event_infos_end; ++event_infos_it)
{
const sDOMINATION_EVENT_INFO& event_info = event_infos_it->second;
//오늘과 같은 요일인지 체크한다.
if (event_info.m_wDayOfWeek != day_of_week)
{
continue;
}
//해당 점령지의 코드와 이벤트의 점령전 맵 코드를 체크한다
if (event_info.m_wMapCode != map_code)
{
continue;
}
//현재 시간이 이벤트의 시간에 포함되는지 확인한다.
const DWORD start_time = event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START];
const DWORD end_time = event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START2];
const bool is_include = Between(time, start_time, end_time);
if (is_include == false)
{
continue;
}
//이벤트의 시간에 포함된다면 현재 시간에 해당하는 이벤트 상태를 리턴한다
const DWORD* times = event_info.m_dwTime;
for (int cur_event = DOMINATION_EVENT_AUCTION_START;
cur_event < DOMINATION_EVENT_AUCTION_START2; ++cur_event, ++times)
{
const DWORD start_time = *times;
const DWORD end_time = *(times+1);
const bool is_include_current = Between(time, start_time, end_time);
if (is_include_current == false)
{
continue;
}
return (eDOMINATION_EVENT_STATE)cur_event;
}
}
return DOMINATION_EVENT_MAX;
}
#else
eDOMINATION_EVENT_STATE DominationInfoParser::GetCurEventState(
const WORD day_of_week, const DWORD time) const
{
const sDOMINATION_EVENT_INFO* const event_info = GetEventInfo(day_of_week,time);
if (event_info != NULL)
{
const DWORD* times = event_info->m_dwTime;
for (int cur_event = DOMINATION_EVENT_AUCTION_START;
cur_event < DOMINATION_EVENT_AUCTION_START2; ++cur_event, ++times)
{
const DWORD start_time = *times;
const DWORD end_time = *(times+1);
const bool is_include = Between(time, start_time, end_time);
if (is_include)
{
return (eDOMINATION_EVENT_STATE)cur_event;
}
}
}
return DOMINATION_EVENT_MAX;
}
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
//_NA_0_20100705_DOMINATION_EVENT
DWORD DominationInfoParser::GetRandomAuctionTime(const WORD day_of_week) const
{
const size_t event_size = event_infos_.count(day_of_week);
if (event_size <= 0)
{
return 0;
}
EventInfos::const_iterator it = event_infos_.lower_bound(day_of_week);
int it_index = random(0, event_size-1);
while (it_index-- != 0)
{
++it;
}
const sDOMINATION_EVENT_INFO& event_info = it->second;
typedef std::pair<DWORD, DWORD> AuctionTime;
std::vector< AuctionTime > auction_times;
const DWORD start_time1 =
util::HHMMSSToSecond(event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START]);
const DWORD end_time1 =
util::HHMMSSToSecond(event_info.m_dwTime[DOMINATION_EVENT_AUCTION_END]);
if ((end_time1 - start_time1) >= 60)
{
auction_times.push_back(AuctionTime(start_time1, end_time1));
}
const DWORD start_time2 =
util::HHMMSSToSecond(event_info.m_dwTime[DOMINATION_EVENT_END]);
const DWORD end_time2 =
util::HHMMSSToSecond(event_info.m_dwTime[DOMINATION_EVENT_AUCTION_START2]);
if ((end_time2 - start_time2) >= 60)
{
auction_times.push_back(AuctionTime(start_time2, end_time2));
}
if (auction_times.size() == 0)
{
return 0;
}
const int sel_index = random(1, auction_times.size())-1;
const AuctionTime& sel_auction_time = auction_times[sel_index];
return util::SecondToHHMMSS(random(sel_auction_time.first, sel_auction_time.second));
}
// 교전 전일경우 교전시간
// 교전 중일경우 남아 있는 교전 시간
// 교전 끝일경우 0
DWORD DominationInfoParser::GetWarTime(const WORD day_of_week, const DWORD time) const
{
const sDOMINATION_EVENT_INFO* const event_info = GetEventInfo(day_of_week, time);
if (event_info != NULL)
{
const DWORD start_time = event_info->m_dwTime[DOMINATION_EVENT_START];
const DWORD end_time = event_info->m_dwTime[DOMINATION_EVENT_END];
return util::CarcHHMMSS(end_time, max(start_time, time), false);
}
return 0;
}
// 교전 전일경우 교전 까지 남은 시간
// 교전 중일경우 0
// 교전 끝일경우 0
DWORD DominationInfoParser::GetRemindEventTime(
const WORD day_of_week, const DWORD time, const eDOMINATION_EVENT_STATE event_state) const
{
const sDOMINATION_EVENT_INFO* const event_info = GetEventInfo(day_of_week, time);
if (event_info != NULL)
{
const DWORD start_time = event_info->m_dwTime[event_state];
return util::CarcHHMMSS(start_time, time, false);
}
return 0;
}
#ifdef _SERVER
//서버전용(GM)
bool DominationInfoParser::GMInsertEventInfo(const sDOMINATION_EVENT_INFO& event_info)
{
is_script_mode_ = false;
gm_event_infos_.clear();
if (IsValidEventInfo(event_info))
{
gm_event_infos_.insert(std::make_pair(event_info.m_wDayOfWeek, event_info));
return true;
}
return false;
}
void DominationInfoParser::GMClearEventInfo()
{
is_script_mode_ = true;
gm_event_infos_.clear();
}
#endif //_SERVER
#if defined (_NA_20100420_CHANGE_SYSTEM_MEMO_LOGIC) || \
defined (_NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION)
WORD DominationInfoParser::GetBattingItemCodeByMapCode(const MAPCODE field_code) const
{
const MAPCODE map_code = GetDominationFieldCode(field_code);
DOMINATION_SCRIPT_INFO_MAP::const_iterator it = script_infos_.find(map_code);
if (it != script_infos_.end())
{
return (it->second.m_BattingItemCode);
}
return 0;
}
#endif
DominationInfoParser::SelectedRewardOptions DominationInfoParser::GetRewardOption(
const DominationInfoParser::TakenMaps& taken_maps) const
{
SelectedRewardOptions sel_options;
for (TakenMaps::const_iterator map_it = taken_maps.begin(); map_it < taken_maps.end(); ++map_it)
{
const MAPCODE taken_map_code = *map_it;
const sDOMINATION_INFO* const domination_info = GetDominationInfo(taken_map_code);
if (domination_info == NULL)
{
continue;
}
for (int option_index = 0;
option_index < _countof(domination_info->m_RewardOption);
++option_index)
{
const AttrOptionInfo& new_option_info = domination_info->m_RewardOption[option_index];
const int option_kind = new_option_info.m_wOptionKind;
if (option_kind == 0)
{
break;
}
SelectedRewardOptions::const_iterator option_it = sel_options.find(option_kind);
if (option_it != sel_options.end())
{
// 같은 종류의 보상 옵션이 존재하면 큰값만 남긴다.
const SelectedRewardOption& prev_option = option_it->second;
const AttrOptionInfo* const prev_option_info = prev_option.option_info;
if (new_option_info.m_iOptionValue > prev_option_info->m_iOptionValue)
{
sel_options[option_kind] =
SelectedRewardOption(domination_info, option_index, &new_option_info);
}
}
else
{
sel_options[option_kind] =
SelectedRewardOption(domination_info, option_index, &new_option_info);
}
}
}
return sel_options;
}
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
const eDOMINATION_TYPE DominationInfoParser::GetDominationTypeFromFieldCode( const MAPCODE field_code ) const
{
const sDOMINATION_INFO* const parser_info = GetDominationInfo(field_code);
if (parser_info == NULL)
{
SUNLOG(eFULL_LOG,"["__FUNCTION__"]Domination info not found (field code) = %d", field_code);
return DOMINATION_TYPE_NORMAL;
}
return static_cast<const eDOMINATION_TYPE>(parser_info->m_DominationType);
}
const MAPCODE DominationInfoParser::GetMondScheinMapCode()
{
DOMINATION_SCRIPT_INFO_MAP::const_iterator it = script_infos_.begin();
for (it; it != script_infos_.end(); ++it)
{
sDOMINATION_INFO domi_info = it->second;
if (domi_info.m_DominationType == DOMINATION_TYPE_MONDSCHIEN) {
return domi_info.m_DominationMapCode;
}
}
return 0;
}
sDOMINATION_EVENT_INFO DominationInfoParser::GetMondScheinEventInfo()
{
MAPCODE mond_mapcode = GetMondScheinMapCode();
EventInfos mond_eventinfos = GetEventInfosFromMapCode(mond_mapcode);
sDOMINATION_EVENT_INFO event_info;
EventInfos::iterator itr = mond_eventinfos.begin();
if (itr != mond_eventinfos.end())
{
event_info = itr->second;
}
return event_info;
}
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION