diff --git a/ai/compat_0.7.nut b/ai/compat_0.7.nut new file mode 100644 --- /dev/null +++ b/ai/compat_0.7.nut @@ -0,0 +1,381 @@ +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +AILog.Info("0.7 API compatibility in effect:"); +AILog.Info(" - AITown::GetLastMonthProduction's behaviour has slightly changed."); +AILog.Info(" - AISubsidy::GetDestination returns STATION_INVALID for awarded subsidies."); +AILog.Info(" - AISubsidy::GetSource returns STATION_INVALID for awarded subsidies."); + +AISign.GetMaxSignID <- function() +{ + local list = AISignList(); + local max_id = 0; + foreach (id, d in list) { + if (id > max_id) max_id = id; + } + return max_id; +} + +AITile.GetHeight <- function(tile) +{ + if (!AIMap.IsValidTile(tile)) return -1; + + return AITile.GetCornerHeight(tile, AITile.CORNER_N); +} + +AIOrder.ChangeOrder <- function(vehicle_id, order_position, order_flags) +{ + return AIOrder.SetOrderFlags(vehicle_id, order_position, order_flags); +} + +AIWaypoint.WAYPOINT_INVALID <- 0xFFFF; + +AISubsidy.SourceIsTown <- function(subsidy_id) +{ + if (!AISubsidy.IsValidSubsidy(subsidy_id) || AISubsidy.IsAwarded(subsidy_id)) return false; + + return AISubsidy.GetSourceType(subsidy_id) == AISubsidy.SPT_TOWN; +} + +AISubsidy.GetSource <- function(subsidy_id) +{ + if (!AISubsidy.IsValidSubsidy(subsidy_id)) return AIBaseStation.STATION_INVALID; + + if (AISubsidy.IsAwarded(subsidy_id)) { + return AIBaseStation.STATION_INVALID; + } + + return AISubsidy.GetSourceIndex(subsidy_id); +} + +AISubsidy.DestinationIsTown <- function(subsidy_id) +{ + if (!AISubsidy.IsValidSubsidy(subsidy_id) || AISubsidy.IsAwarded(subsidy_id)) return false; + + return AISubsidy.GetDestinationType(subsidy_id) == AISubsidy.SPT_TOWN; +} + +AISubsidy.GetDestination <- function(subsidy_id) +{ + if (!AISubsidy.IsValidSubsidy(subsidy_id)) return AIBaseStation.STATION_INVALID; + + if (AISubsidy.IsAwarded(subsidy_id)) { + return AIBaseStation.STATION_INVALID; + } + + return AISubsidy.GetDestinationIndex(subsidy_id); +} + +AITown.GetMaxProduction <- function(town_id, cargo_id) +{ + return AITown.GetLastMonthProduction(town_id, cargo_id); +} + +AIRail.RemoveRailWaypoint <- function(tile) +{ + return AIRail.RemoveRailWaypointTileRect(tile, tile, true); +} + +AIRail.RemoveRailStationTileRect <- function(tile, tile2) +{ + return AIRail.RemoveRailStationTileRectangle(tile, tile2, false); +} + +AIVehicle.SkipToVehicleOrder <- function(vehicle_id, order_position) +{ + return AIOrder.SkipToOrder(vehicle_id, order_position); +} + +AIEngine.IsValidEngine <- function(engine_id) +{ + return AIEngine.IsBuildable(engine_id); +} + +AIEngine._GetName <- AIEngine.GetName; +AIEngine.GetName <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return null; + return AIEngine._GetName(engine_id); +} + +AIEngine._GetCargoType <- AIEngine.GetCargoType; +AIEngine.GetCargoType <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return 255; + return AIEngine._GetCargoType(engine_id); +} + +AIEngine._CanRefitCargo <- AIEngine.CanRefitCargo; +AIEngine.CanRefitCargo <- function(engine_id, cargo_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return false; + return AIEngine._CanRefitCargo(engine_id, cargo_id); +} + +AIEngine._CanPullCargo <- AIEngine.CanPullCargo; +AIEngine.CanPullCargo <- function(engine_id, cargo_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return false; + return AIEngine._CanPullCargo(engine_id, cargo_id); +} + +AIEngine._GetCapacity <- AIEngine.GetCapacity; +AIEngine.GetCapacity <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetCapacity(engine_id); +} + +AIEngine._GetReliability <- AIEngine.GetReliability; +AIEngine.GetReliability <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetReliability(engine_id); +} + +AIEngine._GetMaxSpeed <- AIEngine.GetMaxSpeed; +AIEngine.GetMaxSpeed <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetMaxSpeed(engine_id); +} + +AIEngine._GetPrice <- AIEngine.GetPrice; +AIEngine.GetPrice <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetPrice(engine_id); +} + +AIEngine._GetMaxAge <- AIEngine.GetMaxAge; +AIEngine.GetMaxAge <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetMaxAge(engine_id); +} + +AIEngine._GetRunningCost <- AIEngine.GetRunningCost; +AIEngine.GetRunningCost <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetRunningCost(engine_id); +} + +AIEngine._GetPower <- AIEngine.GetPower; +AIEngine.GetPower <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetPower(engine_id); +} + +AIEngine._GetWeight <- AIEngine.GetWeight; +AIEngine.GetWeight <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetWeight(engine_id); +} + +AIEngine._GetMaxTractiveEffort <- AIEngine.GetMaxTractiveEffort; +AIEngine.GetMaxTractiveEffort <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetMaxTractiveEffort(engine_id); +} + +AIEngine._GetDesignDate <- AIEngine.GetDesignDate; +AIEngine.GetDesignDate <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetDesignDate(engine_id); +} + +AIEngine._GetVehicleType <- AIEngine.GetVehicleType; +AIEngine.GetVehicleType <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return AIVehicle.VT_INVALID; + return AIEngine._GetVehicleType(engine_id); +} + +AIEngine._IsWagon <- AIEngine.IsWagon; +AIEngine.IsWagon <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return false; + return AIEngine._IsWagon(engine_id); +} + +AIEngine._CanRunOnRail <- AIEngine.CanRunOnRail; +AIEngine.CanRunOnRail <- function(engine_id, track_rail_type) +{ + if (!AIEngine.IsBuildable(engine_id)) return false; + return AIEngine._CanRunOnRail(engine_id, track_rail_type); +} + +AIEngine._HasPowerOnRail <- AIEngine.HasPowerOnRail; +AIEngine.HasPowerOnRail <- function(engine_id, track_rail_type) +{ + if (!AIEngine.IsBuildable(engine_id)) return false; + return AIEngine._HasPowerOnRail(engine_id, track_rail_type); +} + +AIEngine._GetRoadType <- AIEngine.GetRoadType; +AIEngine.GetRoadType <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return AIRoad.ROADTYPE_INVALID; + return AIEngine._GetRoadType(engine_id); +} + +AIEngine._GetRailType <- AIEngine.GetRailType; +AIEngine.GetRailType <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return AIRail.RAILTYPE_INVALID; + return AIEngine._GetRailType(engine_id); +} + +AIEngine._IsArticulated <- AIEngine.IsArticulated; +AIEngine.IsArticulated <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return false; + return AIEngine._IsArticulated(engine_id); +} + +AIEngine._GetPlaneType <- AIEngine.GetPlaneType; +AIEngine.GetPlaneType <- function(engine_id) +{ + if (!AIEngine.IsBuildable(engine_id)) return -1; + return AIEngine._GetPlaneType(engine_id); +} + +_AIWaypointList <- AIWaypointList; +class AIWaypointList extends _AIWaypointList { + constructor() + { + ::_AIWaypointList.constructor(AIWaypoint.WAYPOINT_RAIL); + } +} + +AIRoad._BuildRoadStation <- AIRoad.BuildRoadStation; +AIRoad.BuildRoadStation <- function(tile, front, road_veh_type, station_id) +{ + if (AIRoad.IsRoadStationTile(tile) && AICompany.IsMine(AITile.GetOwner(tile))) return false; + + return AIRoad._BuildRoadStation(tile, front, road_veh_type, station_id); +} + +AIRoad._BuildDriveThroughRoadStation <- AIRoad.BuildDriveThroughRoadStation; +AIRoad.BuildDriveThroughRoadStation <- function(tile, front, road_veh_type, station_id) +{ + if (AIRoad.IsRoadStationTile(tile) && AICompany.IsMine(AITile.GetOwner(tile))) return false; + + return AIRoad._BuildDriveThroughRoadStation(tile, front, road_veh_type, station_id); +} + +AIBridgeList.HasNext <- +AIBridgeList_Length.HasNext <- +AICargoList.HasNext <- +AICargoList_IndustryAccepting.HasNext <- +AICargoList_IndustryProducing.HasNext <- +AIDepotList.HasNext <- +AIEngineList.HasNext <- +AIGroupList.HasNext <- +AIIndustryList.HasNext <- +AIIndustryList_CargoAccepting.HasNext <- +AIIndustryList_CargoProducing.HasNext <- +AIIndustryTypeList.HasNext <- +AIList.HasNext <- +AIRailTypeList.HasNext <- +AISignList.HasNext <- +AIStationList.HasNext <- +AIStationList_Vehicle.HasNext <- +AISubsidyList.HasNext <- +AITileList.HasNext <- +AITileList_IndustryAccepting.HasNext <- +AITileList_IndustryProducing.HasNext <- +AITileList_StationType.HasNext <- +AITownList.HasNext <- +AIVehicleList.HasNext <- +AIVehicleList_DefaultGroup.HasNext <- +AIVehicleList_Group.HasNext <- +AIVehicleList_SharedOrders.HasNext <- +AIVehicleList_Station.HasNext <- +AIWaypointList.HasNext <- +AIWaypointList_Vehicle.HasNext <- +function() +{ + return !this.IsEnd(); +} + +AIIndustry._IsCargoAccepted <- AIIndustry.IsCargoAccepted; +AIIndustry.IsCargoAccepted <- function(industry_id, cargo_id) +{ + return AIIndustry._IsCargoAccepted(industry_id, cargo_id) != AIIndustry.CAS_NOT_ACCEPTED; +} + +AIAbstractList <- AIList; + +AIList.ChangeItem <- AIList.SetValue; + +AIRail.ERR_NONUNIFORM_STATIONS_DISABLED <- 0xFFFF; + +AICompany.GetCompanyValue <- function(company) +{ + return AICompany.GetQuarterlyCompanyValue(company, AICompany.CURRENT_QUARTER); +} + +AITown.GetLastMonthTransported <- AITown.GetLastMonthSupplied; + +AIEvent.AI_ET_INVALID <- AIEvent.ET_INVALID; +AIEvent.AI_ET_TEST <- AIEvent.ET_TEST; +AIEvent.AI_ET_SUBSIDY_OFFER <- AIEvent.ET_SUBSIDY_OFFER; +AIEvent.AI_ET_SUBSIDY_OFFER_EXPIRED <- AIEvent.ET_SUBSIDY_OFFER_EXPIRED; +AIEvent.AI_ET_SUBSIDY_AWARDED <- AIEvent.ET_SUBSIDY_AWARDED; +AIEvent.AI_ET_SUBSIDY_EXPIRED <- AIEvent.ET_SUBSIDY_EXPIRED; +AIEvent.AI_ET_ENGINE_PREVIEW <- AIEvent.ET_ENGINE_PREVIEW; +AIEvent.AI_ET_COMPANY_NEW <- AIEvent.ET_COMPANY_NEW; +AIEvent.AI_ET_COMPANY_IN_TROUBLE <- AIEvent.ET_COMPANY_IN_TROUBLE; +AIEvent.AI_ET_COMPANY_MERGER <- AIEvent.ET_COMPANY_MERGER; +AIEvent.AI_ET_COMPANY_BANKRUPT <- AIEvent.ET_COMPANY_BANKRUPT; +AIEvent.AI_ET_VEHICLE_CRASHED <- AIEvent.ET_VEHICLE_CRASHED; +AIEvent.AI_ET_VEHICLE_LOST <- AIEvent.ET_VEHICLE_LOST; +AIEvent.AI_ET_VEHICLE_WAITING_IN_DEPOT <- AIEvent.ET_VEHICLE_WAITING_IN_DEPOT; +AIEvent.AI_ET_VEHICLE_UNPROFITABLE <- AIEvent.ET_VEHICLE_UNPROFITABLE; +AIEvent.AI_ET_INDUSTRY_OPEN <- AIEvent.ET_INDUSTRY_OPEN; +AIEvent.AI_ET_INDUSTRY_CLOSE <- AIEvent.ET_INDUSTRY_CLOSE; +AIEvent.AI_ET_ENGINE_AVAILABLE <- AIEvent.ET_ENGINE_AVAILABLE; +AIEvent.AI_ET_STATION_FIRST_VEHICLE <- AIEvent.ET_STATION_FIRST_VEHICLE; +AIEvent.AI_ET_DISASTER_ZEPPELINER_CRASHED <- AIEvent.ET_DISASTER_ZEPPELINER_CRASHED; +AIEvent.AI_ET_DISASTER_ZEPPELINER_CLEARED <- AIEvent.ET_DISASTER_ZEPPELINER_CLEARED; +AIOrder.AIOF_NONE <- AIOrder.OF_NONE +AIOrder.AIOF_NON_STOP_INTERMEDIATE <- AIOrder.OF_NON_STOP_INTERMEDIATE +AIOrder.AIOF_NON_STOP_DESTINATION <- AIOrder.OF_NON_STOP_DESTINATION +AIOrder.AIOF_UNLOAD <- AIOrder.OF_UNLOAD +AIOrder.AIOF_TRANSFER <- AIOrder.OF_TRANSFER +AIOrder.AIOF_NO_UNLOAD <- AIOrder.OF_NO_UNLOAD +AIOrder.AIOF_FULL_LOAD <- AIOrder.OF_FULL_LOAD +AIOrder.AIOF_FULL_LOAD_ANY <- AIOrder.OF_FULL_LOAD_ANY +AIOrder.AIOF_NO_LOAD <- AIOrder.OF_NO_LOAD +AIOrder.AIOF_SERVICE_IF_NEEDED <- AIOrder.OF_SERVICE_IF_NEEDED +AIOrder.AIOF_STOP_IN_DEPOT <- AIOrder.OF_STOP_IN_DEPOT +AIOrder.AIOF_GOTO_NEAREST_DEPOT <- AIOrder.OF_GOTO_NEAREST_DEPOT +AIOrder.AIOF_NON_STOP_FLAGS <- AIOrder.OF_NON_STOP_FLAGS +AIOrder.AIOF_UNLOAD_FLAGS <- AIOrder.OF_UNLOAD_FLAGS +AIOrder.AIOF_LOAD_FLAGS <- AIOrder.OF_LOAD_FLAGS +AIOrder.AIOF_DEPOT_FLAGS <- AIOrder.OF_DEPOT_FLAGS +AIOrder.AIOF_INVALID <- AIOrder.OF_INVALID + +/* 1.9 adds a vehicle type parameter. */ +AIBridge._GetName <- AIBridge.GetName; +AIBridge.GetName <- function(bridge_id) +{ + return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL); +} + +/* 1.9 adds parent_group_id to CreateGroup function */ +AIGroup._CreateGroup <- AIGroup.CreateGroup; +AIGroup.CreateGroup <- function(vehicle_type) +{ + return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID); +}