aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/GoalSelector.h
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/GoalSelector.h')
-rw-r--r--Minecraft.World/GoalSelector.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/Minecraft.World/GoalSelector.h b/Minecraft.World/GoalSelector.h
new file mode 100644
index 00000000..c2bf0b87
--- /dev/null
+++ b/Minecraft.World/GoalSelector.h
@@ -0,0 +1,45 @@
+#pragma once
+using namespace std;
+
+class Goal;
+
+class GoalSelector
+{
+private:
+ class InternalGoal
+ {
+ public:
+ // 4J Added canDelete param
+ InternalGoal(int prio, Goal *goal, bool canDeletePointer);
+
+ Goal *goal;
+ int prio;
+ bool canDeletePointer;
+ };
+
+private:
+ vector<InternalGoal *> goals;
+ vector<InternalGoal *> usingGoals;
+ int tickCount;
+ int newGoalRate;
+
+public:
+ GoalSelector();
+ ~GoalSelector();
+
+ // 4J Added canDelete param
+ void addGoal(int prio, Goal *goal, bool canDeletePointer = true);
+ void tick();
+ vector<InternalGoal *> *getRunningGoals();
+
+private:
+ bool canContinueToUse(InternalGoal *ig);
+ bool canUseInSystem(InternalGoal *goal);
+ bool canCoExist(InternalGoal *goalA, InternalGoal *goalB);
+
+public:
+ void setNewGoalRate(int newGoalRate);
+
+ // 4J Added override to update ai elements when loading entity from schematics
+ void setLevel(Level *level);
+}; \ No newline at end of file