Add: [GS] Allow to set max loan for each company separately (#11224)
This commit is contained in:
@@ -47,6 +47,8 @@
|
||||
* \li GSCompany::SetAutoRenewStatus
|
||||
* \li GSCompany::SetAutoRenewMonths
|
||||
* \li GSCompany::SetAutoRenewMoney
|
||||
* \li GSCompany::SetMaxLoanAmountForCompany
|
||||
* \li GSCompany::ResetMaxLoanAmountForCompany
|
||||
* \li GSGameSettings::IsDisabledVehicleType
|
||||
* \li GSGroup::GroupID
|
||||
* \li GSGroup::IsValidGroup
|
||||
|
@@ -192,7 +192,32 @@
|
||||
|
||||
/* static */ Money ScriptCompany::GetMaxLoanAmount()
|
||||
{
|
||||
return _economy.max_loan;
|
||||
if (ScriptCompanyMode::IsDeity()) return _economy.max_loan;
|
||||
|
||||
ScriptCompany::CompanyID company = ResolveCompanyID(COMPANY_SELF);
|
||||
if (company == COMPANY_INVALID) return -1;
|
||||
|
||||
return ::Company::Get(company)->GetMaxLoan();
|
||||
}
|
||||
|
||||
/* static */ bool ScriptCompany::SetMaxLoanAmountForCompany(CompanyID company, Money amount)
|
||||
{
|
||||
EnforceDeityMode(false);
|
||||
EnforcePrecondition(false, amount >= 0 && amount <= (Money)MAX_LOAN_LIMIT);
|
||||
|
||||
company = ResolveCompanyID(company);
|
||||
EnforcePrecondition(false, company != COMPANY_INVALID);
|
||||
return ScriptObject::Command<CMD_SET_COMPANY_MAX_LOAN>::Do((::CompanyID)company, amount);
|
||||
}
|
||||
|
||||
/* static */ bool ScriptCompany::ResetMaxLoanAmountForCompany(CompanyID company)
|
||||
{
|
||||
EnforceDeityMode(false);
|
||||
|
||||
company = ResolveCompanyID(company);
|
||||
EnforcePrecondition(false, company != COMPANY_INVALID);
|
||||
|
||||
return ScriptObject::Command<CMD_SET_COMPANY_MAX_LOAN>::Do((::CompanyID)company, COMPANY_MAX_LOAN_DEFAULT);
|
||||
}
|
||||
|
||||
/* static */ Money ScriptCompany::GetLoanInterval()
|
||||
|
@@ -217,12 +217,38 @@ public:
|
||||
static Money GetLoanAmount();
|
||||
|
||||
/**
|
||||
* Gets the maximum amount your company can loan.
|
||||
* Gets the maximum amount your company can loan. In deity mode returns the global max loan.
|
||||
* @return The maximum amount your company can loan.
|
||||
* @post GetLoanInterval() is always a multiplier of the return value.
|
||||
*/
|
||||
static Money GetMaxLoanAmount();
|
||||
|
||||
/**
|
||||
* Sets the max amount of money company can loan.
|
||||
* @param company The company ID.
|
||||
* @param amount Max loan amount. Will be rounded down to a multiple of GetLoanInterval().
|
||||
* @return True, if the max loan was changed.
|
||||
* @pre ScriptCompanyMode::IsDeity().
|
||||
* @pre amount >= 0.
|
||||
* @pre ResolveCompanyID(company) != COMPANY_INVALID.
|
||||
* @note You need to create your own news message to inform about max loan change.
|
||||
* @note Max loan value set with this method is not affected by inflation.
|
||||
* @api -ai
|
||||
*/
|
||||
static bool SetMaxLoanAmountForCompany(CompanyID company, Money amount);
|
||||
|
||||
/**
|
||||
* Makes the max amount of money company can loan follow the global max loan setting.
|
||||
* @param company The company ID.
|
||||
* @return True, if the max loan was reset.
|
||||
* @pre ScriptCompanyMode::IsDeity().
|
||||
* @pre amount >= 0 && amount <= MAX_LOAN_LIMIT.
|
||||
* @pre ResolveCompanyID(company) != COMPANY_INVALID.
|
||||
* @note You need to create your own news message to inform about max loan change.
|
||||
* @api -ai
|
||||
*/
|
||||
static bool ResetMaxLoanAmountForCompany(CompanyID company);
|
||||
|
||||
/**
|
||||
* Gets the interval/loan step.
|
||||
* @return The loan step.
|
||||
|
Reference in New Issue
Block a user