diff options
Diffstat (limited to 'src/script/api/script_company.cpp')
-rw-r--r-- | src/script/api/script_company.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/script/api/script_company.cpp b/src/script/api/script_company.cpp index 876ad84c5..c8f8a616f 100644 --- a/src/script/api/script_company.cpp +++ b/src/script/api/script_company.cpp @@ -20,6 +20,10 @@ #include "../../tile_map.h" #include "../../string_func.h" #include "../../settings_func.h" +#include "../../company_cmd.h" +#include "../../misc_cmd.h" +#include "../../object_cmd.h" +#include "../../settings_cmd.h" #include "table/strings.h" #include "../../safeguards.h" @@ -48,7 +52,7 @@ EnforcePreconditionEncodedText(false, text); EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_COMPANY_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); - return ScriptObject::DoCommand(0, 0, 0, CMD_RENAME_COMPANY, text); + return ScriptObject::Command<CMD_RENAME_COMPANY>::Do(0, 0, 0, text); } /* static */ char *ScriptCompany::GetName(ScriptCompany::CompanyID company) @@ -69,7 +73,7 @@ EnforcePreconditionEncodedText(false, text); EnforcePreconditionCustomError(false, ::Utf8StringLength(text) < MAX_LENGTH_PRESIDENT_NAME_CHARS, ScriptError::ERR_PRECONDITION_STRING_TOO_LONG); - return ScriptObject::DoCommand(0, 0, 0, CMD_RENAME_PRESIDENT, text); + return ScriptObject::Command<CMD_RENAME_PRESIDENT>::Do(0, 0, 0, text); } /* static */ char *ScriptCompany::GetPresidentName(ScriptCompany::CompanyID company) @@ -97,7 +101,7 @@ GenderEthnicity ge = (GenderEthnicity)((gender == GENDER_FEMALE ? (1 << ::GENDER_FEMALE) : 0) | (::InteractiveRandom() & (1 << ETHNICITY_BLACK))); RandomCompanyManagerFaceBits(cmf, ge, false); - return ScriptObject::DoCommand(0, 0, cmf, CMD_SET_COMPANY_MANAGER_FACE); + return ScriptObject::Command<CMD_SET_COMPANY_MANAGER_FACE>::Do(0, 0, cmf, {}); } /* static */ ScriptCompany::Gender ScriptCompany::GetPresidentGender(CompanyID company) @@ -206,9 +210,11 @@ Money amount = abs(loan - GetLoanAmount()); - return ScriptObject::DoCommand(0, - amount >> 32, (amount & 0xFFFFFFFC) | 2, - (loan > GetLoanAmount()) ? CMD_INCREASE_LOAN : CMD_DECREASE_LOAN); + if (loan > GetLoanAmount()) { + return ScriptObject::Command<CMD_INCREASE_LOAN>::Do(0, amount >> 32, (amount & 0xFFFFFFFC) | 2, {}); + } else { + return ScriptObject::Command<CMD_DECREASE_LOAN>::Do(0, amount >> 32, (amount & 0xFFFFFFFC) | 2, {}); + } } /* static */ bool ScriptCompany::SetMinimumLoanAmount(Money loan) @@ -238,7 +244,7 @@ EnforcePrecondition(false, company != COMPANY_INVALID); /* Network commands only allow 0 to indicate invalid tiles, not INVALID_TILE */ - return ScriptObject::DoCommand(tile == INVALID_TILE ? (TileIndex)0U : tile , (uint32)(delta), company | expenses_type << 8 , CMD_CHANGE_BANK_BALANCE); + return ScriptObject::Command<CMD_CHANGE_BANK_BALANCE>::Do(tile == INVALID_TILE ? (TileIndex)0U : tile, (uint32)(delta), company | expenses_type << 8, {}); } /* static */ bool ScriptCompany::BuildCompanyHQ(TileIndex tile) @@ -246,7 +252,7 @@ EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY); EnforcePrecondition(false, ::IsValidTile(tile)); - return ScriptObject::DoCommand(tile, OBJECT_HQ, 0, CMD_BUILD_OBJECT); + return ScriptObject::Command<CMD_BUILD_OBJECT>::Do(tile, OBJECT_HQ, 0, {}); } /* static */ TileIndex ScriptCompany::GetCompanyHQ(CompanyID company) @@ -260,7 +266,7 @@ /* static */ bool ScriptCompany::SetAutoRenewStatus(bool autorenew) { - return ScriptObject::DoCommand(0, 0, autorenew ? 1 : 0, CMD_CHANGE_COMPANY_SETTING, "company.engine_renew"); + return ScriptObject::Command<CMD_CHANGE_COMPANY_SETTING>::Do(0, 0, autorenew ? 1 : 0, "company.engine_renew"); } /* static */ bool ScriptCompany::GetAutoRenewStatus(CompanyID company) @@ -273,7 +279,7 @@ /* static */ bool ScriptCompany::SetAutoRenewMonths(int16 months) { - return ScriptObject::DoCommand(0, 0, months, CMD_CHANGE_COMPANY_SETTING, "company.engine_renew_months"); + return ScriptObject::Command<CMD_CHANGE_COMPANY_SETTING>::Do(0, 0, months, "company.engine_renew_months"); } /* static */ int16 ScriptCompany::GetAutoRenewMonths(CompanyID company) @@ -288,7 +294,7 @@ { EnforcePrecondition(false, money >= 0); EnforcePrecondition(false, (int64)money <= UINT32_MAX); - return ScriptObject::DoCommand(0, 0, money, CMD_CHANGE_COMPANY_SETTING, "company.engine_renew_money"); + return ScriptObject::Command<CMD_CHANGE_COMPANY_SETTING>::Do(0, 0, money, "company.engine_renew_money"); } /* static */ Money ScriptCompany::GetAutoRenewMoney(CompanyID company) @@ -301,12 +307,12 @@ /* static */ bool ScriptCompany::SetPrimaryLiveryColour(LiveryScheme scheme, Colours colour) { - return ScriptObject::DoCommand(0, scheme, colour, CMD_SET_COMPANY_COLOUR); + return ScriptObject::Command<CMD_SET_COMPANY_COLOUR>::Do(0, scheme, colour, {}); } /* static */ bool ScriptCompany::SetSecondaryLiveryColour(LiveryScheme scheme, Colours colour) { - return ScriptObject::DoCommand(0, scheme | 1 << 8, colour, CMD_SET_COMPANY_COLOUR); + return ScriptObject::Command<CMD_SET_COMPANY_COLOUR>::Do(0, scheme | 1 << 8, colour, {}); } /* static */ ScriptCompany::Colours ScriptCompany::GetPrimaryLiveryColour(ScriptCompany::LiveryScheme scheme) |