diff options
Diffstat (limited to 'Minecraft.World/GoalSelector.cpp')
| -rw-r--r-- | Minecraft.World/GoalSelector.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Minecraft.World/GoalSelector.cpp b/Minecraft.World/GoalSelector.cpp index 85a37dda..3e3d99b5 100644 --- a/Minecraft.World/GoalSelector.cpp +++ b/Minecraft.World/GoalSelector.cpp @@ -30,6 +30,33 @@ void GoalSelector::addGoal(int prio, Goal *goal, bool canDeletePointer /*= true* goals.push_back(new InternalGoal(prio, goal, canDeletePointer)); } +void GoalSelector::removeGoal(Goal *toRemove) +{ + for(AUTO_VAR(it, goals.begin()); it != goals.end(); ) + { + InternalGoal *ig = *it; + Goal *goal = ig->goal; + + if (goal == toRemove) + { + AUTO_VAR(it2, find(usingGoals.begin(), usingGoals.end(), ig) ); + if (it2 != usingGoals.end()) + { + goal->stop(); + usingGoals.erase(it2); + } + + if(ig->canDeletePointer) delete ig->goal; + delete ig; + it = goals.erase(it); + } + else + { + ++it; + } + } +} + void GoalSelector::tick() { vector<InternalGoal *> toStart; |
