Files
Sun1602/ProgramCommon/DominationInfoParser.h
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

217 lines
8.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
/************************************************************************/
/* DominationInfo.txt ??? */
/************************************************************************/
/************************************************************************/
/*
// ????
DOMINATION_EVENT_ACTION_START : ???? [??????, ??????????, ??????(??)]
DOMINATION_EVENT_ACTION_END : ???? [?????, ??????????, ??????(??)]
DOMINATION_EVENT_SELECT_ATTACKGUILD : ???? ??? ???? [?????, ??????????, ??????(??)]
DOMINATION_EVENT_SELECT_ATTACKGUILD_END : ???? ??? ???? ?? [?????, ??????????, ??????(??)]
DOMINATION_EVENT_SYSTEM_RESET : ???????? [?????, ??????????, ??????(??,??)]
DOMINATION_EVENT_WAIT : ???? ??? [?????, ??????????, ??????(??,??)]
DOMINATION_EVENT_START : ???? ???? [?????, ??????????, ??????(??,??)]
DOMINATION_EVENT_END : ???? ?? [??????, ??????????, ??????(??)]
DOMINATION_EVENT_ACTION_START2 : ???? ???? ??? ????
DOMINATION_EVENT_MAX : ???? ????
*/
/************************************************************************/
#include <Singleton.h>
#include <ScriptCode.IParser.h>
struct sDOMINATION_INFO
{
enum
{
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
REWARD_OPTION_MAX = 15,
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
LIMIT_MAX = 5,
TRIGGERID_MAX = 2,
GATEID_MAX = 3
};
MAPCODE m_DominationMapCode; //"MapCode" (HASH_KEY)
MAPCODE m_LinkMapCode; //"FieldCode"
MAPCODE m_SubMapCode; //"SubFieldCode"
int m_Index; //"Index"
CHAR m_MapName[MAX_MAPNAME_LENGTH]; //"Name"
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
int m_DominationType; //"DominationType" (0: ??, 1:???????)
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
BYTE m_MaxUser; //"MaxUser"
MONEY m_BaseBattingMoney; //"BaseBattingMoney"
BYTE m_BattingCharge; //"BattingCharge" ( ????? )
// added by _NA_0_20100705_DOMINATION_EVENT = {
BYTE m_byUseFixEvent; //"UseFixEvent"
WORD m_wEventDayOfWeek; //"EventDayOfWeek"
DWORD m_dwEventTime; //"EventTime"
DWORD m_dwEventTriggerID; //"EventTriggerID"
// }
DWORD m_StartTriggerID; //"StartTriggerID"
DWORD m_EndTriggerID; //"EndTriggerID"
DWORD m_GateID[GATEID_MAX]; //"GateID1"
DWORD m_GateHPTunning; //"GateHPTunning"
DWORD m_RespawnDelay; //"RespawnDelay" (second)
SLOTCODE m_LimitSkillGroup[LIMIT_MAX]; //"LimitSkillCroup"
SLOTCODE m_LimitItemGroup[LIMIT_MAX]; //"LimitItemGroup0"
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
AttrOptionInfo m_RewardOption[REWARD_OPTION_MAX]; //"RewardBuffCode"
#else
AttrOptionInfo m_RewardOption[LIMIT_MAX]; //"RewardBuffCode"
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
int m_RewardDropHeimRate; //"ReardDropHeimRate" (?????)
#if defined (_NA_20100420_CHANGE_SYSTEM_MEMO_LOGIC) || \
defined (_NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION)
WORD m_BattingItemCode; //"BattingItemCode"
#endif
#ifdef _NA_20120511_WORK_TO_DOMINATION_ADDITIONAL_REQUEST
BYTE m_BattingGuildLevelLimit; //"BattingGuildLevelLimit"
#endif
sDOMINATION_INFO()
{
::ZeroMemory(this, sizeof(*this));
}
};
class DominationInfoParser : public util::Singleton<DominationInfoParser>, public IParser
{
public:
typedef STLX_HASH_MAP<MAPCODE, sDOMINATION_INFO> DOMINATION_SCRIPT_INFO_MAP;
typedef DOMINATION_SCRIPT_INFO_MAP::iterator DOMINATION_SCRIPT_INFO_ITR;
typedef STLX_VECTOR<MAPCODE> TakenMaps; // ?????? ???? ???
// ????? ???? ???
struct SelectedRewardOption
{
SelectedRewardOption(
const sDOMINATION_INFO* const in_domination_info = NULL,
const int in_option_index = 0,
const AttrOptionInfo* const in_option_info = NULL
) :
domination_info(in_domination_info),
option_index(in_option_index),
option_info(in_option_info)
{
}
~SelectedRewardOption()
{
}
const sDOMINATION_INFO* domination_info;
int option_index;
const AttrOptionInfo* option_info;
};
typedef int SelectedRewardOptionKind; // ????? ???? ??? ????
typedef STLX_MAP<SelectedRewardOptionKind, SelectedRewardOption> SelectedRewardOptions; // ????? ???? ??? ???
public:
DominationInfoParser();
~DominationInfoParser();
public:
virtual void Release()
{
}
virtual BOOL LoadScript( eSCRIPT_CODE ScriptCode, BOOL bReload );
public:
const sDOMINATION_INFO* GetDominationInfo(const MAPCODE field_code) const;
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
//???? ??? ???? ?▲? ?????? ???? ???↑? ??????(??? ???? ???????? ?????? ??? ???)
eDOMINATION_EVENT_STATE GetCurEventState(const WORD day_of_week, const DWORD time,
const DWORD map_code) const;
//GM?? ????? ?????? ?????? ??????
const sDOMINATION_EVENT_INFO* GetGMEventInfo(const WORD day_of_week, const DWORD time,
const MAPCODE map_code) const;
//??? ???リ??? ?????? ?????? ??????
const eDOMINATION_TYPE GetDominationTypeFromFieldCode(const MAPCODE field_code) const;
const MAPCODE GetMondScheinMapCode();
#else
eDOMINATION_EVENT_STATE GetCurEventState(const WORD day_of_week, const DWORD time) const;
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
DWORD GetWarTime(const WORD day_of_week, const DWORD time) const;
//_NA_0_20100705_DOMINATION_EVENT
DWORD GetRandomAuctionTime(const WORD day_of_week) const;
DWORD GetRemindEventTime(
const WORD day_of_week, const DWORD time, const eDOMINATION_EVENT_STATE event_state) const;
DOMINATION_SCRIPT_INFO_MAP& GetDominationInfoMap()
{
return script_infos_;
}
const DOMINATION_SCRIPT_INFO_MAP& GetDominationInfoMap() const
{
return script_infos_;
}
// ?? ??? ?????? ???? ????? ??? ?????▲?.
MAPCODE GetDominationFieldCode(const MAPCODE field_code) const;
// ???? ???? ????? ?????? ??? ?? ??? ?????▲?.
MAPCODE GetDominationLinkMapCode(const MAPCODE map_code) const;
// ??? ???? ?? ???? ???? ????
MONEY GetAreaLimitMoney(const MAPCODE map_code) const;
//?????? ?????? ?????? ?ュ? ??? ??????
bool IsLoadComplete() const
{
return is_loaded_;
}
// ?????? ???????リ??? ?????? ???? ????? ??▲?.
SelectedRewardOptions GetRewardOption(const TakenMaps& taken_maps) const;
#ifdef _SERVER
bool GMInsertEventInfo(const sDOMINATION_EVENT_INFO& event_info);
void GMClearEventInfo();
#endif
#if defined (_NA_20100420_CHANGE_SYSTEM_MEMO_LOGIC) || \
defined (_NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION)
// ??? ???????? ?????? ????? ????????? ?????▲?
WORD GetBattingItemCodeByMapCode(const MAPCODE field_code) const;
#endif
private:
typedef STLX_MULTIMAP<WORD, sDOMINATION_EVENT_INFO> EventInfos;
typedef STLX_HASH_MAP<MAPCODE, MAPCODE> MapCodes;
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
public:
//???? ?????? ?????? ???? ???? ???????? ?????? ????? ????
EventInfos GetEventInfosFromMapCode(MAPCODE map_code);
sDOMINATION_EVENT_INFO GetMondScheinEventInfo();
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
private:
bool LoadDominationInfo(const bool is_reload);
bool LoadEventInfo(const bool is_reload);
bool IsValidEventInfo(const sDOMINATION_EVENT_INFO& event_info) const;
bool IsValidDominationInfo(const sDOMINATION_INFO& domination_info, const int row) const;
const sDOMINATION_EVENT_INFO* GetEventInfo(const WORD day_of_week, const DWORD time) const;
private:
DOMINATION_SCRIPT_INFO_MAP script_infos_;
MapCodes map_codes_;
EventInfos event_infos_;
bool is_loaded_;
#ifdef _SERVER
EventInfos gm_event_infos_;
bool is_script_mode_;
#endif
};