#ifndef PROGRAMCOMMON_BATTLEGROUNDINFOPARSER_H_ #define PROGRAMCOMMON_BATTLEGROUNDINFOPARSER_H_ #if _MSC_VER > 1000 #pragma once #endif //_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND #include #include #include #include #include "ReliableRatioRandomizer.h" struct BattleGroundInfo { enum { MAX_ITEM_LIMIT_COUNT = 10 }; // º¯¼ö ¸í, º¯¼ö ÇüÀº ¿ëµµ/ÆíÀÇ¿¡ µû¶ó ¼öÁ¤ ÇÊ¿äÇÔ // ! ¸Ê ŸÀÔ BYTE index; // ! ¸Ê ÄÚµå DWORD map_code; // ! Á¦ÇÑ ·¹º§ DWORD limit_level; // ! ÀåºñÆòÁ¡ Á¦ÇÑ DWORD equipment_rating; // ! ÃÖ´ë Àοø BYTE team_max; // ! ÆÄƼ½ÅûÁ¦ÇÑÀοø BYTE max_party; // ! Ãâ¹ß´ë±â½Ã°£(ÃÊ) DWORD start_time; // ! ÀÔÀå´ë±â½Ã°£(ÃÊ) DWORD entry_time; // ! Áغñ¹öÇÁ»óÅÂÄÚµå DWORD prepare_condition_code; // ! Áغñ½Ã°£(ÃÊ) DWORD prepare_time; // ! °ÔÀÌÆ®¿ÀÇÂÆ®¸®°ÅID DWORD gate_trigger_id; // ! ¸ñÇ¥Á¡¼ö DWORD goal_score; // ! °¢Àνð£(ÃÊ) DWORD sealing_time; // ! Á¡·É´ë±â½Ã°£(ÃÊ) DWORD conquer_wait_time; // ! ÀÚ¿øÁ¡¼ö DWORD gather_point; // ! ÀÚ¿ø½ÀµæÁÖ±â(ÃÊ) DWORD gather_period; #ifdef _NA_006599_20130401_BATTLEGROUND_PKPOINT // ! Àû óġ ½Ã Ãß°¡ ȹµæ Á¡¼ö°ª BYTE pk_point; #endif // ! »ç¸ÁÀ¯Áö½Ã°£(ÃÊ) DWORD dead_time; // ! ºÎȰÁÖ±â(ÃÊ) DWORD resurrection_period; // ! ºÎȰ´ë±â»óÅÂÄÚµå DWORD resurrection_condition_code; // ! °­Ã¶¸ðµå½Ã°£(ÃÊ) DWORD iron_mode; // ! ¾îºä¡ Æ÷ÀÎÆ® DWORD abusing_point; // ! ½Â¸®ÆÀº¸»óÄÚµå DWORD win_reward_code; // ! ±âº»»óÄÚµå DWORD base_reward_code; // ! ÆÐ³ÎƼº¸»óÄÚµå DWORD penalty_reward_code; #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND // ! ¸ÅĪ½ÇÆÐ º¸»óÄÚµå DWORD mismatch_reward_code; // ! ±âº» ÀÚ¿ø Á¡¼ö BYTE basic_point; #endif //_NA_008679_20160202_REWORK_BATTLEGROUND // ! ¾ÆÀÌÅÛŸÀÔÁ¦ÇÑ01~10 DWORD limit_item[MAX_ITEM_LIMIT_COUNT]; // ! ¹«È¿Ã³¸®½Ã°£(ÃÊ) DWORD draw_time; // ! ÀçÀÔÀåÆÐ³ÎƼ»óÅ DWORD re_enter_condiion; // ! ÀçÀÔÀåÆÐ³ÎƼ½Ã°£(ÃÊ) DWORD re_enter_condition_period; // ! ÀÌÅ»ÆÐ³ÎƼ»óÅ DWORD exit_condition; // ! ÀÌÅ»ÆÐ³ÎƼ½Ã°£(ÃÊ) DWORD exit_period; #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND // ÃÖ¼Ò Àοø BYTE team_min; #else // ! ÃÖ´ë¸ÅĪ´ë±â½Ã°£(ÃÊ) DWORD max_match_time; #endif //_NA_008679_20160202_REWORK_BATTLEGROUND //------------------------------------------------------------------------------ BattleGroundInfo() { index = 0; map_code = 0; limit_level = 0; equipment_rating = 0; team_max = 0; max_party = 0; start_time = 0; entry_time = 0; prepare_condition_code = 0; prepare_time = 0; gate_trigger_id = 0; goal_score = 0; sealing_time = 0; conquer_wait_time = 0; gather_point = 0; gather_period = 0; #ifdef _NA_006599_20130401_BATTLEGROUND_PKPOINT pk_point = 0; #endif dead_time = 0; resurrection_period = 0; resurrection_condition_code = 0; iron_mode = 0; abusing_point = 0; win_reward_code = 0; base_reward_code = 0; penalty_reward_code = 0; #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND mismatch_reward_code = 0; basic_point = 0; #endif //_NA_008679_20160202_REWORK_BATTLEGROUND ZeroMemory(limit_item, (sizeof(limit_item[0])*MAX_ITEM_LIMIT_COUNT)); draw_time = 0; re_enter_condiion = 0; re_enter_condition_period = 0; exit_condition = 0; exit_period = 0; #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND team_min = 0; #else max_match_time = 0; #endif //_NA_008679_20160202_REWORK_BATTLEGROUND } }; #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND struct BattleGroundCostumeInfo { BYTE index; BYTE class_code; // [BClassCode] Ŭ·¡½º ÄÚµå BYTE enchant; // [Enchant] ÀÎæƮ È¿°ú WORD costume_code1; // [NpcCostumeItem] ÄÚ½ºÆ¬ ¾ÆÀÌÅÛ ÄÚµå(³²ÀÚ) WORD costume_code2; // [NpcCostumeItem] ÄÚ½ºÆ¬ ¾ÆÀÌÅÛ ÄÚµå(¿©ÀÚ) WORD armor_item_code; // [ArmorImage] °©¿Ê ¾ÆÀÌÅÛ ÄÚµå WORD helm_item_code; // [HelmImage] Çï¸ä ¾ÆÀÌÅÛ ÄÚµå WORD pants_item_code; // [PantsImage] ¹ÙÁö ¾ÆÀÌÅÛ ÄÚµå WORD boots_item_code; // [BootImage] ºÎÃ÷ ¾ÆÀÌÅÛ ÄÚµå WORD gloves_item_code; // [GloveImage] Àå°© ¾ÆÀÌÅÛ ÄÚµå BYTE probability; // [Probability] È®·ü BattleGroundCostumeInfo() : index(0), class_code(0), enchant(0), costume_code1(0), costume_code2(0), armor_item_code(0), helm_item_code(0), pants_item_code(0), boots_item_code(0), gloves_item_code(0), probability(0) { } }; struct BattleGroundWeaponInfo { BYTE index; BYTE class_code; // [BClassCode] Ŭ·¡½º ÄÚµå BYTE enchant; // [Enchant] ÀÎæƮ È¿°ú eWEAPONTYPE weapon_type_A; // [WeaponTypeA] ¹«±âŸÀÔ A WORD weapon_item_code_A; // [WeaponImage] ¹«±â ¾ÆÀÌÅÛ ÄÚµå A eWEAPONTYPE weapon_type_B; // [WeaponTypeA] ¹«±âŸÀÔ B WORD weapon_item_code_B; // [WeaponImage] ¹«±â ¾ÆÀÌÅÛ ÄÚµå B BYTE probability; // [Probablity] È®·ü BattleGroundWeaponInfo() : index(0), class_code(0), enchant(0), weapon_type_A(eWEAPONTYPE_INVALID), weapon_item_code_A(0), weapon_type_B(eWEAPONTYPE_INVALID), weapon_item_code_B(0), probability(0) { } }; #endif //_NA_008679_20160202_REWORK_BATTLEGROUND class BattleGroundInfoParser : public util::Singleton, public IParser { public: #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND typedef std::list BattleCostumeList; typedef std::map BattleCostumeInfoMap; typedef std::list BattleWeaponList; typedef std::map BattleWeaponInfoMap; #endif //_NA_008679_20160202_REWORK_BATTLEGROUND typedef STLX_HASH_MAP BattleGroundInfo_Hash; BattleGroundInfoParser(void); ~BattleGroundInfoParser(void); void Init(); void Init(char* pszPackFileName); virtual void Release(); virtual BOOL LoadScript(eSCRIPT_CODE ScriptCode, BOOL bReload); BattleGroundInfo_Hash& battlegroundinfo_hash() { return battlegroundinfo_hash_; } const BattleGroundInfo* FindData(const MAPCODE map_code) const; #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND SLOTCODE GetRandomBattleCostumeCode(); #ifdef _SERVER #else BattleGroundCostumeInfo* GetBattleGroundCostumeInfo(BYTE costume_index, eCHAR_TYPE class_code); BattleGroundWeaponInfo* GetBattleGroundWeaponInfo(BYTE costume_index, eCHAR_TYPE class_code); DWORD GetBattleGroundWeaponItemCode(BYTE costume_index, eCHAR_TYPE class_code, DWORD weapon_kind); #endif //_SERVER #endif //_NA_008679_20160202_REWORK_BATTLEGROUND private: BOOL _Load(BOOL bReload); void Unload(); #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND BOOL _LoadCostumeInfo(BOOL _reload); BOOL _LoadWeaponInfo(BOOL _reload); VOID _UnloadCostumeInfo(); VOID _UnloadWeaponInfo(); #endif //_NA_008679_20160202_REWORK_BATTLEGROUND VOID _UnloadBattleGroundInfo(); BattleGroundInfo_Hash battlegroundinfo_hash_; #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND BattleCostumeInfoMap costumeinfo_map_; // ReliableRatioRandomizer<255, BYTE, BYTE> costume_randomizer_; BattleWeaponInfoMap weaponinfo_map_; // ReliableRatioRandomizer<255, BYTE, BYTE> weapon_randomizer_; #endif //_NA_008679_20160202_REWORK_BATTLEGROUND }; #endif //PROGRAMCOMMON_CHAOSZONETREEPARSER_H_