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) |