src/ai/api/ai_company.cpp
branchnoai
changeset 9868 3998f2e73dda
parent 9865 f241472f09dc
child 10194 c9fdeb7450da
equal deleted inserted replaced
9867:b7d9ffe24f81 9868:3998f2e73dda
    22 	return (::IsValidPlayer((PlayerID)company) && ::GetPlayer((PlayerID)company)->is_active) ? company : INVALID_COMPANY;
    22 	return (::IsValidPlayer((PlayerID)company) && ::GetPlayer((PlayerID)company)->is_active) ? company : INVALID_COMPANY;
    23 }
    23 }
    24 
    24 
    25 /* static */ bool AICompany::SetCompanyName(const char *name)
    25 /* static */ bool AICompany::SetCompanyName(const char *name)
    26 {
    26 {
    27 	if (::StrEmpty(name)) {
    27 	EnforcePrecondition(false, !::StrEmpty(name));
    28 		AIObject::SetLastError(AIError::ERR_PRECONDITION_FAILED);
       
    29 		return false;
       
    30 	}
       
    31 
    28 
    32 	_cmd_text = name;
    29 	_cmd_text = name;
    33 	return AIObject::DoCommand(0, 0, 0, CMD_CHANGE_COMPANY_NAME);
    30 	return AIObject::DoCommand(0, 0, 0, CMD_CHANGE_COMPANY_NAME);
    34 }
    31 }
    35 
    32 
    46 	return company_name;
    43 	return company_name;
    47 }
    44 }
    48 
    45 
    49 /* static */ bool AICompany::SetPresidentName(const char *name)
    46 /* static */ bool AICompany::SetPresidentName(const char *name)
    50 {
    47 {
    51 	if (::StrEmpty(name)) {
    48 	EnforcePrecondition(false, !::StrEmpty(name));
    52 		AIObject::SetLastError(AIError::ERR_PRECONDITION_FAILED);
       
    53 		return false;
       
    54 	}
       
    55 
    49 
    56 	_cmd_text = name;
    50 	_cmd_text = name;
    57 	return AIObject::DoCommand(0, 0, 0, CMD_CHANGE_PRESIDENT_NAME);
    51 	return AIObject::DoCommand(0, 0, 0, CMD_CHANGE_PRESIDENT_NAME);
    58 }
    52 }
    59 
    53 
   104 	return LOAN_INTERVAL;
    98 	return LOAN_INTERVAL;
   105 }
    99 }
   106 
   100 
   107 /* static */ bool AICompany::SetLoanAmount(int32 loan)
   101 /* static */ bool AICompany::SetLoanAmount(int32 loan)
   108 {
   102 {
   109 	if (loan < 0 ||
   103 	EnforcePrecondition(false, loan >= 0);
   110 			(loan % GetLoanInterval()) != 0 ||
   104 	EnforcePrecondition(false, (loan % GetLoanInterval()) == 0);
   111 			loan > GetMaxLoanAmount() ||
   105 	EnforcePrecondition(false, loan <= GetMaxLoanAmount());
   112 			(loan - GetLoanAmount() + GetBankBalance(MY_COMPANY)) < 0) {
   106 	EnforcePrecondition(false, (loan - GetLoanAmount() + GetBankBalance(MY_COMPANY)) >= 0);
   113 		AIObject::SetLastError(AIError::ERR_PRECONDITION_FAILED);
       
   114 		return false;
       
   115 	}
       
   116 
   107 
   117 	if (loan == GetLoanAmount()) return true;
   108 	if (loan == GetLoanAmount()) return true;
   118 
   109 
   119 	return AIObject::DoCommand(0,
   110 	return AIObject::DoCommand(0,
   120 			abs(loan - GetLoanAmount()), 2,
   111 			abs(loan - GetLoanAmount()), 2,
   121 			(loan > GetLoanAmount()) ? CMD_INCREASE_LOAN : CMD_DECREASE_LOAN);
   112 			(loan > GetLoanAmount()) ? CMD_INCREASE_LOAN : CMD_DECREASE_LOAN);
   122 }
   113 }
   123 
   114 
   124 /* static */ bool AICompany::SetMinimumLoanAmount(int32 loan)
   115 /* static */ bool AICompany::SetMinimumLoanAmount(int32 loan)
   125 {
   116 {
   126 	if (loan < 0) {
   117 	EnforcePrecondition(false, loan >= 0);
   127 		AIObject::SetLastError(AIError::ERR_PRECONDITION_FAILED);
       
   128 		return false;
       
   129 	}
       
   130 
   118 
   131 	int32 over_interval = loan % GetLoanInterval();
   119 	int32 over_interval = loan % GetLoanInterval();
   132 	if (over_interval != 0) loan += GetLoanInterval() - over_interval;
   120 	if (over_interval != 0) loan += GetLoanInterval() - over_interval;
   133 
   121 
   134 	if (loan > GetMaxLoanAmount()) {
   122 	EnforcePrecondition(false, loan <= GetMaxLoanAmount());
   135 		AIObject::SetLastError(AIError::ERR_PRECONDITION_FAILED);
       
   136 		return false;
       
   137 	}
       
   138 
   123 
   139 	SetLoanAmount(loan);
   124 	SetLoanAmount(loan);
   140 
   125 
   141 	return GetLoanAmount() == loan;
   126 	return GetLoanAmount() == loan;
   142 }
   127 }
   143 
   128 
   144 /* static */ bool AICompany::BuildCompanyHQ(TileIndex tile)
   129 /* static */ bool AICompany::BuildCompanyHQ(TileIndex tile)
   145 {
   130 {
   146 	if (!::IsValidTile(tile)) {
   131 	EnforcePrecondition(false, ::IsValidTile(tile));
   147 		AIObject::SetLastError(AIError::ERR_PRECONDITION_FAILED);
       
   148 		return false;
       
   149 	}
       
   150 
   132 
   151 	return AIObject::DoCommand(tile, 0, 0, CMD_BUILD_COMPANY_HQ);
   133 	return AIObject::DoCommand(tile, 0, 0, CMD_BUILD_COMPANY_HQ);
   152 }
   134 }
   153 
   135 
   154 /* static */ TileIndex AICompany::GetCompanyHQ(CompanyIndex company)
   136 /* static */ TileIndex AICompany::GetCompanyHQ(CompanyIndex company)