summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Nelson <peter1138@openttd.org>2019-02-13 22:48:46 +0000
committerNiels Martin Hansen <nielsm@indvikleren.dk>2019-03-03 09:15:39 +0100
commit5d3ccae6c5bd3f328ad0d8e68ae7c69451b9ca48 (patch)
treed2b9f27857cd3fe841607b9ad444e04d89c205e0 /src
parente0c2ad1b6591859a1a30216e396cdab6e6bb028f (diff)
downloadopenttd-5d3ccae6c5bd3f328ad0d8e68ae7c69451b9ca48.tar.xz
Add: AI function to get current usage of a group.
Diffstat (limited to 'src')
-rw-r--r--src/script/api/ai/ai_group.hpp.sq1
-rw-r--r--src/script/api/script_group.cpp21
-rw-r--r--src/script/api/script_group.hpp8
3 files changed, 30 insertions, 0 deletions
diff --git a/src/script/api/ai/ai_group.hpp.sq b/src/script/api/ai/ai_group.hpp.sq
index d721ddfbf..cae6cb3ac 100644
--- a/src/script/api/ai/ai_group.hpp.sq
+++ b/src/script/api/ai/ai_group.hpp.sq
@@ -44,6 +44,7 @@ void SQAIGroup_Register(Squirrel *engine)
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::StopAutoReplace, "StopAutoReplace", 3, ".ii");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetProfitThisYear, "GetProfitThisYear", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetProfitLastYear, "GetProfitLastYear", 2, ".i");
+ SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetCurrentUsage, "GetCurrentUsage", 2, ".i");
SQAIGroup.PostRegister(engine);
}
diff --git a/src/script/api/script_group.cpp b/src/script/api/script_group.cpp
index 023f5534c..0e89c3c60 100644
--- a/src/script/api/script_group.cpp
+++ b/src/script/api/script_group.cpp
@@ -173,3 +173,24 @@
return ::Group::Get(group_id)->statistics.profit_last_year;
}
+
+/* static */ uint32 ScriptGroup::GetCurrentUsage(GroupID group_id)
+{
+ if (!IsValidGroup(group_id)) return -1;
+
+ uint32 occupancy = 0;
+ uint32 vehicle_count = 0;
+
+ const Vehicle *v;
+ FOR_ALL_VEHICLES(v) {
+ if (v->group_id != group_id) continue;
+ if (!v->IsPrimaryVehicle()) continue;
+
+ occupancy += v->trip_occupancy;
+ vehicle_count++;
+ }
+
+ if (vehicle_count == 0) return -1;
+
+ return occupancy / vehicle_count;
+}
diff --git a/src/script/api/script_group.hpp b/src/script/api/script_group.hpp
index c5f41cdb6..a41196718 100644
--- a/src/script/api/script_group.hpp
+++ b/src/script/api/script_group.hpp
@@ -205,6 +205,14 @@ public:
* @return The current profit the group had last year.
*/
static Money GetProfitLastYear(GroupID group_id);
+
+ /**
+ * Get the current vehicle usage of a group.
+ * @param group_id The group to get the current usage of.
+ * @pre IsValidGroup(group_id).
+ * @return The current usage of the group.
+ */
+ static uint32 GetCurrentUsage(GroupID group_id);
};
#endif /* SCRIPT_GROUP_HPP */