rubidium@9374: /* $Id$ */ rubidium@9374: rubidium@9436: /** @file ai_company.cpp handles the functions of the AICompany class */ rubidium@9374: rubidium@9430: #include "ai_company.hpp" truelight@9441: #include "../../command.h" rubidium@9430: #include "../../player.h" rubidium@9430: #include "../../economy.h" rubidium@9430: #include "../../strings.h" rubidium@9430: rubidium@9430: bool AICompany::SetCompanyName(const char *name) rubidium@9430: { rubidium@9430: if (name == NULL) return false; rubidium@9430: rubidium@9430: _cmd_text = name; truelight@9575: return this->DoCommand(0, 0, 0, CMD_CHANGE_COMPANY_NAME); rubidium@9430: } rubidium@9430: rubidium@9430: char *AICompany::GetCompanyName() rubidium@9430: { rubidium@9430: static const int len = 64; rubidium@9430: char *company_name = MallocT(len); rubidium@9430: GetString(company_name, GetPlayer(_current_player)->name_1, &company_name[len - 1]); rubidium@9430: rubidium@9430: return company_name; rubidium@9430: } rubidium@9374: truelight@9575: bool AICompany::SetPresidentName(const char *name) truelight@9575: { truelight@9575: if (name == NULL) return false; truelight@9575: truelight@9575: _cmd_text = name; truelight@9575: return this->DoCommand(0, 0, 0, CMD_CHANGE_PRESIDENT_NAME); truelight@9575: } truelight@9575: truelight@9575: char *AICompany::GetPresidentName() truelight@9575: { truelight@9575: static const int len = 64; truelight@9575: char *president_name = MallocT(len); truelight@9575: GetString(president_name, GetPlayer(_current_player)->president_name_1, &president_name[len - 1]); truelight@9575: truelight@9575: return president_name; truelight@9575: } truelight@9575: rubidium@9374: int32 AICompany::GetCompanyValue() rubidium@9374: { rubidium@9374: return GetPlayer(_current_player)->cur_economy.company_value; rubidium@9374: } rubidium@9374: rubidium@9374: int32 AICompany::GetBankBalance() rubidium@9374: { rubidium@9374: return GetPlayer(_current_player)->player_money; rubidium@9374: } rubidium@9374: rubidium@9374: int32 AICompany::GetLoanAmount() rubidium@9374: { rubidium@9374: return GetPlayer(_current_player)->current_loan; rubidium@9374: } rubidium@9374: rubidium@9374: int32 AICompany::GetMaxLoanAmount() rubidium@9374: { rubidium@9374: return _economy.max_loan; rubidium@9374: } rubidium@9374: rubidium@9376: int32 AICompany::GetLoanInterval() rubidium@9376: { rubidium@9376: return LOAN_INTERVAL; rubidium@9376: } rubidium@9376: rubidium@9374: bool AICompany::SetLoanAmount(int32 loan) rubidium@9374: { rubidium@9374: if (loan < 0 || rubidium@9376: (loan % this->GetLoanInterval()) != 0 || rubidium@9374: loan > this->GetMaxLoanAmount() || rubidium@9374: (loan - this->GetLoanAmount() + this->GetBankBalance()) < 0) { rubidium@9374: return false; rubidium@9374: } rubidium@9374: rubidium@9462: if (loan == this->GetLoanAmount()) return true; truelight@9414: rubidium@9462: return this->DoCommand(0, truelight@9486: abs(loan - this->GetLoanAmount()), 2, rubidium@9462: (loan > this->GetLoanAmount()) ? CMD_INCREASE_LOAN : CMD_DECREASE_LOAN); rubidium@9374: }