From b7751c483e5545aa683baf0b9f09a0add34cfefd Mon Sep 17 00:00:00 2001 From: Niels Martin Hansen Date: Tue, 22 Dec 2020 14:21:31 +0100 Subject: Feature: Influence industry production changes from GS (#7912) --- src/script/api/script_industry.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src/script/api/script_industry.cpp') diff --git a/src/script/api/script_industry.cpp b/src/script/api/script_industry.cpp index 4d1e91a3c..c2b449b0b 100644 --- a/src/script/api/script_industry.cpp +++ b/src/script/api/script_industry.cpp @@ -16,6 +16,7 @@ #include "../../station_base.h" #include "../../newgrf_industries.h" #include "table/strings.h" +#include #include "../../safeguards.h" @@ -204,3 +205,39 @@ return ::Industry::Get(industry_id)->type; } + +int32 ScriptIndustry::GetLastProductionYear(IndustryID industry_id) +{ + Industry *i = Industry::GetIfValid(industry_id); + if (i == nullptr) return 0; + return i->last_prod_year; +} + +ScriptDate::Date ScriptIndustry::GetCargoLastAcceptedDate(IndustryID industry_id, CargoID cargo_type) +{ + Industry *i = Industry::GetIfValid(industry_id); + if (i == nullptr) return ScriptDate::DATE_INVALID; + + if (cargo_type == CT_INVALID) { + return (ScriptDate::Date)std::accumulate(std::begin(i->last_cargo_accepted_at), std::end(i->last_cargo_accepted_at), 0, [](Date a, Date b) { return std::max(a, b); }); + } else { + int index = i->GetCargoAcceptedIndex(cargo_type); + if (index < 0) return ScriptDate::DATE_INVALID; + return (ScriptDate::Date)i->last_cargo_accepted_at[index]; + } +} + +uint32 ScriptIndustry::GetControlFlags(IndustryID industry_id) +{ + Industry *i = Industry::GetIfValid(industry_id); + if (i == nullptr) return 0; + return i->ctlflags; +} + +bool ScriptIndustry::SetControlFlags(IndustryID industry_id, uint32 control_flags) +{ + if (ScriptObject::GetCompany() != OWNER_DEITY) return false; + if (!IsValidIndustry(industry_id)) return false; + + return ScriptObject::DoCommand(0, industry_id, 0 | ((control_flags & ::INDCTL_MASK) << 8), CMD_INDUSTRY_CTRL); +} -- cgit v1.2.3-54-g00ecf