#pragma once #include "metadata.h" class MetaDataLoader; class MetaMgr : public a8::Singleton { private: MetaMgr() {}; friend class a8::Singleton; public: void Init(); void UnInit(); void Reload(); int GetSysParamAsInt(const std::string& param_name, int def_val = 0); double GetSysParamAsFloat(const std::string& param_name, double def_val = 0.0f); std::string GetSysParamAsString(const std::string& param_name, const char* def_val = ""); MetaData::Map* GetMap(int map_id); std::list* GetMaps(); MetaData::MapThing* GetMapThing(int mapthing_id); MetaData::Player* GetPlayer(int id); MetaData::Equip* GetEquip(int id); MetaData::Equip* GetEquipBySlotId(int slot_id); MetaData::EquipUpgrade* GetEquipUpgrade(int equip_id); MetaData::Building* GetBuilding(int building_id); MetaData::Drop* GetDrop(int drop_id); MetaData::SafeArea* GetSafeArea(int area_id); std::vector* GetMapTplThing(std::string& map_name); std::list& GetAirDrops(); MetaData::AirDrop* GetAirDrop(int airdrop_id); MetaData::AirLine* RandAirLine(int map_id); MetaData::Skill* GetSkill(int skill_id); MetaData::Buff* GetBuff(int buff_id); MetaData::Attr* GetAttrById(int attr_id); MetaData::Attr* GetAttrByName(const std::string& attr_name); MetaData::Dress* GetDress(int dress_id); MetaData::Dress* RandDress(); MetaData::RankReward* GetRankReward(int rank); float GetRankRewardParam(int rank); float GetKillRewardParam(int kill_num); int GetRankPointParam1(int rank); int GetRankPointParam2(int rank); int GetRankPointParam3(int rank); int GetKillPointParam1(int kill_num); int GetKillPointParam2(int kill_num); MetaData::Robot* RandRobot(std::set& refreshed_robot_set); MetaData::AI* GetAI(int ai_level, int ai_mode); int gas_inactive_time = 10; int newbie_gas_inactive_time = 5; int midbrid_gas_inactive_time = 15; int common_gas_inactive_time = 15; int zbmode_gas_inactive_time = 15; int zbmode_game_duration = 60 * 2; int zbmode_player_num = 15; int zbmode_init_zombie_num = 2; int jump_time = 10; float K = 100.0f; float kill_param = 0.0f; float rank_param = 0.0f; int fighting_mode = 0; float tank_damage1 = 0.0f; float tank_damage2 = 0.0f; float tank_damage_interval = 0.0f; float average_oil = 0.0f; float max_oil = 0.0f; float horse_shoot_x = 0.0f; float horse_shoot_y = 0.0f; float max_mount_horse_distance = 100.0f; int newbie_game_times = 0; int niube_win_times = 0; int newbie_fill_interval = 0; std::string newbie_born_point; std::vector newbie_drop; std::vector newbie_airdrop; int newbie_first_robot_distance = 0; int newbie_first_robot_appeartime = 0; int newbie_first_robot_ammo = 0; int newbie_airdrop_appeartime = 0; std::vector newbie_buff_list; int level0room_shua_robot_min_time = 0; int level0room_shua_robot_max_time = 0; int level0room_shua_robot_min_num = 0; int level0room_shua_robot_max_num = 0; int level0room_die_robot_min_time = 0; int level0room_die_robot_max_time = 0; int level0room_die_robot_min_num = 0; int level0room_die_robot_max_num = 0; int level0room_robot_water = 0; int level0room_robot_protect_time = 0; int level0room_robot_autodie_time = 0; int level0room_robot_autodie_distance = 0; std::set level0room_spec_things_set; std::vector level0room_spec_airdrops; std::vector> a_room_ai_weights; int a_room_ai_weights_space = 0; std::vector> b_room_ai_weights; int b_room_ai_weights_space = 0; std::vector> c_room_ai_weights; int c_room_ai_weights_space = 0; std::string a_room_ai; std::string b_room_ai; std::string c_room_ai; int level1room_shua_robot_min_time = 0; int level1room_shua_robot_max_time = 0; int level1room_shua_robot_min_num = 0; int level1room_shua_robot_max_num = 0; int level1room_die_robot_min_time = 0; int level1room_die_robot_max_time = 0; int level1room_die_robot_min_num = 0; int level1room_die_robot_max_num = 0; int level1room_robot_water = 0; int level1room_robot_autodie_time = 0; int level1room_robot_autodie_distance = 0; std::string level1room_born_point; #if 0 int refresh_robot_min_num = 0; int refresh_robot_max_num = 0; int refresh_robot_min_time = 0; int refresh_robot_max_time = 0; #endif int other_fill_interval = 0; float android_attack_range = 0; float android_pursuit_range = 0; float android_patrol_range = 0; int map_cell_width = 64 * 8; MetaData::Player* human_meta = nullptr; MetaData::Player* android_meta = nullptr; MetaData::Player* terminator_meta = nullptr; int prebattle_box_id_chiji = 0; int prebattle_box_id_zb = 0; private: MetaDataLoader* loader_ = nullptr; std::string level0room_spec_things; std::string level0room_spec_airdrop; friend class MetaDataLoader; };