From 3c047b124e28db45621de06d5556c96598352fc7 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Wed, 13 Feb 2019 22:18:33 +0000 Subject: Add: AI functions to get current and last year profit of a group. --- src/script/api/ai/ai_group.hpp.sq | 2 ++ src/script/api/script_group.cpp | 25 +++++++++++++++++++++++++ src/script/api/script_group.hpp | 16 ++++++++++++++++ 3 files changed, 43 insertions(+) (limited to 'src') 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 */ -- cgit v1.2.3-54-g00ecf