diff options
author | truebrain <truebrain@openttd.org> | 2011-12-19 21:01:12 +0000 |
---|---|---|
committer | truebrain <truebrain@openttd.org> | 2011-12-19 21:01:12 +0000 |
commit | 5858c534202ef45039293e3a6020993621cc55a8 (patch) | |
tree | 1d85a0b818eeed481a6a2e18a88dedc74ea40495 /src/script/api/script_subsidy.cpp | |
parent | e0ffe4faf268298f3a20427cd87462c70e3d9bc2 (diff) | |
download | openttd-5858c534202ef45039293e3a6020993621cc55a8.tar.xz |
(svn r23628) -Add: ScriptSubsidy::Create, to create subsidies (GameScript only)
Diffstat (limited to 'src/script/api/script_subsidy.cpp')
-rw-r--r-- | src/script/api/script_subsidy.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/script/api/script_subsidy.cpp b/src/script/api/script_subsidy.cpp index 6bc7ba8b9..8ec074d4d 100644 --- a/src/script/api/script_subsidy.cpp +++ b/src/script/api/script_subsidy.cpp @@ -12,6 +12,9 @@ #include "../../stdafx.h" #include "script_subsidy.hpp" #include "script_date.hpp" +#include "script_industry.hpp" +#include "script_town.hpp" +#include "script_error.hpp" #include "../../subsidy_base.h" #include "../../station_base.h" @@ -27,6 +30,17 @@ return ::Subsidy::Get(subsidy_id)->IsAwarded(); } +/* static */ bool ScriptSubsidy::Create(CargoID cargo_type, SubsidyParticipantType from_type, uint16 from_id, SubsidyParticipantType to_type, uint16 to_id) +{ + EnforcePrecondition(false, ScriptCargo::IsValidCargo(cargo_type)); + EnforcePrecondition(false, from_type == SPT_INDUSTRY || from_type == SPT_TOWN); + EnforcePrecondition(false, to_type == SPT_INDUSTRY || to_type == SPT_TOWN); + EnforcePrecondition(false, (from_type == SPT_INDUSTRY && ScriptIndustry::IsValidIndustry(from_id)) || (from_type == SPT_TOWN && ScriptTown::IsValidTown(from_id))); + EnforcePrecondition(false, (to_type == SPT_INDUSTRY && ScriptIndustry::IsValidIndustry(to_id)) || (to_type == SPT_TOWN && ScriptTown::IsValidTown(to_id))); + + return ScriptObject::DoCommand(0, from_type | (from_id << 8) | (cargo_type << 24), to_type | (to_id << 8), CMD_CREATE_SUBSIDY); +} + /* static */ ScriptCompany::CompanyID ScriptSubsidy::GetAwardedTo(SubsidyID subsidy_id) { if (!IsAwarded(subsidy_id)) return ScriptCompany::COMPANY_INVALID; |