This commit is contained in:
aozhiwei 2022-09-20 21:09:28 +08:00
parent d3b175bd25
commit c457815907
5 changed files with 57 additions and 4 deletions

View File

@ -1570,12 +1570,27 @@ namespace MetaData
void PveGemini::Init()
{
{
std::vector<std::string> strings;
a8::Split(pb->multiplayer_enemy_hp_mul(), strings, '|');
for (auto& str : strings) {
hp_muls.push_back(a8::XValue(str).GetDouble());
}
if (hp_muls.size() != 4) {
abort();
}
}
}
float PveGemini::GetHpMul()
float PveGemini::GetHpMul(int num)
{
return 0;
if (num > 0 && num <= hp_muls.size()) {
return hp_muls[num - 1];
}
#ifdef DEBUG
abort();
#endif
return 0.5;
}
void PveGeminiContent::Init()

View File

@ -167,6 +167,11 @@ namespace MetaData
int RandDrop();
};
struct NpcStandard
{
const metatable::NpcStandard* pb = nullptr;
};
struct Robot
{
const metatable::Robot* i = nullptr;
@ -442,9 +447,10 @@ namespace MetaData
struct PveGemini
{
const metatable::PveGemini* pb = nullptr;
std::vector<float> hp_muls;
void Init();
float GetHpMul();
float GetHpMul(int num);
private:
std::vector<float> hp_mul;

View File

@ -199,6 +199,7 @@ public:
std::list<metatable::PveGemini> pve_gemini_meta_list;
std::list<metatable::PveGeminiContent> pve_gemini_content_meta_list;
std::list<metatable::PveGeminiMode> pve_gemini_mode_meta_list;
std::list<metatable::NpcStandard> npc_standard_meta_list;
std::map<std::string, MetaData::Parameter*> parameter_hash;
std::map<int, MetaData::Map*> gamemap_hash;
@ -240,6 +241,7 @@ public:
std::map<int, MetaData::PveGemini> pve_gemini_hash;
std::map<int, std::vector<MetaData::PveGeminiContent>> pve_gemini_content_hash;
std::map<int, MetaData::PveGeminiMode> pve_gemini_mode_hash;
std::map<int, MetaData::NpcStandard> npc_standard_hash;
int curr_group_id = 1001;
std::map<long long, int> weapon_group_hash;
@ -295,6 +297,7 @@ public:
f8::ReadCsvMetaFile(res_path + "pveGemini@pveGemini.csv", pve_gemini_meta_list);
f8::ReadCsvMetaFile(res_path + "pveGeminiContent@pveGeminiContent.csv", pve_gemini_content_meta_list);
f8::ReadCsvMetaFile(res_path + "pveGeminiMode@pveGeminiMode.csv", pve_gemini_mode_meta_list);
f8::ReadCsvMetaFile(res_path + "npcStandard@npcStandard.csv", npc_standard_meta_list);
f8::ReadJsonMetaFile(res_path + "terrain.json", terrain_meta_list);
BindToMetaData();
#if 1
@ -784,6 +787,13 @@ private:
if (MetaMgr::Instance()->match_lock_time >= MetaMgr::Instance()->match_choose_time) {
A8_ABORT();
}
{
for (int i = 1; i <= 15; ++i) {
if (!MetaMgr::Instance()->GetNpcStandard(i)) {
abort();
}
}
}
}
void BindToMetaData()
@ -1109,6 +1119,12 @@ private:
pve_gemini_mode_hash[meta.id()] = item;
}
for (auto& meta : npc_standard_meta_list) {
MetaData::NpcStandard item;
item.pb = &meta;
npc_standard_hash[meta.id()] = item;
}
}
private:
@ -1495,3 +1511,9 @@ void MetaMgr::CheckMapSpawnPoint()
}
}
}
MetaData::NpcStandard* MetaMgr::GetNpcStandard(int quality)
{
auto itr = loader_->npc_standard_hash.find(quality);
return itr != loader_->npc_standard_hash.end() ? &itr->second : nullptr;
}

View File

@ -31,6 +31,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
MetaData::Item* GetHeroSkin(int id);
MetaData::Building* GetBuilding(int building_id);
MetaData::Drop* GetDrop(int drop_id);
MetaData::NpcStandard* GetNpcStandard(int quality);
MetaData::SafeArea* GetSafeArea(int area_id);
MetaData::SafeArea* GetSafeAreaByType(int area_type);
MetaData::SafeAreaPos* RandSafeAreaPos(int area_id);

View File

@ -321,6 +321,15 @@ message SkillNumber
optional string cd = 10;
}
message NpcStandard
{
required int32 id = 1;
optional int32 quality = 2;
optional int32 hp = 3;
optional int32 damage = 4;
optional int32 defence = 5;
}
message Buff
{
required int32 buff_id = 1;