172 break; |
172 break; |
173 } |
173 } |
174 return INVALID_RAILTYPE; |
174 return INVALID_RAILTYPE; |
175 } |
175 } |
176 |
176 |
177 bool HasRailtypeAvail(const PlayerID p, const RailType railtype) |
177 bool HasRailtypeAvail(const CompanyID company, const RailType railtype) |
178 { |
178 { |
179 return HasBit(GetPlayer(p)->avail_railtypes, railtype); |
179 return HasBit(GetCompany(company)->avail_railtypes, railtype); |
180 } |
180 } |
181 |
181 |
182 bool ValParamRailtype(const RailType rail) |
182 bool ValParamRailtype(const RailType rail) |
183 { |
183 { |
184 return HasRailtypeAvail(_current_player, rail); |
184 return HasRailtypeAvail(_current_company, rail); |
185 } |
185 } |
186 |
186 |
187 RailType GetBestRailtype(const PlayerID p) |
187 RailType GetBestRailtype(const CompanyID company) |
188 { |
188 { |
189 if (HasRailtypeAvail(p, RAILTYPE_MAGLEV)) return RAILTYPE_MAGLEV; |
189 if (HasRailtypeAvail(company, RAILTYPE_MAGLEV)) return RAILTYPE_MAGLEV; |
190 if (HasRailtypeAvail(p, RAILTYPE_MONO)) return RAILTYPE_MONO; |
190 if (HasRailtypeAvail(company, RAILTYPE_MONO)) return RAILTYPE_MONO; |
191 if (HasRailtypeAvail(p, RAILTYPE_ELECTRIC)) return RAILTYPE_ELECTRIC; |
191 if (HasRailtypeAvail(company, RAILTYPE_ELECTRIC)) return RAILTYPE_ELECTRIC; |
192 return RAILTYPE_RAIL; |
192 return RAILTYPE_RAIL; |
193 } |
193 } |
194 |
194 |
195 RailTypes GetPlayerRailtypes(PlayerID p) |
195 RailTypes GetCompanyRailtypes(CompanyID company) |
196 { |
196 { |
197 RailTypes rt = RAILTYPES_NONE; |
197 RailTypes rt = RAILTYPES_NONE; |
198 |
198 |
199 Engine *e; |
199 Engine *e; |
200 FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { |
200 FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { |
201 const EngineInfo *ei = &e->info; |
201 const EngineInfo *ei = &e->info; |
202 |
202 |
203 if (HasBit(ei->climates, _settings_game.game_creation.landscape) && |
203 if (HasBit(ei->climates, _settings_game.game_creation.landscape) && |
204 (HasBit(e->player_avail, p) || _date >= e->intro_date + 365)) { |
204 (HasBit(e->company_avail, company) || _date >= e->intro_date + 365)) { |
205 const RailVehicleInfo *rvi = &e->u.rail; |
205 const RailVehicleInfo *rvi = &e->u.rail; |
206 |
206 |
207 if (rvi->railveh_type != RAILVEH_WAGON) { |
207 if (rvi->railveh_type != RAILVEH_WAGON) { |
208 assert(rvi->railtype < RAILTYPE_END); |
208 assert(rvi->railtype < RAILTYPE_END); |
209 SetBit(rt, rvi->railtype); |
209 SetBit(rt, rvi->railtype); |