Mercurial > hg > openttd
changeset 17799:2dbb9286ae7a draft
(svn r22584) -Add: [NoAI] several functions to AICompany to find out performance information (Morloth)
author | yexo <yexo@openttd.org> |
---|---|
date | Mon, 13 Jun 2011 15:23:20 +0000 |
parents | 4581fc7adab8 |
children | 1d09833dd1cb |
files | bin/ai/compat_0.7.nut bin/ai/compat_1.0.nut bin/ai/compat_1.1.nut bin/ai/regression/regression.nut bin/ai/regression/regression.txt src/ai/api/ai_changelog.hpp src/ai/api/ai_company.cpp src/ai/api/ai_company.hpp src/ai/api/ai_company.hpp.sq |
diffstat | 9 files changed, 423 insertions(+), 128 deletions(-) [+] |
line wrap: on
line diff
--- a/bin/ai/compat_0.7.nut +++ b/bin/ai/compat_0.7.nut @@ -321,3 +321,8 @@ AIList.ChangeItem <- AIList.SetValue; AIRail.ERR_NONUNIFORM_STATIONS_DISABLED <- 0xFFFF; + +AICompany.GetCompanyValue <- function(company) +{ + return AICompany.GetQuarterlyCompanyValue(company, AICompany.CURRENT_QUARTER); +}
--- a/bin/ai/compat_1.0.nut +++ b/bin/ai/compat_1.0.nut @@ -72,3 +72,8 @@ AIList.ChangeItem <- AIList.SetValue; AIRail.ERR_NONUNIFORM_STATIONS_DISABLED <- 0xFFFF; + +AICompany.GetCompanyValue <- function(company) +{ + return AICompany.GetQuarterlyCompanyValue(company, AICompany.CURRENT_QUARTER); +}
--- a/bin/ai/compat_1.1.nut +++ b/bin/ai/compat_1.1.nut @@ -8,3 +8,8 @@ */ AILog.Info("1.1 API compatability in effect."); + +AICompany.GetCompanyValue <- function(company) +{ + return AICompany.GetQuarterlyCompanyValue(company, AICompany.CURRENT_QUARTER); +}
--- a/bin/ai/regression/regression.nut +++ b/bin/ai/regression/regression.nut @@ -394,50 +394,57 @@ } } - print(" GetName(): " + AICompany.GetName(AICompany.COMPANY_SELF)); - print(" GetPresidentName(): " + AICompany.GetPresidentName(AICompany.COMPANY_SELF)); - print(" SetPresidentName(): " + AICompany.SetPresidentName("Regression AI")); - print(" GetPresidentName(): " + AICompany.GetPresidentName(AICompany.COMPANY_SELF)); - print(" GetCompanyValue(): " + AICompany.GetCompanyValue(AICompany.COMPANY_SELF)); - print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); - print(" GetName(): " + AICompany.GetName(240)); - print(" GetLoanAmount(): " + AICompany.GetLoanAmount()); - print(" GetMaxLoanAmount(): " + AICompany.GetMaxLoanAmount()); - print(" GetLoanInterval(): " + AICompany.GetLoanInterval()); - print(" SetLoanAmount(1): " + AICompany.SetLoanAmount(1)); - print(" SetLoanAmount(100): " + AICompany.SetLoanAmount(100)); - print(" SetLoanAmount(10000): " + AICompany.SetLoanAmount(10000)); - print(" GetLastErrorString(): " + AIError.GetLastErrorString()); - print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); - print(" GetLoanAmount(): " + AICompany.GetLoanAmount()); - print(" SetMinimumLoanAmount(31337): " + AICompany.SetMinimumLoanAmount(31337)); - print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); - print(" GetLoanAmount(): " + AICompany.GetLoanAmount()); - print(" SetLoanAmount(10000): " + AICompany.SetLoanAmount(AICompany.GetMaxLoanAmount())); - print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); - print(" GetLoanAmount(): " + AICompany.GetLoanAmount()); - print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF)); - print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(127, 129))); - print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF)); - print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(129, 129))); - print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF)); - print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(129, 128))); - print(" GetLastErrorString(): " + AIError.GetLastErrorString()); - print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF)); - print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true)); - print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF)); - print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true)); - print(" SetAutoRenewStatus(false); " + AICompany.SetAutoRenewStatus(false)); - print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF)); - print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12)); - print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF)); - print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12)); - print(" SetAutoRenewMonths(6); " + AICompany.SetAutoRenewMonths(6)); - print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF)); - print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000)); - print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF)); - print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000)); - print(" SetAutoRenewMoney(100000); " + AICompany.SetAutoRenewMoney(100000)); + print(" GetName(): " + AICompany.GetName(AICompany.COMPANY_SELF)); + print(" GetPresidentName(): " + AICompany.GetPresidentName(AICompany.COMPANY_SELF)); + print(" SetPresidentName(): " + AICompany.SetPresidentName("Regression AI")); + print(" GetPresidentName(): " + AICompany.GetPresidentName(AICompany.COMPANY_SELF)); + print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); + print(" GetName(): " + AICompany.GetName(240)); + print(" GetLoanAmount(): " + AICompany.GetLoanAmount()); + print(" GetMaxLoanAmount(): " + AICompany.GetMaxLoanAmount()); + print(" GetLoanInterval(): " + AICompany.GetLoanInterval()); + print(" SetLoanAmount(1): " + AICompany.SetLoanAmount(1)); + print(" SetLoanAmount(100): " + AICompany.SetLoanAmount(100)); + print(" SetLoanAmount(10000): " + AICompany.SetLoanAmount(10000)); + print(" GetLastErrorString(): " + AIError.GetLastErrorString()); + print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); + print(" GetLoanAmount(): " + AICompany.GetLoanAmount()); + print(" SetMinimumLoanAmount(31337): " + AICompany.SetMinimumLoanAmount(31337)); + print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); + print(" GetLoanAmount(): " + AICompany.GetLoanAmount()); + print(" SetLoanAmount(10000): " + AICompany.SetLoanAmount(AICompany.GetMaxLoanAmount())); + print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); + print(" GetLoanAmount(): " + AICompany.GetLoanAmount()); + print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF)); + print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(127, 129))); + print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF)); + print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(129, 129))); + print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF)); + print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(129, 128))); + print(" GetLastErrorString(): " + AIError.GetLastErrorString()); + print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF)); + print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true)); + print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF)); + print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true)); + print(" SetAutoRenewStatus(false); " + AICompany.SetAutoRenewStatus(false)); + print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF)); + print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12)); + print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF)); + print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12)); + print(" SetAutoRenewMonths(6); " + AICompany.SetAutoRenewMonths(6)); + print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF)); + print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000)); + print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF)); + print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000)); + print(" SetAutoRenewMoney(100000); " + AICompany.SetAutoRenewMoney(100000)); + for (local i = -1; i <= AICompany.EARLIEST_QUARTER; i++) { + print(" Quarter: " + i); + print(" GetQuarterlyIncome(); " + AICompany.GetQuarterlyIncome(AICompany.COMPANY_SELF, i)); + print(" GetQuarterlyExpenses(); " + AICompany.GetQuarterlyExpenses(AICompany.COMPANY_SELF, i)); + print(" GetQuarterlyCargoDelivered(); " + AICompany.GetQuarterlyCargoDelivered(AICompany.COMPANY_SELF, i)); + print(" GetQuarterlyPerformanceRating(); " + AICompany.GetQuarterlyPerformanceRating(AICompany.COMPANY_SELF, i)); + print(" GetQuarterlyCompanyValue(); " + AICompany.GetQuarterlyCompanyValue(AICompany.COMPANY_SELF, i)); + } } function Regression::Engine()
--- a/bin/ai/regression/regression.txt +++ b/bin/ai/regression/regression.txt @@ -584,50 +584,205 @@ SetName(): true SetName(): false GetLastErrorString(): ERR_NAME_IS_NOT_UNIQUE - GetName(): Regression - GetPresidentName(): I. McAlpine - SetPresidentName(): true - GetPresidentName(): Regression AI - GetCompanyValue(): 1 - GetBankBalance(): 100000 - GetName(): (null : 0x00000000) - GetLoanAmount(): 100000 - GetMaxLoanAmount(): 500000 - GetLoanInterval(): 10000 - SetLoanAmount(1): false - SetLoanAmount(100): false - SetLoanAmount(10000): true - GetLastErrorString(): ERR_NONE - GetBankBalance(): 10000 - GetLoanAmount(): 10000 - SetMinimumLoanAmount(31337): true - GetBankBalance(): 40000 - GetLoanAmount(): 40000 - SetLoanAmount(10000): true - GetBankBalance(): 500000 - GetLoanAmount(): 500000 - GetCompanyHQ(): -1 - BuildCompanyHQ(): true - GetCompanyHQ(): 33151 - BuildCompanyHQ(): true - GetCompanyHQ(): 33153 - BuildCompanyHQ(): false - GetLastErrorString(): ERR_AREA_NOT_CLEAR - GetAutoRenewStatus(); false - SetAutoRenewStatus(true); true - GetAutoRenewStatus(); true - SetAutoRenewStatus(true); true - SetAutoRenewStatus(false); true - GetAutoRenewMonths(); 6 - SetAutoRenewMonths(-12); true - GetAutoRenewMonths(); -12 - SetAutoRenewMonths(-12); true - SetAutoRenewMonths(6); true - GetAutoRenewMoney(); 100000 - SetAutoRenewMoney(200000); true - GetAutoRenewMoney(); 200000 - SetAutoRenewMoney(200000); true - SetAutoRenewMoney(100000); true + GetName(): Regression + GetPresidentName(): I. McAlpine + SetPresidentName(): true + GetPresidentName(): Regression AI + GetBankBalance(): 100000 + GetName(): (null : 0x00000000) + GetLoanAmount(): 100000 + GetMaxLoanAmount(): 500000 + GetLoanInterval(): 10000 + SetLoanAmount(1): false + SetLoanAmount(100): false + SetLoanAmount(10000): true + GetLastErrorString(): ERR_NONE + GetBankBalance(): 10000 + GetLoanAmount(): 10000 + SetMinimumLoanAmount(31337): true + GetBankBalance(): 40000 + GetLoanAmount(): 40000 + SetLoanAmount(10000): true + GetBankBalance(): 500000 + GetLoanAmount(): 500000 + GetCompanyHQ(): -1 + BuildCompanyHQ(): true + GetCompanyHQ(): 33151 + BuildCompanyHQ(): true + GetCompanyHQ(): 33153 + BuildCompanyHQ(): false + GetLastErrorString(): ERR_AREA_NOT_CLEAR + GetAutoRenewStatus(); false + SetAutoRenewStatus(true); true + GetAutoRenewStatus(); true + SetAutoRenewStatus(true); true + SetAutoRenewStatus(false); true + GetAutoRenewMonths(); 6 + SetAutoRenewMonths(-12); true + GetAutoRenewMonths(); -12 + SetAutoRenewMonths(-12); true + SetAutoRenewMonths(6); true + GetAutoRenewMoney(); 100000 + SetAutoRenewMoney(200000); true + GetAutoRenewMoney(); 200000 + SetAutoRenewMoney(200000); true + SetAutoRenewMoney(100000); true + Quarter: -1 + GetQuarterlyIncome(); -1 + GetQuarterlyExpenses(); -1 + GetQuarterlyCargoDelivered(); -1 + GetQuarterlyPerformanceRating(); -1 + GetQuarterlyCompanyValue(); -1 + Quarter: 0 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); -210 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); -1 + GetQuarterlyCompanyValue(); 1 + Quarter: 1 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 2 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 3 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 4 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 5 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 6 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 7 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 8 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 9 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 10 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 11 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 12 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 13 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 14 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 15 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 16 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 17 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 18 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 19 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 20 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 21 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 22 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 23 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 + Quarter: 24 + GetQuarterlyIncome(); 0 + GetQuarterlyExpenses(); 0 + GetQuarterlyCargoDelivered(); 0 + GetQuarterlyPerformanceRating(); 0 + GetQuarterlyCompanyValue(); 0 --AIAirport-- IsHangarTile(): false
--- a/src/ai/api/ai_changelog.hpp +++ b/src/ai/api/ai_changelog.hpp @@ -19,6 +19,17 @@ * * 1.2.0 is not yet released. The following changes are not set in stone yet. * + * API additions: + * + * \li AICompany::GetQuarterlyIncome + * \li AICompany::GetQuarterlyExpenses + * \li AICompany::GetQuarterlyCargoDelivered + * \li AICompany::GetQuarterlyPerformanceRating + * \li AICompany::GetQuarterlyCompanyValue + * + * API removals: + * \li AICompany::GetCompanyValue, use AICompany::GetQuarterlyCompanyValue instead. + * * \b 1.1.0 * * API additions:
--- a/src/ai/api/ai_company.cpp +++ b/src/ai/api/ai_company.cpp @@ -101,14 +101,65 @@ return HasBit(ge, ::GENDER_FEMALE) ? GENDER_FEMALE : GENDER_MALE; } -/* static */ Money AICompany::GetCompanyValue(AICompany::CompanyID company) +/* static */ Money AICompany::GetQuarterlyIncome(AICompany::CompanyID company, uint32 quarter) +{ + company = ResolveCompanyID(company); + if (company == COMPANY_INVALID) return -1; + if (quarter > EARLIEST_QUARTER) return -1; + + if (quarter == CURRENT_QUARTER) { + return ::Company::Get((::CompanyID)company)->cur_economy.income; + } + return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].income; +} + +/* static */ Money AICompany::GetQuarterlyExpenses(AICompany::CompanyID company, uint32 quarter) +{ + company = ResolveCompanyID(company); + if (company == COMPANY_INVALID) return -1; + if (quarter > EARLIEST_QUARTER) return -1; + + if (quarter == CURRENT_QUARTER) { + return ::Company::Get((::CompanyID)company)->cur_economy.expenses; + } + return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].expenses; +} + +/* static */ int32 AICompany::GetQuarterlyCargoDelivered(AICompany::CompanyID company, uint32 quarter) { company = ResolveCompanyID(company); if (company == COMPANY_INVALID) return -1; + if (quarter > EARLIEST_QUARTER) return -1; - return ::CalculateCompanyValue(::Company::Get((CompanyID)company)); + if (quarter == CURRENT_QUARTER) { + return ::Company::Get((::CompanyID)company)->cur_economy.delivered_cargo; + } + return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].delivered_cargo; } +/* static */ int32 AICompany::GetQuarterlyPerformanceRating(AICompany::CompanyID company, uint32 quarter) +{ + company = ResolveCompanyID(company); + if (company == COMPANY_INVALID) return -1; + if (quarter > EARLIEST_QUARTER) return -1; + if (quarter == CURRENT_QUARTER) return -1; + + return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].performance_history; +} + +/* static */ Money AICompany::GetQuarterlyCompanyValue(AICompany::CompanyID company, uint32 quarter) +{ + company = ResolveCompanyID(company); + if (company == COMPANY_INVALID) return -1; + if (quarter > EARLIEST_QUARTER) return -1; + + if (quarter == CURRENT_QUARTER) { + return ::CalculateCompanyValue(::Company::Get((::CompanyID)company)); + } + return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].company_value; +} + + /* static */ Money AICompany::GetBankBalance(AICompany::CompanyID company) { company = ResolveCompanyID(company);
--- a/src/ai/api/ai_company.hpp +++ b/src/ai/api/ai_company.hpp @@ -22,6 +22,12 @@ /** Get the name of this class to identify it towards squirrel. */ static const char *GetClassName() { return "AICompany"; } + /** The range of possible quarters to get company information of. */ + enum Quarter { + CURRENT_QUARTER = 0, ///< The current quarter. + EARLIEST_QUARTER = MAX_HISTORY_QUARTERS, ///< The earliest quarter company information is available for. + }; + /** Different constants related to CompanyID. */ enum CompanyID { COMPANY_FIRST = 0, ///< The first available company. @@ -149,14 +155,6 @@ static Money GetLoanInterval(); /** - * Gets the current value of the given company. - * @param company The company to get the company value of. - * @pre ResolveCompanyID(company) != COMPANY_INVALID. - * @return The current value of the given company. - */ - static Money GetCompanyValue(CompanyID company); - - /** * Gets the bank balance. In other words, the amount of money the given company can spent. * @param company The company to get the bank balance of. * @pre ResolveCompanyID(company) != COMPANY_INVALID. @@ -165,6 +163,58 @@ static Money GetBankBalance(CompanyID company); /** + * Get the income of the company in the given quarter. + * @param company The company to get the quarterly income of. + * @param quarter The quarter to get the income of. + * @pre ResolveCompanyID(company) != COMPANY_INVALID. + * @pre quarter <= EARLIEST_QUARTER. + * @return The bruto income of the company in the given quarter. + */ + static Money GetQuarterlyIncome(CompanyID company, uint32 quarter); + + /** + * Get the expenses of the company in the given quarter. + * @param company The company to get the quarterly expenses of. + * @param quarter The quarter to get the expenses of. + * @pre ResolveCompanyID(company) != COMPANY_INVALID. + * @pre quarter <= EARLIEST_QUARTER. + * @return The expenses of the company in the given quarter. + */ + static Money GetQuarterlyExpenses(CompanyID company, uint32 quarter); + + /** + * Get the amount of cargo delivered by the given company in the given quarter. + * @param company The company to get the amount of delivered cargo of. + * @param quarter The quarter to get the amount of delivered cargo of. + * @pre ResolveCompanyID(company) != COMPANY_INVALID. + * @pre quarter <= EARLIEST_QUARTER. + * @return The amount of cargo delivered by the given company in the given quarter. + */ + static int32 GetQuarterlyCargoDelivered(CompanyID company, uint32 quarter); + + /** + * Get the performance rating of the given company in the given quarter. + * @param company The company to get the performance rating of. + * @param quarter The quarter to get the performance rating of. + * @pre ResolveCompanyID(company) != COMPANY_INVALID. + * @pre quarter <= EARLIEST_QUARTER. + * @pre quarter != CURRENT_QUARTER. + * @note The performance rating is calculated after every quarter, so the value for CURRENT_QUARTER is undefined. + * @return The performance rating of the given company in the given quarter. + */ + static int32 GetQuarterlyPerformanceRating(CompanyID company, uint32 quarter); + + /** + * Get the value of the company in the given quarter. + * @param company The company to get the value of. + * @param quarter The quarter to get the value of. + * @pre ResolveCompanyID(company) != COMPANY_INVALID. + * @pre quarter <= EARLIEST_QUARTER. + * @return The value of the company in the given quarter. + */ + static Money GetQuarterlyCompanyValue(CompanyID company, uint32 quarter); + + /** * Build your company's HQ on the given tile. * @param tile The tile to build your HQ on, this tile is the most nothern tile of your HQ. * @pre AIMap::IsValidTile(tile).
--- a/src/ai/api/ai_company.hpp.sq +++ b/src/ai/api/ai_company.hpp.sq @@ -32,37 +32,43 @@ SQAICompany.PreRegister(engine); SQAICompany.AddConstructor<void (AICompany::*)(), 1>(engine, "x"); - SQAICompany.DefSQConst(engine, AICompany::COMPANY_FIRST, "COMPANY_FIRST"); - SQAICompany.DefSQConst(engine, AICompany::COMPANY_LAST, "COMPANY_LAST"); - SQAICompany.DefSQConst(engine, AICompany::COMPANY_SELF, "COMPANY_SELF"); - SQAICompany.DefSQConst(engine, AICompany::COMPANY_INVALID, "COMPANY_INVALID"); - SQAICompany.DefSQConst(engine, AICompany::GENDER_MALE, "GENDER_MALE"); - SQAICompany.DefSQConst(engine, AICompany::GENDER_FEMALE, "GENDER_FEMALE"); - SQAICompany.DefSQConst(engine, AICompany::GENDER_INVALID, "GENDER_INVALID"); + SQAICompany.DefSQConst(engine, AICompany::CURRENT_QUARTER, "CURRENT_QUARTER"); + SQAICompany.DefSQConst(engine, AICompany::EARLIEST_QUARTER, "EARLIEST_QUARTER"); + SQAICompany.DefSQConst(engine, AICompany::COMPANY_FIRST, "COMPANY_FIRST"); + SQAICompany.DefSQConst(engine, AICompany::COMPANY_LAST, "COMPANY_LAST"); + SQAICompany.DefSQConst(engine, AICompany::COMPANY_SELF, "COMPANY_SELF"); + SQAICompany.DefSQConst(engine, AICompany::COMPANY_INVALID, "COMPANY_INVALID"); + SQAICompany.DefSQConst(engine, AICompany::GENDER_MALE, "GENDER_MALE"); + SQAICompany.DefSQConst(engine, AICompany::GENDER_FEMALE, "GENDER_FEMALE"); + SQAICompany.DefSQConst(engine, AICompany::GENDER_INVALID, "GENDER_INVALID"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::ResolveCompanyID, "ResolveCompanyID", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::IsMine, "IsMine", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::SetName, "SetName", 2, ".."); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetName, "GetName", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentName, "SetPresidentName", 2, ".."); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetPresidentName, "GetPresidentName", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentGender, "SetPresidentGender", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetPresidentGender, "GetPresidentGender", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::SetLoanAmount, "SetLoanAmount", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::SetMinimumLoanAmount, "SetMinimumLoanAmount", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetLoanAmount, "GetLoanAmount", 1, "."); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetMaxLoanAmount, "GetMaxLoanAmount", 1, "."); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetLoanInterval, "GetLoanInterval", 1, "."); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetCompanyValue, "GetCompanyValue", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetBankBalance, "GetBankBalance", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::BuildCompanyHQ, "BuildCompanyHQ", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetCompanyHQ, "GetCompanyHQ", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::SetAutoRenewStatus, "SetAutoRenewStatus", 2, ".b"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetAutoRenewStatus, "GetAutoRenewStatus", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::SetAutoRenewMonths, "SetAutoRenewMonths", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetAutoRenewMonths, "GetAutoRenewMonths", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::SetAutoRenewMoney, "SetAutoRenewMoney", 2, ".i"); - SQAICompany.DefSQStaticMethod(engine, &AICompany::GetAutoRenewMoney, "GetAutoRenewMoney", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::ResolveCompanyID, "ResolveCompanyID", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::IsMine, "IsMine", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::SetName, "SetName", 2, ".."); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetName, "GetName", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentName, "SetPresidentName", 2, ".."); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetPresidentName, "GetPresidentName", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentGender, "SetPresidentGender", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetPresidentGender, "GetPresidentGender", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::SetLoanAmount, "SetLoanAmount", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::SetMinimumLoanAmount, "SetMinimumLoanAmount", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetLoanAmount, "GetLoanAmount", 1, "."); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetMaxLoanAmount, "GetMaxLoanAmount", 1, "."); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetLoanInterval, "GetLoanInterval", 1, "."); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetQuarterlyIncome, "GetQuarterlyIncome", 3, ".ii"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetQuarterlyExpenses, "GetQuarterlyExpenses", 3, ".ii"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetQuarterlyCargoDelivered, "GetQuarterlyCargoDelivered", 3, ".ii"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetQuarterlyPerformanceRating, "GetQuarterlyPerformanceRating", 3, ".ii"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetQuarterlyCompanyValue, "GetQuarterlyCompanyValue", 3, ".ii"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetBankBalance, "GetBankBalance", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::BuildCompanyHQ, "BuildCompanyHQ", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetCompanyHQ, "GetCompanyHQ", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::SetAutoRenewStatus, "SetAutoRenewStatus", 2, ".b"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetAutoRenewStatus, "GetAutoRenewStatus", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::SetAutoRenewMonths, "SetAutoRenewMonths", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetAutoRenewMonths, "GetAutoRenewMonths", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::SetAutoRenewMoney, "SetAutoRenewMoney", 2, ".i"); + SQAICompany.DefSQStaticMethod(engine, &AICompany::GetAutoRenewMoney, "GetAutoRenewMoney", 2, ".i"); SQAICompany.PostRegister(engine); }