aozhiwei 11f016d4fc 1
2021-12-16 15:51:29 +08:00

201 lines
7.1 KiB
C++

#pragma once
#include "metadata.h"
#define TEXT(textid, def_text) MetaMgr::Instance()->GetText(textid, def_text)
class MetaDataLoader;
class MetaMgr : public a8::Singleton<MetaMgr>
{
private:
MetaMgr() {};
friend class a8::Singleton<MetaMgr>;
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<MetaData::Map>* GetMaps();
MetaData::MapThing* GetMapThing(int mapthing_id);
MetaData::Player* GetPlayer(int id);
MetaData::PlayerSkin* GetPlayerSkin(int id);
std::shared_ptr<std::vector<MetaData::PlayerSkin*>> GetHeroSkins(int hero_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);
MetaData::SafeArea* GetSafeAreaByType(int area_type);
MetaData::SafeAreaPos* RandSafeAreaPos(int area_id);
std::vector<MetaData::SafeAreaPos*>* GetSafeAreaPosList(int area_id);
std::vector<MetaData::MapTplThing>* GetMapTplThing(const std::string& map_name);
metatable::TerrainJson* GetTerrainJson(int map_id);
std::list<metatable::MapLayerJson>* GetMapLayer(const std::string& map_name);
std::list<metatable::MapBlockJson>* GetMapBlock(const std::string& map_name);
std::list<MetaData::AirDrop>& GetAirDrops();
MetaData::AirDrop* GetAirDrop(int airdrop_id);
std::list<MetaData::AirRaid>& GetAirRaids();
MetaData::AirRaid* GetAirRaid(int airraid_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);
MetaData::GunTalentGrow* GetTalent(int talent_id, int talent_lv);
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<int>& refreshed_robot_set);
MetaData::AI* GetAndroidAI(int ai_level, int ai_mode);
MetaData::AI* GetHeroAI(int id);
std::string GetText(const std::string& textid, const std::string& def_text="");
bool HasText(const std::string& textid);
std::vector<std::tuple<int, std::string>>* GetTextElements(const std::string& textid);
int gas_inactive_time = 10;
int newbie_gas_inactive_time = 5;
int midbrid_gas_inactive_time = 15;
int common_gas_inactive_time = 15;
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 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<int> newbie_drop;
std::vector<int> 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<int> 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<int> level0room_spec_things_set;
std::vector<int> level0room_spec_airdrops;
std::vector<std::tuple<int, int>> a_room_ai_weights;
int a_room_ai_weights_space = 0;
std::vector<std::tuple<int, int>> b_room_ai_weights;
int b_room_ai_weights_space = 0;
std::vector<std::tuple<int, int>> 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;
float grass_invisible_time = 0.5;
float grass_show_time = 0.5f;
float grass_invisible_time2 = 2.0f;
float water_invisible_time = 0.5;
float water_show_time = 0.5f;
float water_invisible_time2 = 2.0f;
double water_move_coefficient = 0.75f;
float ice_invisible_time = 0.5;
float ice_show_time = 0.5f;
float ice_invisible_time2 = 2.0f;
int refresh_ai_destory_box_time = 30;
int refresh_ai_destory_box_times = 5;
int refresh_ai_downed_nearby_teammate_num = 1;
int refresh_ai_downed_nearby_range = 580;
int view_objects_out_distance = 580;
int view_objects_in_distance = 580;
int incubator_base_length = 580;
int incubator_rand_length = 100;
int incubator_canset_distance = 100;
int refresh_view_time = 8;
int teammate_kill_color = 0xFFFF00;
int teammate_bekill_color = 0xFF0000;
int self_kill_color = 0xFFFF00;
int self_bekill_color = 0xFF0000;
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;
int bullet_planck_step_length = 15;
MetaData::Player* human_meta = nullptr;
MetaData::Player* android_meta = nullptr;
MetaData::Player* terminator_meta = nullptr;
int prebattle_box_id_chiji = 0;
int prebattle_can_use_skill = 0;
int watchable = 0;
int prebattle_combine_team = 1;
int async_send_mapblock = 1;
int show_team_ui = 1;
int match_team_time = 0;
int match_robot_time = 0;
int match_choose_time = 0;
int match_lock_time = 0;
int dive_oxygen_total = 0;
int dive_oxygen_consume = 0;
int dive_hp_consume = 0;
int dive_explosion_dmg_switch = 0;
int inwater_oxygen_recover = 0;
private:
MetaDataLoader* loader_ = nullptr;
std::string level0room_spec_things;
std::string level0room_spec_airdrop;
friend class MetaDataLoader;
};