summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Nelson <peter1138@openttd.org>2019-02-13 22:18:33 +0000
committerNiels Martin Hansen <nielsm@indvikleren.dk>2019-03-03 09:15:39 +0100
commit3c047b124e28db45621de06d5556c96598352fc7 (patch)
treed347611d01fe873c42ac1a9da9220d3ef7deb4ce
parentb62452903a3af9e51dc308fd674a788214942382 (diff)
downloadopenttd-3c047b124e28db45621de06d5556c96598352fc7.tar.xz
Add: AI functions to get current and last year profit of a group.
-rw-r--r--src/script/api/ai/ai_group.hpp.sq2
-rw-r--r--src/script/api/script_group.cpp25
-rw-r--r--src/script/api/script_group.hpp16
3 files changed, 43 insertions, 0 deletions
diff --git a/src/script/api/ai/ai_group.hpp.sq b/src/script/api/ai/ai_group.hpp.sq
index a5f0e25a0..d721ddfbf 100644
--- a/src/script/api/ai/ai_group.hpp.sq
+++ b/src/script/api/ai/ai_group.hpp.sq
@@ -42,6 +42,8 @@ void SQAIGroup_Register(Squirrel *engine)
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::SetAutoReplace, "SetAutoReplace", 4, ".iii");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetEngineReplacement, "GetEngineReplacement", 3, ".ii");
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.PostRegister(engine);
}
diff --git a/src/script/api/script_group.cpp b/src/script/api/script_group.cpp
index 7823fb28b..023f5534c 100644
--- a/src/script/api/script_group.cpp
+++ b/src/script/api/script_group.cpp
@@ -17,6 +17,7 @@
#include "../../strings_func.h"
#include "../../autoreplace_func.h"
#include "../../settings_func.h"
+#include "../../vehicle_base.h"
#include "table/strings.h"
#include "../../safeguards.h"
@@ -148,3 +149,27 @@
return ScriptObject::DoCommand(0, group_id << 16, (::INVALID_ENGINE << 16) | engine_id, CMD_SET_AUTOREPLACE);
}
+
+/* static */ Money ScriptGroup::GetProfitThisYear(GroupID group_id)
+{
+ if (!IsValidGroup(group_id)) return -1;
+
+ Money profit = 0;
+
+ const Vehicle *v;
+ FOR_ALL_VEHICLES(v) {
+ if (v->group_id != group_id) continue;
+ if (!v->IsPrimaryVehicle()) continue;
+
+ profit += v->GetDisplayProfitThisYear();
+ }
+
+ return profit;
+}
+
+/* static */ Money ScriptGroup::GetProfitLastYear(GroupID group_id)
+{
+ if (!IsValidGroup(group_id)) return -1;
+
+ return ::Group::Get(group_id)->statistics.profit_last_year;
+}
diff --git a/src/script/api/script_group.hpp b/src/script/api/script_group.hpp
index 7b375e29a..c5f41cdb6 100644
--- a/src/script/api/script_group.hpp
+++ b/src/script/api/script_group.hpp
@@ -189,6 +189,22 @@ public:
* @return True if and if the replacing was successfully stopped.
*/
static bool StopAutoReplace(GroupID group_id, EngineID engine_id);
+
+ /**
+ * Get the current profit of a group.
+ * @param group_id The group to get the profit of.
+ * @pre IsValidGroup(group_id).
+ * @return The current profit the group has.
+ */
+ static Money GetProfitThisYear(GroupID group_id);
+
+ /**
+ * Get the profit of last year of a group.
+ * @param group_id The group to get the profit of.
+ * @pre IsValidGroup(group_id).
+ * @return The current profit the group had last year.
+ */
+ static Money GetProfitLastYear(GroupID group_id);
};
#endif /* SCRIPT_GROUP_HPP */