添加ai基础

This commit is contained in:
aozhiwei 2021-07-22 11:31:00 +00:00
parent cdbfd129da
commit f84d35b8e6
9 changed files with 54 additions and 7 deletions

View File

@ -245,7 +245,7 @@ void AndroidAI::UpdateNewAI()
return; return;
} }
if (!ai_meta && GetAiLevel() != 0) { if (!ai_meta && GetAiLevel() != 0) {
ai_meta = MetaMgr::Instance()->GetAI(GetAiLevel(), 0); ai_meta = MetaMgr::Instance()->GetAndroidAI(GetAiLevel(), 0);
if (!ai_meta) { if (!ai_meta) {
abort(); abort();
} }

View File

@ -116,3 +116,11 @@ enum EntityType_e
ET_Unuse = 30, ET_Unuse = 30,
ET_MAX ET_MAX
}; };
enum AIKind_e
{
kAI_Begin = 0,
kAI_Android = 1,
kAI_MineSweeper = 2,
kAI_End
};

View File

@ -76,7 +76,7 @@ void HeroAI::UpdateAI()
{ {
Hero* hero = (Hero*)owner; Hero* hero = (Hero*)owner;
if (!ai_meta && GetAiLevel() != 0) { if (!ai_meta && GetAiLevel() != 0) {
ai_meta = MetaMgr::Instance()->GetAI(GetAiLevel(), 0); ai_meta = MetaMgr::Instance()->GetAndroidAI(GetAiLevel(), 0);
if (!ai_meta) { if (!ai_meta) {
abort(); abort();
} }

View File

@ -1110,6 +1110,11 @@ namespace MetaData
} }
} }
void AI::Init2()
{
}
int AI::GetMoveIdleTime() int AI::GetMoveIdleTime()
{ {
return a8::RandEx( return a8::RandEx(

View File

@ -291,9 +291,26 @@ namespace MetaData
{ {
const metatable::AI* i = nullptr; const metatable::AI* i = nullptr;
void Init(); void Init();
void Init2();
int GetMoveIdleTime(); int GetMoveIdleTime();
int GetMoveTime(); int GetMoveTime();
float param1 = 0.0f;
float param2 = 0.0f;
float param3 = 0.0f;
float param4 = 0.0f;
float param5 = 0.0f;
int int_param1 = 0;
int int_param2 = 0;
int int_param3 = 0;
int int_param4 = 0;
int int_param5 = 0;
std::vector<int> int_list_param1;
std::vector<int> int_list_param2;
std::vector<int> int_list_param3;
std::vector<int> int_list_param4;
std::vector<int> int_list_param5;
private: private:
std::tuple<int, int> random_move_idle_time_; std::tuple<int, int> random_move_idle_time_;
std::tuple<int, int> random_move_time_; std::tuple<int, int> random_move_time_;

View File

@ -99,6 +99,7 @@ public:
std::map<int, MetaData::EquipUpgrade*> equipupgrade_hash; std::map<int, MetaData::EquipUpgrade*> equipupgrade_hash;
std::map<int, MetaData::Robot*> robot_hash; std::map<int, MetaData::Robot*> robot_hash;
std::map<int, std::vector<MetaData::AirLine*>> airline_hash; std::map<int, std::vector<MetaData::AirLine*>> airline_hash;
std::map<long long, MetaData::AI*> android_ai_hash;
std::map<int, MetaData::AI*> ai_hash; std::map<int, MetaData::AI*> ai_hash;
std::map<std::string, std::string> text_hash; std::map<std::string, std::string> text_hash;
@ -691,7 +692,8 @@ private:
MetaData::AI& item = a8::FastAppend(ai_list); MetaData::AI& item = a8::FastAppend(ai_list);
item.i = &meta; item.i = &meta;
item.Init(); item.Init();
ai_hash[a8::MakeInt64(meta.ai_level(), meta.ai_mode())] = &item; ai_hash[item.i->id()] = &item;
android_ai_hash[a8::MakeInt64(meta.ai_level(), meta.ai_mode())] = &item;
} }
for (auto& meta : text_meta_list) { for (auto& meta : text_meta_list) {
@ -963,9 +965,15 @@ MetaData::Robot* MetaMgr::RandRobot(std::set<int>& refreshed_robot_set)
} }
} }
MetaData::AI* MetaMgr::GetAI(int ai_level, int ai_mode) MetaData::AI* MetaMgr::GetAndroidAI(int ai_level, int ai_mode)
{ {
auto itr = loader_->ai_hash.find(a8::MakeInt64(ai_level, ai_mode)); auto itr = loader_->android_ai_hash.find(a8::MakeInt64(ai_level, ai_mode));
return itr != loader_->android_ai_hash.end() ? itr->second : nullptr;
}
MetaData::AI* MetaMgr::GetHeroAI(int id)
{
auto itr = loader_->ai_hash.find(id);
return itr != loader_->ai_hash.end() ? itr->second : nullptr; return itr != loader_->ai_hash.end() ? itr->second : nullptr;
} }

View File

@ -55,7 +55,8 @@ class MetaMgr : public a8::Singleton<MetaMgr>
int GetKillPointParam1(int kill_num); int GetKillPointParam1(int kill_num);
int GetKillPointParam2(int kill_num); int GetKillPointParam2(int kill_num);
MetaData::Robot* RandRobot(std::set<int>& refreshed_robot_set); MetaData::Robot* RandRobot(std::set<int>& refreshed_robot_set);
MetaData::AI* GetAI(int ai_level, int ai_mode); 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=""); std::string GetText(const std::string& textid, const std::string& def_text="");
int gas_inactive_time = 10; int gas_inactive_time = 10;

View File

@ -91,7 +91,7 @@ void ZombieModeAI::UpdateAI()
return; return;
} }
if (!node_->ai_meta && GetAiLevel() != 0) { if (!node_->ai_meta && GetAiLevel() != 0) {
node_->ai_meta = MetaMgr::Instance()->GetAI(GetAiLevel(), GetAiMode()); node_->ai_meta = MetaMgr::Instance()->GetAndroidAI(GetAiLevel(), GetAiMode());
if (!node_->ai_meta) { if (!node_->ai_meta) {
abort(); abort();
} }

View File

@ -187,6 +187,7 @@ message Player
optional int32 default_weapon = 28; optional int32 default_weapon = 28;
optional int32 dead_drop = 29; optional int32 dead_drop = 29;
optional int32 delay_delete = 39; optional int32 delay_delete = 39;
optional int32 ai = 46;
} }
message Robot message Robot
@ -337,6 +338,7 @@ message KillPoint
message AI message AI
{ {
optional int32 id = 13;
optional int32 ai_level = 1; optional int32 ai_level = 1;
optional int32 pursuit_radius = 2; optional int32 pursuit_radius = 2;
optional int32 attack_interval = 3; optional int32 attack_interval = 3;
@ -348,6 +350,12 @@ message AI
optional int32 attack_range = 10; optional int32 attack_range = 10;
optional float attack_rate = 11; optional float attack_rate = 11;
optional int32 ai_mode = 12; optional int32 ai_mode = 12;
optional int32 ai_kind = 14;
optional string param1 = 15;
optional string param2 = 16;
optional string param3 = 17;
optional string param4 = 18;
optional string param5 = 19;
} }
message Text message Text