This commit is contained in:
aozhiwei 2020-07-15 10:09:05 +08:00
parent 992c541fff
commit 4bb0317e9d
3 changed files with 49 additions and 7 deletions

View File

@ -238,33 +238,51 @@ public:
METAMGR_READ_STR(mini_room_ai, "");
std::vector<std::string> tmpstrings;
a8::Split(MetaMgr::Instance()->mini_room_ai, tmpstrings, '|');
int i = 1;
for (auto& str : tmpstrings) {
int weight = a8::XValue(str).GetInt();
MetaMgr::Instance()->mini_room_ai_weights_space += weight;
MetaMgr::Instance()->mini_room_ai_weights.push_back
(
weight
std::make_tuple
(
i,
MetaMgr::Instance()->mini_room_ai_weights_space
)
);
MetaMgr::Instance()->mini_room_ai_weights_space += weight;
++i;
}
if (MetaMgr::Instance()->mini_room_ai_weights.size() != 8) {
abort();
}
if (MetaMgr::Instance()->mini_room_ai_weights_space <= 0) {
abort();
}
}
{
METAMGR_READ_STR(normal_room_ai, "");
std::vector<std::string> tmpstrings;
a8::Split(MetaMgr::Instance()->mini_room_ai, tmpstrings, '|');
int i = 1;
for (auto& str : tmpstrings) {
int weight = a8::XValue(str).GetInt();
MetaMgr::Instance()->normal_room_ai_weights_space += weight;
MetaMgr::Instance()->normal_room_ai_weights.push_back
(
weight
std::make_tuple
(
i,
MetaMgr::Instance()->normal_room_ai_weights_space
)
);
MetaMgr::Instance()->normal_room_ai_weights_space += weight;
++i;
}
if (MetaMgr::Instance()->normal_room_ai_weights.size() != 8) {
abort();
}
if (MetaMgr::Instance()->normal_room_ai_weights_space <= 0) {
abort();
}
}
METAMGR_READ(level1room_shua_robot_min_time, 5);

View File

@ -91,9 +91,9 @@ class MetaMgr : public a8::Singleton<MetaMgr>
int level0room_robot_autodie_distance = 0;
std::set<int> level0room_spec_things_set;
std::vector<int> level0room_spec_airdrops;
std::vector<int> mini_room_ai_weights;
std::vector<std::tuple<int, int>> mini_room_ai_weights;
int mini_room_ai_weights_space = 0;
std::vector<int> normal_room_ai_weights;
std::vector<std::tuple<int, int>> normal_room_ai_weights;
int normal_room_ai_weights_space = 0;
std::string mini_room_ai;
std::string normal_room_ai;

View File

@ -2905,5 +2905,29 @@ void Room::InitAndroidAI()
androids.push_back((Android*)hum);
}
}
for (Android* hum : androids) {
if (IsMiniRoom()) {
int rnd = rand() % MetaMgr::Instance()->mini_room_ai_weights_space;
++rnd;
for (auto& tuple : MetaMgr::Instance()->mini_room_ai_weights) {
int ai_level = std::get<0>(tuple);
int space = std::get<1>(tuple);
if (rnd <= space) {
hum->SetAiLevel(ai_level);
break;
}
}
} else {
int rnd = rand() % MetaMgr::Instance()->normal_room_ai_weights_space;
++rnd;
for (auto& tuple : MetaMgr::Instance()->normal_room_ai_weights) {
int ai_level = std::get<0>(tuple);
int space = std::get<1>(tuple);
if (rnd <= space) {
hum->SetAiLevel(ai_level);
break;
}
}
}
}
}