fix: correct mapping id -> bot.

This commit is contained in:
ds 2020-11-05 16:01:38 +03:00
commit ce1b0c30ab
2 changed files with 15 additions and 7 deletions

View file

@ -23,7 +23,7 @@ public:
virtual bool isBot (int entity) = 0; virtual bool isBot (int entity) = 0;
// gets the node nearest to origin // gets the node nearest to origin
virtual int getNearestNode (const Vector &origin) = 0; virtual int getNearestNode (float *origin) = 0;
// checks wether node is valid // checks wether node is valid
virtual bool isNodeValid (int node) = 0; virtual bool isNodeValid (int node) = 0;

View file

@ -9,6 +9,14 @@
// module interface implementation // module interface implementation
class YaPBModule : public IYaPBModule, public Singleton <YaPBModule> { class YaPBModule : public IYaPBModule, public Singleton <YaPBModule> {
private:
Bot *getBot (int index) {
if (index < 1) {
return nullptr;
}
return bots[game.playerOfIndex (index - 1)];
}
public: public:
// get the bot version string // get the bot version string
virtual const char *getBotVersion () override { virtual const char *getBotVersion () override {
@ -22,13 +30,13 @@ public:
// checks whether specified players is a yapb bot // checks whether specified players is a yapb bot
virtual bool isBot (int entity) override { virtual bool isBot (int entity) override {
return bots[entity] != nullptr; return getBot (entity) != nullptr;
} }
// gets the node nearest to origin // gets the node nearest to origin
virtual int getNearestNode (const Vector &origin) override { virtual int getNearestNode (float *origin) override {
if (graph.length () > 0) { if (graph.length () > 0) {
return graph.getNearest (origin); return graph.getNearestNoBuckets (origin);
} }
return kInvalidNodeIndex; return kInvalidNodeIndex;
} }
@ -48,7 +56,7 @@ public:
// get the bots current active node // get the bots current active node
virtual int getCurrentNodeId (int entity) override { virtual int getCurrentNodeId (int entity) override {
auto bot = bots[entity]; auto bot = getBot (entity);
if (bot) { if (bot) {
return bot->getCurrentNodeIndex (); return bot->getCurrentNodeIndex ();
@ -61,7 +69,7 @@ public:
if (!graph.exists (node)) { if (!graph.exists (node)) {
return; return;
} }
auto bot = bots[entity]; auto bot = getBot (entity);
if (bot) { if (bot) {
return bot->sendBotToOrigin (graph[node].origin); return bot->sendBotToOrigin (graph[node].origin);
@ -70,7 +78,7 @@ public:
// force bot to go to selected origin // force bot to go to selected origin
virtual void setBotGoalOrigin (int entity, float *origin) { virtual void setBotGoalOrigin (int entity, float *origin) {
auto bot = bots[entity]; auto bot = getBot (entity);
if (bot) { if (bot) {
return bot->sendBotToOrigin (origin); return bot->sendBotToOrigin (origin);