Define the WormAirManager class which handles airports and airplanes. More...
Public Member Functions | |
constructor | WormAirManager () |
Create an instance of WormAirManager and initialize our variables. | |
function | AfterLoading () |
Do any necessary processing after a savegame has been loaded. | |
function | LoadFromScratch () |
Try to load existing air routes and towns used from scratch. | |
function | UpdateAirportUpgradeList () |
Update the upgrade_wanted list of towns with airports that can and should be upgraded. | |
function | SendAirplanesOffAirport (town_id, station_id) |
Send all airplanes that are currently on this (assumed closed) airport to their next order. | |
function | UpgradeLargeToMetropolitan (nearest_town, station_id, station_tile) |
Tries to upgrade airport from large to metropolitan in the same location since they are the same size. | |
function | IsAirportEmpty (station_id) |
Check whether the airport (including depots) is empty, meaning no airplanes. | |
function | UpgradeSmall (nearest_town, station_id, station_tile, airport_type, other_station_tile) |
Tries to upgrade airport from small to either large or metropolitan. | |
function | TryToBuildAirport (tile_1, tile_2, is_first_airport, airport_type) |
Try to build an airport. | |
function | ComputeDistances () |
Compute squared min and max distances based on our AI settings. | |
function | FindAirportSpotInTown (town, airport_type, airport_width, airport_height, coverage_radius, center_tile, minimum_acceptance, add_to_blacklist=true, old_airport_type=AIAirport.AT_INVALID) |
Find a candidate spot in the specified town to build an airport of the specified type. | |
Debugging output functions | |
function | DebugListTownsUsed () |
List of towns used and stations near those towns. | |
function | DebugListTowns (towns_list) |
List all towns in the supplied list. | |
function | DebugListRoutes () |
List all routes: per route all stations and all vehicles on that route with relevant info. | |
function | DebugListRoute (route) |
List all route info in the supplied list. | |
function | DebugListRouteInfo () |
List all our air routes. | |
function | DebugListVehiclesSentToDepot () |
List all vehicles that were sent to depot to be sold. | |
function | DebugVehicleInfo (veh) |
Show info about the specified vehicle. | |
Airport handling functions | |
function | RemoveAirport (tile) |
Remove airport at specified tile. | |
function | GetOptimalAvailableAirportType () |
Get the optimal type of airport that is available. | |
function | GetAiportTileOtherEndOfRoute (town_id, station_tile) |
Get tile of airport at the other end of the route. | |
function | UpdateAirportTileInfo (town_idx, station_id, old_tile) |
Update the airport station tile info in our lists after upgrading airport. | |
function | ReplaceAirportTileInfo (old_town_idx, old_tile, new_tile, other_end_of_route_tile) |
Replace the airport town and station tile info in our lists and update orders. | |
function | IsWithinNoiseLimit (tile, old_airport_type, new_airport_type) |
Determines whether an airport at a given tile is allowed by the town authorities because of the noise level. | |
function | CheckForAirportsNeedingToBeUpgraded () |
Checks all airports to see if they should be upgraded. | |
function | BuildAirportRoute () |
Build an airport route. | |
function | FindSuitableAirportSpot (airport_type, center_tile) |
Find a suitable spot for an airport, walking all towns hoping to find one. | |
function | SellAirports (airport_1_tile, airport_2_tile) |
Sells the airports at tile_1 and tile_2. | |
Order handling | |
function | IsTownFirstOrder (town_id) |
Check whether the airport at a certain town is used as the first order of a route. | |
function | ReplaceOrders (veh, is_first_order, breakdowns, station_tile) |
Replace orders of a vehicle, either the first station or last station is replaced. | |
function | InsertGotoStationOrder (veh, order_pos, station_tile) |
Insert go to station order for airport at station_tile. | |
function | InsertMaintenanceOrder (veh, order_pos, station_tile) |
Insert Maintenance order for airport at station_tile. | |
function | ReplaceGotoStationOrder (veh, order_pos, station_tile) |
Replace go to station order for airport at station_tile. | |
Aircraft handling | |
function | GetMaximumDistance (engine) |
Get the maximum distance this aircraft can safely fly without landing. | |
function | BuildAircraft (tile_1, tile_2, start_tile) |
Build an aircraft with orders from tile_1 to tile_2. | |
function | SendAllVehiclesOfStationToDepot (station_id, sell_reason) |
Send all vehicles belonging to a station to depot for selling. | |
function | SendToDepotForSelling (vehicle, sell_reason) |
Send a vehicle to depot to be sold when it arrives. | |
function | RemoveVehicleFromLists (vehicle) |
Remove a vehicle from our route lists and to depot list. | |
function | SellVehicleInDepot (vehicle) |
Sell the vehicle provided it's in depot. | |
function | SellVehiclesInDepot () |
Sell all vehicles in depot that are marked to be sold. | |
Task related functions | |
function | ManageVehicleRenewal () |
Check all vehicles for being old or needing upgrading to a newer type. | |
function | CheckAirportsWithoutVehicles () |
Check for airports that don't have any vehicles anymore and delete them. | |
function | UpdateBlacklists () |
Remove towns from the blacklists where blacklisting has expired. | |
function | ManageAirRoutes () |
Manage air routes: | |
function | HandleEvents () |
Callback that handles events. | |
function | CheckAirplanePrices (engine_list) |
Get the lowest prices of the current available big and small airplanes. | |
function | EvaluateAircraft (clear_warning_shown_flag) |
Task that evaluates all available aircraft for how suited they are for our purposes. | |
function | BuildHQ () |
Build the company headquarters if there isn't one yet. | |
function | BuildStatues () |
Build statues in towns where we have a station as long as we have a reasonable amount of money. | |
General functions | |
function | GetTownFromStationTile (st_tile) |
Get Town id in our towns_used list based on tile of station built near it. | |
function | IsValidStationFromTile (st_tile) |
Determine if a station is valid based on the station tile. | |
function | IsValidFirstStation (veh) |
Determine if the first station of the route of a vehicle is valid. | |
function | IsValidLastStation (veh) |
Determine if the last station of the route of a vehicle is valid. | |
Valuator functions | |
function | GetCostFactor (engine, costfactor_list) |
Valuator function to get the cost factor of an aircraft. |
Public Attributes | |
towns_used = null | |
town id, airport station tile | |
route_1 = null | |
vehicle id, station_tile of first station in an order | |
route_2 = null | |
vehicle id, station_tile of last station in an order | |
distance_of_route = {} | |
vehicle id, distance between first/last order stations | |
vehicle_to_depot = {} | |
vehicle id, boolean always true currently | |
engine_usefulness = null | |
acceptance_limit = 0 | |
Starting limit for passenger acceptance for airport finding. | |
passenger_cargo_id = -1 | |
no_aircraft_warning_shown = false | |
Whether we have shown the no available aircraft warning. | |
route_without_aircraft = false | |
True if we have built airports but failed to buy airplanes due to lack of money. | |
incomplete_route_tile1 = 0 | |
Tile of first airport of incomplete air route without aircraft. | |
incomplete_route_tile2 = 0 | |
Tile of second airport of incomplete air route without aircraft. | |
towns_blacklist = null | |
List of towns where we already tried to build an airport. | |
upgrade_blacklist = null | |
List of towns where we failed to upgrade the airport. | |
low_price_small = 0 | |
Lowest price of a small airplane. | |
low_price_big = 0 | |
Lowest price of a big airplane. | |
max_costfactor = 0 | |
upgrade_wanted = null | |
List of airports we would like to upgrade. | |
min_distance_squared = 0 | |
Precomputed minimum distance squared based on current settings. | |
max_distance_squared = 0 | |
Precomputed maximum distance squared based on current settings. |
Static Public Attributes | |
static | DEFAULT_MAX_COSTFACTOR = 350 |
We don't want airplanes that have a higher costfactor than this unless we have nothing but planes to play with. | |
static | DEFAULT_ANY_COSTFACTOR = 10000 |
Used in case we want to accept any costfactor. | |
static | BUILD_SUCCESS = 1 |
Status code: Building airport succeeded. | |
static | BUILD_FAILED = 2 |
Building airport failed. | |
static | BUILD_REBUILD_FAILED = 3 |
Rebuilding airport failed. | |
static | BUILD_REMOVE_FAILED = 4 |
Removing airport failed. | |
static | BUILD_AIRPORT_NOT_EMPTY = 5 |
Airport is not empty, removing impossible. | |
static | BUILD_NO_NEW_LOCATION = 6 |
We could not find a good location for the replacement airport. |
Define the WormAirManager class which handles airports and airplanes.
|
inline |
Create an instance of WormAirManager and initialize our variables.
function WormAirManager::AfterLoading | ( | ) |
Do any necessary processing after a savegame has been loaded.
Currently recomputes the values for the distance_of_route table.
function WormAirManager::BuildAircraft | ( | tile_1 | , |
tile_2 | , | ||
start_tile | |||
) |
Build an aircraft with orders from tile_1 to tile_2.
The best available aircraft will be bought.
tile_1 | Airport tile that should be used as the first order. |
tile_2 | Airport tile that should be used as the last order. |
start_tile | The Airport tile where the airplane should start. If this is 0 then it will start at tile_1. To let it start at tile_2 use the same value as tile_2. |
function WormAirManager::BuildAirportRoute | ( | ) |
Build an airport route.
Find 2 cities that are big enough and try to build airport in both cities. Then we can build an aircraft and try to make some money. We limit our amount of airports to max aircraft / AIRPORT_LIMIT_FACTOR * 2. (2 airports for a route, and AIRPORT_LIMIT_FACTOR planes per route)
function WormAirManager::BuildHQ | ( | ) |
Build the company headquarters if there isn't one yet.
function WormAirManager::BuildStatues | ( | ) |
Build statues in towns where we have a station as long as we have a reasonable amount of money.
We limit the amount of statues we build at any one time.
function WormAirManager::CheckAirplanePrices | ( | engine_list | ) |
Get the lowest prices of the current available big and small airplanes.
engine_list | List of airplanes that can transport passengers. |
function WormAirManager::CheckForAirportsNeedingToBeUpgraded | ( | ) |
Checks all airports to see if they should be upgraded.
If they can it tries to upgrade the airport. If it fails after removing the old airport it will first try to replace it with another airport at another spot. If that also fails it will send the aircraft on the now crippled route to depot to be sold. After all aircraft are sold the remaining airport will be sold too.
Since METROPOLITAN is the same size as LARGE we will try to rebuild it in the same spot!
function WormAirManager::DebugListRoute | ( | route | ) |
List all route info in the supplied list.
function WormAirManager::DebugListRouteInfo | ( | ) |
List all our air routes.
function WormAirManager::DebugListRoutes | ( | ) |
List all routes: per route all stations and all vehicles on that route with relevant info.
function WormAirManager::DebugListTowns | ( | towns_list | ) |
List all towns in the supplied list.
function WormAirManager::DebugListTownsUsed | ( | ) |
List of towns used and stations near those towns.
function WormAirManager::DebugListVehiclesSentToDepot | ( | ) |
List all vehicles that were sent to depot to be sold.
function WormAirManager::DebugVehicleInfo | ( | veh | ) |
Show info about the specified vehicle.
It's start and end town and distance between them.
veh | = Vehicle id |
function WormAirManager::EvaluateAircraft | ( | clear_warning_shown_flag | ) |
Task that evaluates all available aircraft for how suited they are for our purposes.
The suitedness values for aircraft which we can use are saved in engine_usefulness.
clear_warning_shown_flag | Whether to clear the no_aircraft_warning_shown flag. |
function WormAirManager::FindAirportSpotInTown | ( | town | , |
airport_type | , | ||
airport_width | , | ||
airport_height | , | ||
coverage_radius | , | ||
center_tile | , | ||
minimum_acceptance | , | ||
add_to_blacklist | = true , |
||
old_airport_type | = AIAirport.AT_INVALID |
||
) |
Find a candidate spot in the specified town to build an airport of the specified type.
town | The town id of the town where we should search. |
airport_type | For which type of airport. |
airport_width | The width of the airport. |
airport_height | The height of the airport. |
coverageradius | The coverage radius of the airport. |
center_tile | The tile of the airport at the other end of the route or 0 if this is the first airport on the route. |
minimum_acceptance | The minimum cargo acceptance we should allow for suitable spots. |
add_to_blacklist | Boolean (default true) If true adds town to blacklist if no suitable spot could be found. |
old_airport_type | (default=AIAirport.AT_INVALID) If not invalid noise limits are checked for replacing old_airport_type with airport type. |
function WormAirManager::FindSuitableAirportSpot | ( | airport_type | , |
center_tile | |||
) |
Find a suitable spot for an airport, walking all towns hoping to find one.
When a town is used, it is marked as such and not re-used.
airport_type | The type of airport we want to build. |
center_tile | The tile around which we will search for a spot for the airport. |
function WormAirManager::GetAiportTileOtherEndOfRoute | ( | town_id | , |
station_tile | |||
) |
Get tile of airport at the other end of the route.
town_id | Town id of town at this end of route. |
station_tile | tile of station at this end of route. |
function WormAirManager::GetCostFactor | ( | engine | , |
costfactor_list | |||
) |
Valuator function to get the cost factor of an aircraft.
engine | The engine id of the aircraft. |
costfactor_list | The list (usually engine_usefulness) that holds the cost factors. |
function WormAirManager::GetMaximumDistance | ( | engine | ) |
Get the maximum distance this aircraft can safely fly without landing.
engine | The engine id for which we want to know the maximum distance. |
function WormAirManager::GetOptimalAvailableAirportType | ( | ) |
Get the optimal type of airport that is available.
function WormAirManager::GetTownFromStationTile | ( | st_tile | ) |
Get Town id in our towns_used list based on tile of station built near it.
function WormAirManager::HandleEvents | ( | ) |
Callback that handles events.
Currently only AIEvent.ET_VEHICLE_CRASHED is handled.
function WormAirManager::InsertGotoStationOrder | ( | veh | , |
order_pos | , | ||
station_tile | |||
) |
Insert go to station order for airport at station_tile.
veh | Vehicle to set the order for. |
order_pos | Position in the order list where order should be inserted. |
station_tile | Tile for the Airport of the to be inserted order. |
function WormAirManager::InsertMaintenanceOrder | ( | veh | , |
order_pos | , | ||
station_tile | |||
) |
Insert Maintenance order for airport at station_tile.
veh | Vehicle to set the order for |
order_pos | Position in the order list where order should be inserted |
station_tile | Tile for the Airport (not the hangar) of the order to be inserted. |
function WormAirManager::IsAirportEmpty | ( | station_id | ) |
Check whether the airport (including depots) is empty, meaning no airplanes.
function WormAirManager::IsTownFirstOrder | ( | town_id | ) |
Check whether the airport at a certain town is used as the first order of a route.
town_id | The id of the town to check if it's the first order. |
function WormAirManager::IsValidFirstStation | ( | veh | ) |
Determine if the first station of the route of a vehicle is valid.
veh | Vehicle to determine the validity of the station for. |
function WormAirManager::IsValidLastStation | ( | veh | ) |
Determine if the last station of the route of a vehicle is valid.
veh | Vehicle to determine the validity of the station for. |
function WormAirManager::IsValidStationFromTile | ( | st_tile | ) |
Determine if a station is valid based on the station tile.
st_tile | The tile of the station. |
function WormAirManager::IsWithinNoiseLimit | ( | tile | , |
old_airport_type | , | ||
new_airport_type | |||
) |
Determines whether an airport at a given tile is allowed by the town authorities because of the noise level.
tile | The tile where the aiport would be built. |
old_airport_type | The type of the current airport or AT_INVALID if there is no airport yet. |
new_airport_type | The type of the proposed replacement airport. |
function WormAirManager::LoadFromScratch | ( | ) |
Try to load existing air routes and towns used from scratch.
This can be needed when we get loaded into a savegame from a different AI.
Second station in orders
function WormAirManager::ManageAirRoutes | ( | ) |
function WormAirManager::ManageVehicleRenewal | ( | ) |
Check all vehicles for being old or needing upgrading to a newer type.
It will send all vehicles that are non optimal to depot for selling.
function WormAirManager::RemoveAirport | ( | tile | ) |
Remove airport at specified tile.
If removing fails then give a warning.
tile | The tile of the airport that should be removed. |
function WormAirManager::RemoveVehicleFromLists | ( | vehicle | ) |
Remove a vehicle from our route lists and to depot list.
vehicle | The vehicle id that should be removed from the lists. |
function WormAirManager::ReplaceAirportTileInfo | ( | old_town_idx | , |
old_tile | , | ||
new_tile | , | ||
other_end_of_route_tile | |||
) |
Replace the airport town and station tile info in our lists and update orders.
old_town_idx | Index into towns_used list of town/station being replaced |
old_tile | The old tile for the airport being replaced. |
new_tile | The tile of the new airport. |
other_end_of_route_tile | Tile of other end of route (needed to access vehicles of route) |
function WormAirManager::ReplaceGotoStationOrder | ( | veh | , |
order_pos | , | ||
station_tile | |||
) |
Replace go to station order for airport at station_tile.
veh | Vehicle to set the order for. |
order_pos | Position in the order list where order should be inserted. |
station_tile | Tile for the Airport of the new to be inserted order. |
function WormAirManager::ReplaceOrders | ( | veh | , |
is_first_order | , | ||
breakdowns | , | ||
station_tile | |||
) |
Replace orders of a vehicle, either the first station or last station is replaced.
veh | Vehicle to replace the orders for. |
is_first_order | Whether to replace the orders for the first or last station. |
breakdowns | Whether breakdowns are on; if they are on we will add maintenance orders. |
station_tile | Tile of station for the new order. |
function WormAirManager::SellAirports | ( | airport_1_tile | , |
airport_2_tile | |||
) |
Sells the airports at tile_1 and tile_2.
Removes towns from towns_used list too.
airport_1_tile | The tile of the first airport to remove |
airport_2_tile | The tile of the other airport to remove |
function WormAirManager::SellVehicleInDepot | ( | vehicle | ) |
Sell the vehicle provided it's in depot.
If it's not yet in depot it will fail silently.
vehicle | The id of the vehicle that should be sold. |
function WormAirManager::SendAirplanesOffAirport | ( | town_id | , |
station_id | |||
) |
Send all airplanes that are currently on this (assumed closed) airport to their next order.
town_id | The id of the town this airport belongs to. |
station_id | The id of the airport station. |
function WormAirManager::SendAllVehiclesOfStationToDepot | ( | station_id | , |
sell_reason | |||
) |
Send all vehicles belonging to a station to depot for selling.
station_id | The id of the station. |
sell_reason | The reason for selling. Valid reasons are VEH_OLD_AGE, VEH_LOW_PROFIT, VEH_STATION_REMOVAL |
function WormAirManager::SendToDepotForSelling | ( | vehicle | , |
sell_reason | |||
) |
Send a vehicle to depot to be sold when it arrives.
vehicle | The vehicle id of the vehicle to be sold. |
sell_reason | The reason for selling. Valid reasons are VEH_OLD_AGE, VEH_LOW_PROFIT, VEH_STATION_REMOVAL |
function WormAirManager::TryToBuildAirport | ( | tile_1 | , |
tile_2 | , | ||
is_first_airport | , | ||
airport_type | |||
) |
Try to build an airport.
tile_1 | The tile of the proposed first airport on a route. |
tile_2 | The tile of the proposed second airport on a route. |
is_first_airport | Boolean: true if it's the first airport we want to build, false if the second should be built. |
airport_type | The type of airport to build. |
function WormAirManager::UpdateAirportTileInfo | ( | town_idx | , |
station_id | , | ||
old_tile | |||
) |
Update the airport station tile info in our lists after upgrading airport.
Expects a valid station_id.
town_idx | Index into towns_used list. |
station_id | Id of the Airport station that got upgraded. |
old_tile | The old tile for the airport before upgrading. |
function WormAirManager::UpgradeLargeToMetropolitan | ( | nearest_town | , |
station_id | , | ||
station_tile | |||
) |
Tries to upgrade airport from large to metropolitan in the same location since they are the same size.
nearest_town | The nearest town according to town influence. |
station_id | The id of the airport to upgrade. |
station_tile | The tile of the airport. |
function WormAirManager::UpgradeSmall | ( | nearest_town | , |
station_id | , | ||
station_tile | , | ||
airport_type | , | ||
other_station_tile | |||
) |
Tries to upgrade airport from small to either large or metropolitan.
nearest_town | The nearest town according to town influence. |
station_id | The id of the airport to upgrade. |
station_tile | The tile of the airport. |
WormAirManager::distance_of_route = {} |
vehicle id, distance between first/last order stations