summaryrefslogtreecommitdiff
path: root/bin/ai/regression/regression.nut
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ai/regression/regression.nut')
-rw-r--r--bin/ai/regression/regression.nut1761
1 files changed, 1761 insertions, 0 deletions
diff --git a/bin/ai/regression/regression.nut b/bin/ai/regression/regression.nut
new file mode 100644
index 000000000..768facf9e
--- /dev/null
+++ b/bin/ai/regression/regression.nut
@@ -0,0 +1,1761 @@
+import("queue.priority_queue", "PQ", 2);
+import("queue.binary_heap", "BH", 1);
+import("queue.fibonacci_heap", "FH", 1);
+import("graph.aystar", "AS", 4);
+import("pathfinder.road", "RPF", 3);
+
+class Regression extends AIController {
+ function Start();
+};
+
+
+
+function Regression::TestInit()
+{
+ print("");
+ print("--TestInit--");
+ print(" TickTest: " + this.GetTick());
+ this.Sleep(1);
+ print(" TickTest: " + this.GetTick());
+ print(" SetCommandDelay: " + AIController.SetCommandDelay(1));
+ print(" IsValid(vehicle.plane_speed): " + AIGameSettings.IsValid("vehicle.plane_speed"));
+ print(" vehicle.plane_speed: " + AIGameSettings.GetValue("vehicle.plane_speed"));
+ require("require.nut");
+ print(" min(6, 3): " + min(6, 3));
+ print(" min(3, 6): " + min(3, 6));
+ print(" max(6, 3): " + max(6, 3));
+ print(" max(3, 6): " + max(3, 6));
+
+ print(" AIList Consistency Tests");
+ print("");
+ print(" Value Descending");
+ local list = AIList();
+ list.AddItem( 5, 10);
+ list.AddItem(10, 10);
+ list.AddItem(15, 20);
+ list.AddItem(20, 20);
+ list.AddItem(25, 30);
+ list.AddItem(30, 30);
+ list.AddItem(35, 40);
+ list.AddItem(40, 40);
+
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ list.RemoveItem(i - 10);
+ list.RemoveItem(i - 5);
+ list.RemoveItem(i);
+ print(" " + i);
+ }
+
+ list.AddItem(10, 10);
+ list.AddItem(20, 20);
+ list.AddItem(30, 30);
+ list.AddItem(40, 40);
+
+ print("");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ list.SetValue(i, 2);
+ print(" " + i);
+ }
+ print("");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i);
+ }
+
+ list = AIList();
+ list.Sort(AIAbstractList.SORT_BY_VALUE, true);
+ print("");
+ print(" Value Ascending");
+ list.AddItem( 5, 10);
+ list.AddItem(10, 10);
+ list.AddItem(15, 20);
+ list.AddItem(20, 20);
+ list.AddItem(25, 30);
+ list.AddItem(30, 30);
+ list.AddItem(35, 40);
+ list.AddItem(40, 40);
+
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ list.RemoveItem(i + 10);
+ list.RemoveItem(i + 5);
+ list.RemoveItem(i);
+ print(" " + i);
+ }
+
+ list.AddItem(10, 10);
+ list.AddItem(20, 20);
+ list.AddItem(30, 30);
+ list.AddItem(40, 40);
+
+ print("");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ list.SetValue(i, 50);
+ print(" " + i);
+ }
+ print("");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i);
+ }
+
+ list = AIList();
+ list.Sort(AIAbstractList.SORT_BY_ITEM, false);
+ print("");
+ print(" Item Descending");
+ list.AddItem( 5, 10);
+ list.AddItem(10, 10);
+ list.AddItem(15, 20);
+ list.AddItem(20, 20);
+ list.AddItem(25, 30);
+ list.AddItem(30, 30);
+ list.AddItem(35, 40);
+ list.AddItem(40, 40);
+
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ list.RemoveItem(i - 10);
+ list.RemoveItem(i - 5);
+ list.RemoveItem(i);
+ print(" " + i);
+ }
+
+ list.AddItem(10, 10);
+ list.AddItem(20, 20);
+ list.AddItem(30, 30);
+ list.AddItem(40, 40);
+
+ print("");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ list.SetValue(i, 2);
+ print(" " + i);
+ }
+ print("");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i);
+ }
+
+ list = AIList();
+ list.Sort(AIAbstractList.SORT_BY_ITEM, true);
+ print("");
+ print(" Item Ascending");
+ list.AddItem( 5, 10);
+ list.AddItem(10, 10);
+ list.AddItem(15, 20);
+ list.AddItem(20, 20);
+ list.AddItem(25, 30);
+ list.AddItem(30, 30);
+ list.AddItem(35, 40);
+ list.AddItem(40, 40);
+
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ list.RemoveItem(i + 10);
+ list.RemoveItem(i + 5);
+ list.RemoveItem(i);
+ print(" " + i);
+ }
+
+ list.AddItem(10, 10);
+ list.AddItem(20, 20);
+ list.AddItem(30, 30);
+ list.AddItem(40, 40);
+
+ print("");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ list.SetValue(i, 50);
+ print(" " + i);
+ }
+ print("");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i);
+ }
+
+ list.Clear();
+ foreach (idx, val in list) {
+ print(" " + idx);
+ }
+}
+
+function Regression::Std()
+{
+ print("");
+ print("--Std--");
+ print(" abs(-21): " + abs(-21));
+ print(" abs( 21): " + abs(21));
+}
+
+function Regression::Base()
+{
+ print("");
+ print("--AIBase--");
+ print(" Rand(): " + AIBase.Rand());
+ print(" Rand(): " + AIBase.Rand());
+ print(" Rand(): " + AIBase.Rand());
+ print(" RandRange(0): " + AIBase.RandRange(0));
+ print(" RandRange(0): " + AIBase.RandRange(0));
+ print(" RandRange(0): " + AIBase.RandRange(0));
+ print(" RandRange(1): " + AIBase.RandRange(1));
+ print(" RandRange(1): " + AIBase.RandRange(1));
+ print(" RandRange(1): " + AIBase.RandRange(1));
+ print(" RandRange(2): " + AIBase.RandRange(2));
+ print(" RandRange(2): " + AIBase.RandRange(2));
+ print(" RandRange(2): " + AIBase.RandRange(2));
+ print(" RandRange(9): " + AIBase.RandRange(9));
+ print(" RandRange(9): " + AIBase.RandRange(9));
+ print(" RandRange(9): " + AIBase.RandRange(9));
+ print(" Chance(1, 2): " + AIBase.Chance(1, 2));
+ print(" Chance(1, 2): " + AIBase.Chance(1, 2));
+ print(" Chance(1, 2): " + AIBase.Chance(1, 2));
+
+ AIRoad.SetCurrentRoadType(AIRoad.ROADTYPE_ROAD);
+}
+
+function Regression::Airport()
+{
+ print("");
+ print("--AIAirport--");
+
+ print(" IsHangarTile(): " + AIAirport.IsHangarTile(32116));
+ print(" IsAirportTile(): " + AIAirport.IsAirportTile(32116));
+ print(" GetHangarOfAirport(): " + AIAirport.GetHangarOfAirport(32116));
+ print(" GetAirportType(): " + AIAirport.GetAirportType(32116));
+
+ for (local i = -1; i < 10; i++) {
+ print(" IsValidAirportType(" + i + "): " + AIAirport.IsValidAirportType(i));
+ print(" AirportAvailable(" + i + "): " + AIAirport.AirportAvailable(i));
+ print(" GetAirportWidth(" + i + "): " + AIAirport.GetAirportWidth(i));
+ print(" GetAirportHeight(" + i + "): " + AIAirport.GetAirportHeight(i));
+ print(" GetAirportCoverageRadius(" + i + "): " + AIAirport.GetAirportCoverageRadius(i));
+ }
+
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+ print(" BuildAirport(): " + AIAirport.BuildAirport(32116, 0, true));
+ print(" IsHangarTile(): " + AIAirport.IsHangarTile(32116));
+ print(" IsAirportTile(): " + AIAirport.IsAirportTile(32116));
+ print(" GetAirportType(): " + AIAirport.GetAirportType(32119));
+ print(" GetHangarOfAirport(): " + AIAirport.GetHangarOfAirport(32116));
+ print(" IsHangarTile(): " + AIAirport.IsHangarTile(32119));
+ print(" IsAirportTile(): " + AIAirport.IsAirportTile(32119));
+ print(" GetAirportType(): " + AIAirport.GetAirportType(32119));
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+
+ print(" RemoveAirport(): " + AIAirport.RemoveAirport(32118));
+ print(" IsHangarTile(): " + AIAirport.IsHangarTile(32119));
+ print(" IsAirportTile(): " + AIAirport.IsAirportTile(32119));
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+ print(" BuildAirport(): " + AIAirport.BuildAirport(32116, 0, true));
+}
+
+function Regression::Bridge()
+{
+ local j = 0;
+
+ print("");
+ print("--Bridge--");
+ for (local i = -1; i < 14; i++) {
+ if (AIBridge.IsValidBridge(i)) j++;
+ print(" Bridge " + i);
+ print(" IsValidBridge(): " + AIBridge.IsValidBridge(i));
+ print(" GetName(): " + AIBridge.GetName(i));
+ print(" GetMaxSpeed(): " + AIBridge.GetMaxSpeed(i));
+ print(" GetPrice(): " + AIBridge.GetPrice(i, 5));
+ print(" GetMaxLength(): " + AIBridge.GetMaxLength(i));
+ print(" GetMinLength(): " + AIBridge.GetMinLength(i));
+ print(" GetYearAvailable(): " + AIBridge.GetYearAvailable(i));
+ }
+ print(" Valid Bridges: " + j);
+
+ print(" IsBridgeTile(): " + AIBridge.IsBridgeTile(33160));
+ print(" RemoveBridge(): " + AIBridge.RemoveBridge(33155));
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+ print(" GetOtherBridgeEnd(): " + AIBridge.GetOtherBridgeEnd(33160));
+ print(" BuildBridge(): " + AIBridge.BuildBridge(AIVehicle.VEHICLE_ROAD, 5, 33160, 33155));
+ print(" IsBridgeTile(): " + AIBridge.IsBridgeTile(33160));
+ print(" IsBridgeTile(): " + AIBridge.IsBridgeTile(33155));
+ print(" GetOtherBridgeEnd(): " + AIBridge.GetOtherBridgeEnd(33160));
+ print(" BuildBridge(): " + AIBridge.BuildBridge(AIVehicle.VEHICLE_ROAD, 5, 33160, 33155));
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+ print(" RemoveBridge(): " + AIBridge.RemoveBridge(33155));
+ print(" IsBridgeTile(): " + AIBridge.IsBridgeTile(33160));
+}
+
+function Regression::BridgeList()
+{
+ local list = AIBridgeList();
+
+ print("");
+ print("--BridgeList--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIBridge.GetMaxSpeed);
+ print(" MaxSpeed ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIBridge.GetPrice, 5);
+ print(" Price ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIBridge.GetMaxLength);
+ print(" MaxLength ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIBridge.GetMinLength);
+ print(" MinLength ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIBridge.GetYearAvailable);
+ print(" YearAvailable ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list = AIBridgeList_Length(14);
+
+ print("");
+ print("--BridgeList_Length--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIBridge.GetMaxSpeed);
+ print(" MaxSpeed ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIBridge.GetPrice, 14);
+ print(" Price ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+}
+
+function Regression::Cargo()
+{
+ print("");
+ print("--AICargo--");
+ for (local i = -1; i < 15; i++) {
+ print(" Cargo " + i);
+ print(" IsValidCargo(): " + AICargo.IsValidCargo(i));
+ print(" GetCargoLabel(): '" + AICargo.GetCargoLabel(i)+ "'");
+ print(" IsFreight(): " + AICargo.IsFreight(i));
+ print(" HasCargoClass(): " + AICargo.HasCargoClass(i, AICargo.CC_PASSENGERS));
+ print(" GetTownEffect(): " + AICargo.GetTownEffect(i));
+ print(" GetCargoIncome(0, 0): " + AICargo.GetCargoIncome(i, 0, 0));
+ print(" GetCargoIncome(10, 10): " + AICargo.GetCargoIncome(i, 10, 10));
+ print(" GetCargoIncome(100, 10): " + AICargo.GetCargoIncome(i, 100, 10));
+ print(" GetCargoIncome(10, 100): " + AICargo.GetCargoIncome(i, 10, 100));
+ }
+}
+
+function Regression::CargoList()
+{
+ local list = AICargoList();
+
+ print("");
+ print("--CargoList--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AICargo.IsFreight);
+ print(" IsFreight ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list.Valuate(AICargo.GetCargoIncome, 100, 100);
+ print(" CargoIncomes(100, 100) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list = AICargoList_IndustryAccepting(8);
+ print("");
+ print("--CargoList_IndustryAccepting--");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i);
+ }
+
+ list = AICargoList_IndustryProducing(4);
+ print("");
+ print("--CargoList_IndustryProducing--");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i);
+ }
+}
+
+function Regression::Company()
+{
+ print("");
+ print("--Company--");
+
+ /* Test AIXXXMode() in scopes */
+ {
+ local test = AITestMode();
+ print(" SetName(): " + AICompany.SetName("Regression"));
+ print(" SetName(): " + AICompany.SetName("Regression"));
+ {
+ local exec = AIExecMode();
+ print(" SetName(): " + AICompany.SetName("Regression"));
+ print(" SetName(): " + AICompany.SetName("Regression"));
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+ }
+ }
+
+ print(" GetName(): " + AICompany.GetName(AICompany.MY_COMPANY));
+ print(" GetPresidentName(): " + AICompany.GetPresidentName(AICompany.MY_COMPANY));
+ print(" SetPresidentName(): " + AICompany.SetPresidentName("Regression AI"));
+ print(" GetPresidentName(): " + AICompany.GetPresidentName(AICompany.MY_COMPANY));
+ print(" GetCompanyValue(): " + AICompany.GetCompanyValue(AICompany.MY_COMPANY));
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+ print(" GetName(): " + AICompany.GetName(240));
+ print(" GetLoanAmount(): " + AICompany.GetLoanAmount());
+ print(" GetMaxLoanAmount(): " + AICompany.GetMaxLoanAmount());
+ print(" GetLoanInterval(): " + AICompany.GetLoanInterval());
+ print(" SetLoanAmount(1): " + AICompany.SetLoanAmount(1));
+ print(" SetLoanAmount(100): " + AICompany.SetLoanAmount(100));
+ print(" SetLoanAmount(10000): " + AICompany.SetLoanAmount(10000));
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+ print(" GetLoanAmount(): " + AICompany.GetLoanAmount());
+ print(" SetMinimumLoanAmount(31337): " + AICompany.SetMinimumLoanAmount(31337));
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+ print(" GetLoanAmount(): " + AICompany.GetLoanAmount());
+ print(" SetLoanAmount(10000): " + AICompany.SetLoanAmount(AICompany.GetMaxLoanAmount()));
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+ print(" GetLoanAmount(): " + AICompany.GetLoanAmount());
+ print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.MY_COMPANY));
+ print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(127, 129)));
+ print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.MY_COMPANY));
+ print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(129, 129)));
+ print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.MY_COMPANY));
+ print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(129, 128)));
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+ print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.MY_COMPANY));
+ print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true));
+ print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.MY_COMPANY));
+ print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true));
+ print(" SetAutoRenewStatus(false); " + AICompany.SetAutoRenewStatus(false));
+ print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.MY_COMPANY));
+ print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12));
+ print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.MY_COMPANY));
+ print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12));
+ print(" SetAutoRenewMonths(6); " + AICompany.SetAutoRenewMonths(6));
+ print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.MY_COMPANY));
+ print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000));
+ print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.MY_COMPANY));
+ print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000));
+ print(" SetAutoRenewMoney(100000); " + AICompany.SetAutoRenewMoney(100000));
+}
+
+function Regression::Engine()
+{
+ local j = 0;
+
+ print("");
+ print("--Engine--");
+ for (local i = -1; i < 257; i++) {
+ if (AIEngine.IsValidEngine(i)) j++;
+ print(" Engine " + i);
+ print(" IsValidEngine(): " + AIEngine.IsValidEngine(i));
+ print(" GetName(): " + AIEngine.GetName(i));
+ print(" GetCargoType(): " + AIEngine.GetCargoType(i));
+ print(" CanRefitCargo(): " + AIEngine.CanRefitCargo(i, 1));
+ print(" GetCapacity(): " + AIEngine.GetCapacity(i));
+ print(" GetReliability(): " + AIEngine.GetReliability(i));
+ print(" GetMaxSpeed(): " + AIEngine.GetMaxSpeed(i));
+ print(" GetPrice(): " + AIEngine.GetPrice(i));
+ print(" GetMaxAge(): " + AIEngine.GetMaxAge(i));
+ print(" GetRunningCost(): " + AIEngine.GetRunningCost(i));
+ print(" GetVehicleType(): " + AIEngine.GetVehicleType(i));
+ print(" GetRailType(): " + AIEngine.GetRailType(i));
+ print(" GetRoadType(): " + AIEngine.GetRoadType(i));
+ print(" GetPlaneType(): " + AIEngine.GetPlaneType(i));
+ }
+ print(" Valid Engines: " + j);
+}
+
+function Regression::EngineList()
+{
+ local list = AIEngineList(AIVehicle.VEHICLE_ROAD);
+
+ print("");
+ print("--EngineList--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIEngine.GetCargoType);
+ print(" CargoType ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIEngine.GetCapacity);
+ print(" Capacity ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIEngine.GetReliability);
+ print(" Reliability ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIEngine.GetMaxSpeed);
+ print(" MaxSpeed ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIEngine.GetPrice);
+ print(" Price ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+}
+
+function cost_callback(old_path, new_tile, new_direction, self) { if (old_path == null) return 0; return old_path.GetCost() + 1; }
+function estimate_callback(tile, direction, goals, self) { return goals[0] - tile; }
+function neighbours_callback(path, cur_tile, self) { return [[cur_tile + 1, 1]]; }
+function check_direction_callback(tile, existing_direction, new_direction, self) { return false; }
+
+function Regression::Graph()
+{
+ print("--AyStar--");
+ print(" Fastest path:");
+ local as = AS(cost_callback, estimate_callback, neighbours_callback, check_direction_callback);
+
+ local path = false;
+ as.InitializePath([[1, 1]], [10]);
+ while (path == false) path = as.FindPath(5);
+
+ while (path != null) {
+ print(" Tile " + path.GetTile());
+ path = path.GetParent();
+ }
+}
+
+function Regression::Group()
+{
+ print ("");
+ print("--Group--");
+ print(" SetAutoReplace(): " + AIGroup.SetAutoReplace(AIGroup.ALL_GROUP, 116, 117));
+ print(" GetEngineReplacement(): " + AIGroup.GetEngineReplacement(AIGroup.ALL_GROUP, 116));
+ print(" GetNumEngines(): " + AIGroup.GetNumEngines(AIGroup.ALL_GROUP, 116));
+ print(" AIRoad.BuildRoadDepot(): " + AIRoad.BuildRoadDepot(10000, 10001));
+ local vehicle = AIVehicle.BuildVehicle(10000, 116);
+ print(" AIVehicle.BuildVehicle(): " + vehicle);
+ print(" GetNumEngines(): " + AIGroup.GetNumEngines(AIGroup.ALL_GROUP, 116));
+ local group = AIGroup.CreateGroup(AIVehicle.VEHICLE_ROAD);
+ print(" CreateGroup(): " + group);
+ print(" MoveVehicle(): " + AIGroup.MoveVehicle(group, vehicle));
+ print(" GetNumEngines(): " + AIGroup.GetNumEngines(group, 116));
+ print(" GetNumEngines(): " + AIGroup.GetNumEngines(AIGroup.ALL_GROUP, 116));
+ print(" GetNumEngines(): " + AIGroup.GetNumEngines(AIGroup.DEFAULT_GROUP, 116));
+ print(" GetName(): " + AIGroup.GetName(0));
+ print(" GetName(): " + AIGroup.GetName(1));
+ print(" AIVehicle.SellVehicle(): " + AIVehicle.SellVehicle(vehicle));
+ print(" AITile.DemolishTile(): " + AITile.DemolishTile(10000));
+ print(" HasWagonRemoval(): " + AIGroup.HasWagonRemoval());
+ print(" EnableWagonRemoval(): " + AIGroup.EnableWagonRemoval(true));
+ print(" HasWagonRemoval(): " + AIGroup.HasWagonRemoval());
+ print(" EnableWagonRemoval(): " + AIGroup.EnableWagonRemoval(false));
+ print(" EnableWagonRemoval(): " + AIGroup.EnableWagonRemoval(false));
+ print(" HasWagonRemoval(): " + AIGroup.HasWagonRemoval());
+}
+
+function Regression::Industry()
+{
+ local j = 0;
+
+ print("");
+ print("--Industry--");
+ print(" GetMaxIndustryID(): " + AIIndustry.GetMaxIndustryID());
+ print(" GetIndustryCount(): " + AIIndustry.GetIndustryCount());
+ for (local i = -1; i < AIIndustry.GetMaxIndustryID() + 1; i++) {
+ if (AIIndustry.IsValidIndustry(i)) j++;
+ print(" Industry " + i);
+ print(" IsValidIndustry(): " + AIIndustry.IsValidIndustry(i));
+ print(" GetName(): " + AIIndustry.GetName(i));
+ print(" GetLocation(): " + AIIndustry.GetLocation(i));
+ print(" GetProduction(): " + AIIndustry.GetProduction(i, 1));
+ print(" IsCargoAccepted(): " + AIIndustry.IsCargoAccepted(i, 1));
+
+ local cargo_list = AICargoList();
+ for (local j = cargo_list.Begin(); cargo_list.HasNext(); j = cargo_list.Next()) {
+ if (AIIndustry.GetProduction(i, j) > 0) {
+ print(" GetLastMonthProduction(): " + AIIndustry.GetLastMonthProduction(i, j));
+ print(" GetLastMonthTransported(): " + AIIndustry.GetLastMonthTransported(i, j));
+ print(" GetStockpiledCargo(): " + AIIndustry.GetStockpiledCargo(i, j));
+ }
+ }
+ }
+ print(" Valid Industries: " + j);
+ print(" GetIndustryCount(): " + AIIndustry.GetIndustryCount());
+}
+
+function Regression::IndustryList()
+{
+ local list = AIIndustryList();
+
+ print("");
+ print("--IndustryList--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIIndustry.GetLocation);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIIndustry.GetDistanceManhattanToTile, 30000);
+ print(" DistanceManhattanToTile(30000) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIIndustry.GetDistanceSquareToTile, 30000);
+ print(" DistanceSquareToTile(30000) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIIndustry.GetAmountOfStationsAround);
+ print(" GetAmountOfStationsAround(30000) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIIndustry.IsCargoAccepted, 1);
+ print(" CargoAccepted(1) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIIndustry.GetProduction, 1);
+ list.KeepAboveValue(50);
+ print(" KeepAboveValue(50): done");
+ print(" Count(): " + list.Count());
+ print(" Production ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list = AIIndustryList_CargoAccepting(1);
+ print("--IndustryList_CargoAccepting--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIIndustry.GetLocation);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list = AIIndustryList_CargoProducing(1);
+ print("--IndustryList_CargoProducing--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIIndustry.GetLocation);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+}
+
+function Regression::IndustryTypeList()
+{
+ local list = AIIndustryTypeList();
+
+ print("");
+ print("--IndustryTypeList--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIIndustry.GetLocation);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" Id: " + i);
+ print(" IsRawIndustry(): " + AIIndustryType.IsRawIndustry(i));
+ print(" ProductionCanIncrease(): " + AIIndustryType.ProductionCanIncrease(i));
+ print(" GetConstructionCost(): " + AIIndustryType.GetConstructionCost(i));
+ print(" GetName(): " + AIIndustryType.GetName(i));
+ print(" CanBuildIndustry(): " + AIIndustryType.CanBuildIndustry(i));
+ print(" CanProspectIndustry(): " + AIIndustryType.CanProspectIndustry(i));
+ }
+}
+
+function CustomValuator(list_id)
+{
+ return list_id * 4343;
+}
+
+function Regression::List()
+{
+ local list = AIList();
+
+ print("");
+ print("--List--");
+
+ print(" IsEmpty(): " + list.IsEmpty());
+ list.AddItem(1, 1);
+ list.AddItem(2, 2);
+ for (local i = 1000; i < 1100; i++) {
+ list.AddItem(i, i);
+ }
+ list.RemoveItem(1050);
+ list.RemoveItem(1150);
+ list.ChangeItem(1051, 12);
+ print(" Count(): " + list.Count());
+ print(" HasItem(1050): " + list.HasItem(1050));
+ print(" HasItem(1051): " + list.HasItem(1051));
+ print(" IsEmpty(): " + list.IsEmpty());
+ list.Sort(AIAbstractList.SORT_BY_ITEM, true);
+ print(" List Dump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(CustomValuator);
+ print(" Custom ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(function (a) { return a * 42; });
+ print(" Custom ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIBase.RandItem);
+ print(" Randomize ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list.KeepTop(10);
+ print(" KeepTop(10):");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.KeepBottom(8);
+ print(" KeepBottom(8):");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.RemoveBottom(2);
+ print(" RemoveBottom(2):");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.RemoveTop(2);
+ print(" RemoveTop(2):");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ local list2 = AIList();
+ list2.AddItem(1003, 0);
+ list2.AddItem(1004, 0);
+ list.RemoveList(list2);
+ print(" RemoveList({1003, 1004}):");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list2.AddItem(1005, 0);
+ list.KeepList(list2);
+ print(" KeepList({1003, 1004, 1005}):");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list2.Clear();
+ for (local i = 4000; i < 4003; i++) {
+ list2.AddItem(i, i * 2);
+ }
+ list2.AddItem(1005, 1005);
+ list.AddList(list2);
+ print(" AddList({1005, 4000, 4001, 4002}):");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list[4000] = 50;
+ list[4006] = 12;
+
+ print(" foreach():");
+ foreach (idx, val in list) {
+ print(" " + idx + " => " + val);
+ }
+ print(" []:");
+ print(" 4000 => " + list[4000]);
+
+ list.Clear();
+ print(" IsEmpty(): " + list.IsEmpty());
+}
+
+function Regression::Map()
+{
+ print("");
+ print("--Map--");
+ print(" GetMapSize(): " + AIMap.GetMapSize());
+ print(" GetMapSizeX(): " + AIMap.GetMapSizeX());
+ print(" GetMapSizeY(): " + AIMap.GetMapSizeY());
+ print(" GetTileX(123): " + AIMap.GetTileX(123));
+ print(" GetTileY(123): " + AIMap.GetTileY(123));
+ print(" GetTileIndex(): " + AIMap.GetTileIndex(123, 0));
+ print(" GetTileIndex(): " + AIMap.GetTileIndex(0, 123));
+ print(" GetTileIndex(): " + AIMap.GetTileIndex(0, 0));
+ print(" GetTileIndex(): " + AIMap.GetTileIndex(-1, -1));
+ print(" GetTileIndex(): " + AIMap.GetTileIndex(10000, 10000));
+ print(" IsValidTile(123): " + AIMap.IsValidTile(123));
+ print(" GetTileX(124): " + AIMap.GetTileX(124));
+ print(" GetTileY(124): " + AIMap.GetTileY(124));
+ print(" IsValidTile(124): " + AIMap.IsValidTile(124));
+ print(" IsValidTile(0): " + AIMap.IsValidTile(0));
+ print(" IsValidTile(-1): " + AIMap.IsValidTile(-1));
+ print(" IsValidTile(): " + AIMap.IsValidTile(AIMap.GetMapSize()));
+ print(" IsValidTile(): " + AIMap.IsValidTile(AIMap.GetMapSize() - AIMap.GetMapSizeX() - 2));
+ print(" DemolishTile(): " + AITile.DemolishTile(19592));
+ print(" DemolishTile(): " + AITile.DemolishTile(19335));
+ print(" Distance");
+ print(" DistanceManhattan(): " + AIMap.DistanceManhattan(1, 10000));
+ print(" DistanceMax(): " + AIMap.DistanceMax(1, 10000));
+ print(" DistanceSquare(): " + AIMap.DistanceSquare(1, 10000));
+ print(" DistanceFromEdge(): " + AIMap.DistanceFromEdge(10000));
+}
+
+function Regression::Marine()
+{
+ print("");
+ print("--AIMarine--");
+
+ print(" IsWaterDepotTile(): " + AIMarine.IsWaterDepotTile(32116));
+ print(" IsDockTile(): " + AIMarine.IsDockTile(32116));
+ print(" IsBuoyTile(): " + AIMarine.IsBuoyTile(32116));
+ print(" IsLockTile(): " + AIMarine.IsLockTile(32116));
+ print(" IsCanalTile(): " + AIMarine.IsCanalTile(32116));
+
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+ print(" BuildWaterDepot(): " + AIMarine.BuildWaterDepot(28479, false));
+ print(" BuildDock(): " + AIMarine.BuildDock(29253, true));
+ print(" BuildBuoy(): " + AIMarine.BuildBuoy(28481));
+ print(" BuildLock(): " + AIMarine.BuildLock(28487));
+ print(" HasTransportType(): " + AITile.HasTransportType(32127, AITile.TRANSPORT_WATER));
+ print(" BuildCanal(): " + AIMarine.BuildCanal(32127));
+ print(" HasTransportType(): " + AITile.HasTransportType(32127, AITile.TRANSPORT_WATER));
+ print(" IsWaterDepotTile(): " + AIMarine.IsWaterDepotTile(28479));
+ print(" IsDockTile(): " + AIMarine.IsDockTile(29253));
+ print(" IsBuoyTile(): " + AIMarine.IsBuoyTile(28481));
+ print(" IsLockTile(): " + AIMarine.IsLockTile(28487));
+ print(" IsCanalTile(): " + AIMarine.IsCanalTile(32127));
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+
+ print(" RemoveWaterDepot(): " + AIMarine.RemoveWaterDepot(28479));
+ print(" RemoveDock(): " + AIMarine.RemoveDock(29253));
+ print(" RemoveBuoy(): " + AIMarine.RemoveBuoy(28481));
+ print(" RemoveLock(): " + AIMarine.RemoveLock(28487));
+ print(" RemoveCanal(): " + AIMarine.RemoveCanal(32127));
+ print(" IsWaterDepotTile(): " + AIMarine.IsWaterDepotTile(28479));
+ print(" IsDockTile(): " + AIMarine.IsDockTile(29253));
+ print(" IsBuoyTile(): " + AIMarine.IsBuoyTile(28481));
+ print(" IsLockTile(): " + AIMarine.IsLockTile(28487));
+ print(" IsCanalTile(): " + AIMarine.IsCanalTile(32127));
+ print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.MY_COMPANY));
+
+ print(" BuildWaterDepot(): " + AIMarine.BuildWaterDepot(28479, false));
+ print(" BuildDock(): " + AIMarine.BuildDock(29253, true));
+}
+
+function Regression::Order()
+{
+ print("");
+ print("--Order--");
+ print(" GetOrderCount(): " + AIOrder.GetOrderCount(12));
+ print(" GetOrderDestination(): " + AIOrder.GetOrderDestination(12, 1));
+ print(" AreOrderFlagsValid(): " + AIOrder.AreOrderFlagsValid(33416, AIOrder.AIOF_TRANSFER));
+ print(" IsValidVehicleOrder(): " + AIOrder.IsValidVehicleOrder(12, 1));
+ print(" GetOrderFlags(): " + AIOrder.GetOrderFlags(12, 1));
+ print(" AppendOrder(): " + AIOrder.AppendOrder(12, 33416, AIOrder.AIOF_TRANSFER));
+ print(" InsertOrder(): " + AIOrder.InsertOrder(12, 0, 33416, AIOrder.AIOF_TRANSFER));
+ print(" GetOrderCount(): " + AIOrder.GetOrderCount(12));
+ print(" IsValidVehicleOrder(): " + AIOrder.IsValidVehicleOrder(12, 1));
+ print(" RemoveOrder(): " + AIOrder.RemoveOrder(12, 0));
+ print(" ChangeOrder(): " + AIOrder.ChangeOrder(12, 0, AIOrder.AIOF_FULL_LOAD));
+ print(" GetOrderDestination(): " + AIOrder.GetOrderDestination(12, 0));
+ print(" CopyOrders(): " + AIOrder.CopyOrders(12, 1));
+ print(" CopyOrders(): " + AIOrder.CopyOrders(13, 12));
+ print(" ShareOrders(): " + AIOrder.ShareOrders(13, 1));
+ print(" ShareOrders(): " + AIOrder.ShareOrders(13, 12));
+ print(" UnshareOrders(): " + AIOrder.UnshareOrders(13));
+ print(" AppendOrder(): " + AIOrder.AppendOrder(12, 33421, AIOrder.AIOF_NONE));
+
+ local list = AIStationList_Vehicle(12);
+
+ print("");
+ print("--StationList_Vehicle--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIStation.GetLocation);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIStation.GetCargoWaiting, 0);
+ print(" CargoWaiting(0) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIStation.GetCargoWaiting, 1);
+ print(" CargoWaiting(1) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIStation.GetCargoRating, 1);
+ print(" CargoRating(1) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIStation.GetDistanceManhattanToTile, 30000);
+ print(" DistanceManhattanToTile(30000) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIStation.GetDistanceSquareToTile, 30000);
+ print(" DistanceSquareToTile(30000) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIStation.IsWithinTownInfluence, 0);
+ print(" IsWithinTownInfluence(0) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list = AIVehicleList_Station(3);
+
+ print("");
+ print("--VehicleList_Station--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIVehicle.GetLocation);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ print(" foreach():");
+ foreach (idx, val in list) {
+ print(" " + idx + " => " + val);
+ }
+}
+
+function Regression::Pathfinder()
+{
+ print("");
+ print("--PathFinder--");
+ print(" Road Between Towns:");
+
+ local pathfinder = RPF();
+
+ local path = false;
+ pathfinder.InitializePath([AITown.GetLocation(0)], [AITown.GetLocation(1)]);
+ while (path == false) path = pathfinder.FindPath(1000);
+
+ while (path != null) {
+ print(" Tile " + path.GetTile());
+ path = path.GetParent();
+ }
+}
+
+function Regression::QueueTest(queue)
+{
+ print(" Count(): " + queue.Count());
+ print(" Peek(): " + queue.Peek());
+ print(" Pop(): " + queue.Pop());
+ queue.Insert(6, 20);
+ queue.Insert(7, 40);
+ queue.Insert(2, 10);
+ queue.Insert(5, 15);
+ queue.Insert(8, 60);
+ queue.Insert(1, 5);
+ queue.Insert(3, 10);
+ queue.Insert(9, 90);
+ queue.Insert(4, 10);
+ print(" Count(): " + queue.Count());
+ print(" Peek(): " + queue.Peek());
+ for (local i = 4; i > 0; i--) {
+ print(" Pop(): " + queue.Pop());
+ }
+ queue.Insert(1, 5);
+ queue.Insert(10, 100);
+ for (local i = queue.Count(); i > 0; i--) {
+ print(" Pop(): " + queue.Pop());
+ }
+ print(" Peek(): " + queue.Peek());
+ print(" Pop(): " + queue.Pop());
+ print(" Count(): " + queue.Count());
+}
+
+function Regression::Queues()
+{
+ print("");
+ print("--PriorityQueue--");
+ QueueTest(PQ());
+ print("");
+ print("--BinaryHeap--");
+ QueueTest(BH());
+ print("");
+ print("--FibonacciHeap--");
+ QueueTest(FH());
+}
+
+function Regression::RailTypeList()
+{
+ local list = AIRailTypeList();
+
+ print("");
+ print("--RailTypeList--");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" RailType: " + i);
+ print(" IsRailTypeAvailable(): " + AIRail.IsRailTypeAvailable(i));
+ }
+}
+
+function Regression::Rail()
+{
+ AIRail.SetCurrentRailType(0);
+
+ print("");
+ print("--Rail--");
+ print(" IsRailTile(): " + AIRail.IsRailTile(10002));
+ print(" BuildRailTrack(): " + AIRail.BuildRailTrack(10002, AIRail.RAILTRACK_NW_SE));
+ print(" BuildSignal(): " + AIRail.BuildSignal(10002, 10258, AIRail.SIGNALTYPE_PBS));
+ print(" RemoveRailTrack(): " + AIRail.RemoveRailTrack(10002, AIRail.RAILTRACK_NW_NE));
+ print(" RemoveRailTrack(): " + AIRail.RemoveRailTrack(10002, AIRail.RAILTRACK_NW_SE));
+ print(" BuildRail(): " + AIRail.BuildRail(10002, 10003, 10006));
+ print(" HasTransportType(): " + AITile.HasTransportType(10005, AITile.TRANSPORT_RAIL));
+ print(" HasTransportType(): " + AITile.HasTransportType(10006, AITile.TRANSPORT_RAIL));
+ print(" RemoveRail(): " + AIRail.RemoveRail(10005, 10004, 10001));
+
+ print(" Depot");
+ print(" IsRailTile(): " + AIRail.IsRailTile(33411));
+ print(" BuildRailDepot(): " + AIRail.BuildRailDepot(0, 1));
+ print(" BuildRailDepot(): " + AIRail.BuildRailDepot(33411, 33411));
+ print(" BuildRailDepot(): " + AIRail.BuildRailDepot(33411, 33414));
+ print(" BuildRailDepot(): " + AIRail.BuildRailDepot(33411, 33412));
+ print(" GetRailDepotFrontTile(): " + AIRail.GetRailDepotFrontTile(33411));
+ print(" IsBuildable(): " + AITile.IsBuildable(33411));
+ local list = AIDepotList(AITile.TRANSPORT_RAIL);
+ print(" DepotList");
+ print(" Count(): " + list.Count());
+ list.Valuate(AITile.GetDistanceManhattanToTile, 0);
+ print(" Depot distance from (0,0) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ print(" RemoveDepot(): " + AITile.DemolishTile(33411));
+
+ print(" Station");
+ print(" BuildRailStation(): " + AIRail.BuildRailStation(0, AIRail.RAILTRACK_NE_SW, 1, 1, false));
+ print(" BuildRailStation(): " + AIRail.BuildRailStation(7958, AIRail.RAILTRACK_NE_SW, 4, 5, false));
+ print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7957));
+ print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7958));
+ print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7959));
+ print(" RemoveRailStationTileRect(): " + AIRail.RemoveRailStationTileRect(7959, 7959));
+ print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7957));
+ print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7958));
+ print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7959));
+ print(" DemolishTile(): " + AITile.DemolishTile(7960));
+ print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7957));
+ print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7958));
+ print(" IsRailStationTile(): " + AIRail.IsRailStationTile(7959));
+}
+
+function Regression::Road()
+{
+ print("");
+ print("--Road--");
+ print(" Road");
+ print(" IsRoadTile(): " + AIRoad.IsRoadTile(33411));
+ print(" BuildRoad(): " + AIRoad.BuildRoad(0, 1));
+ print(" BuildRoad(): " + AIRoad.BuildRoad(33411, 33411));
+ print(" HasTransportType(): " + AITile.HasTransportType(33413, AITile.TRANSPORT_ROAD));
+ print(" BuildRoad(): " + AIRoad.BuildRoad(33411, 33414));
+ print(" HasTransportType(): " + AITile.HasTransportType(33413, AITile.TRANSPORT_ROAD));
+ print(" AreRoadTilesConnected(): " + AIRoad.AreRoadTilesConnected(33412, 33413));
+ print(" IsRoadTile(): " + AIRoad.IsRoadTile(33411));
+ print(" HasRoadType(Road): " + AIRoad.HasRoadType(33411, AIRoad.ROADTYPE_ROAD));
+ print(" HasRoadType(Tram): " + AIRoad.HasRoadType(33411, AIRoad.ROADTYPE_TRAM));
+ print(" GetNeighbourRoadCount(): " + AIRoad.GetNeighbourRoadCount(33412));
+ print(" RemoveRoad(): " + AIRoad.RemoveRoad(33411, 33411));
+ print(" RemoveRoad(): " + AIRoad.RemoveRoad(33411, 33412));
+ print(" RemoveRoad(): " + AIRoad.RemoveRoad(19590, 19590));
+ print(" RemoveRoad(): " + AIRoad.RemoveRoad(33411, 33414));
+ print(" BuildOneWayRoad(): " + AIRoad.BuildOneWayRoad(33411, 33414));
+ print(" AreRoadTilesConnected(): " + AIRoad.AreRoadTilesConnected(33412, 33413));
+ print(" AreRoadTilesConnected(): " + AIRoad.AreRoadTilesConnected(33413, 33412));
+ print(" BuildOneWayRoad(): " + AIRoad.BuildOneWayRoad(33413, 33412));
+ print(" AreRoadTilesConnected(): " + AIRoad.AreRoadTilesConnected(33412, 33413));
+ print(" AreRoadTilesConnected(): " + AIRoad.AreRoadTilesConnected(33413, 33412));
+ print(" BuildOneWayRoad(): " + AIRoad.BuildOneWayRoad(33412, 33413));
+ print(" BuildOneWayRoad(): " + AIRoad.BuildOneWayRoad(33413, 33412));
+ print(" AreRoadTilesConnected(): " + AIRoad.AreRoadTilesConnected(33412, 33413));
+ print(" AreRoadTilesConnected(): " + AIRoad.AreRoadTilesConnected(33413, 33412));
+ print(" RemoveRoad(): " + AIRoad.RemoveRoad(33411, 33412));
+ print(" IsRoadTypeAvailable(Road): " + AIRoad.IsRoadTypeAvailable(AIRoad.ROADTYPE_ROAD));
+ print(" IsRoadTypeAvailable(Tram): " + AIRoad.IsRoadTypeAvailable(AIRoad.ROADTYPE_TRAM));
+ print(" SetCurrentRoadType(Tram): " + AIRoad.SetCurrentRoadType(AIRoad.ROADTYPE_TRAM));
+ print(" GetCurrentRoadType(): " + AIRoad.GetCurrentRoadType());
+
+ print(" Depot");
+ print(" IsRoadTile(): " + AIRoad.IsRoadTile(33411));
+ print(" BuildRoadDepot(): " + AIRoad.BuildRoadDepot(0, 1));
+ print(" BuildRoadDepot(): " + AIRoad.BuildRoadDepot(33411, 33411));
+ print(" BuildRoadDepot(): " + AIRoad.BuildRoadDepot(33411, 33414));
+ print(" BuildRoadDepot(): " + AIRoad.BuildRoadDepot(33411, 33412));
+ print(" HasRoadType(Road): " + AIRoad.HasRoadType(33411, AIRoad.ROADTYPE_ROAD));
+ print(" HasRoadType(Tram): " + AIRoad.HasRoadType(33411, AIRoad.ROADTYPE_TRAM));
+ print(" GetLastError(): " + AIError.GetLastError());
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+ print(" GetErrorCategory(): " + AIError.GetErrorCategory());
+ print(" IsRoadTile(): " + AIRoad.IsRoadTile(33411));
+ print(" GetRoadDepotFrontTile(): " + AIRoad.GetRoadDepotFrontTile(33411));
+ print(" IsRoadDepotTile(): " + AIRoad.IsRoadDepotTile(33411));
+ print(" IsBuildable(): " + AITile.IsBuildable(33411));
+ local list = AIDepotList(AITile.TRANSPORT_ROAD);
+ print(" DepotList");
+ print(" Count(): " + list.Count());
+ list.Valuate(AITile.GetDistanceManhattanToTile, 0);
+ print(" Depot distance from (0,0) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ print(" RemoveRoadDepot(): " + AIRoad.RemoveRoadDepot(33411));
+ print(" RemoveRoadDepot(): " + AIRoad.RemoveRoadDepot(33411));
+
+ print(" Station");
+ print(" IsRoadTile(): " + AIRoad.IsRoadTile(33411));
+ print(" BuildRoadStation(): " + AIRoad.BuildRoadStation(0, 1, false, false, true));
+ print(" BuildRoadStation(): " + AIRoad.BuildRoadStation(33411, 33411, false, false, true));
+ print(" BuildRoadStation(): " + AIRoad.BuildRoadStation(33411, 33414, false, false, true));
+ print(" BuildRoadStation(): " + AIRoad.BuildRoadStation(33411, 33412, false, false, true));
+ print(" IsStationTile(): " + AITile.IsStationTile(33411));
+ print(" IsStationTile(): " + AITile.IsStationTile(33412));
+ print(" HasRoadType(Road): " + AIRoad.HasRoadType(33411, AIRoad.ROADTYPE_ROAD));
+ print(" HasRoadType(Tram): " + AIRoad.HasRoadType(33411, AIRoad.ROADTYPE_TRAM));
+ print(" IsRoadTile(): " + AIRoad.IsRoadTile(33411));
+ print(" GetDriveThroughBackTile(): " + AIRoad.GetDriveThroughBackTile(33411));
+ print(" GetRoadStationFrontTile(): " + AIRoad.GetRoadStationFrontTile(33411));
+ print(" IsRoadStationTile(): " + AIRoad.IsRoadStationTile(33411));
+ print(" IsDriveThroughRoadStationTile: " + AIRoad.IsDriveThroughRoadStationTile(33411));
+ print(" RemoveRoadStation(): " + AIRoad.RemoveRoadStation(33411));
+ print(" RemoveRoadStation(): " + AIRoad.RemoveRoadStation(33411));
+
+ print(" Station Types");
+ print(" BuildRoadStation(bus): " + AIRoad.BuildRoadStation(33411, 33410, false, false, true));
+ print(" BuildRoadStation(truck): " + AIRoad.BuildRoadStation(33421, 33422, true, false, true));
+ print(" BuildRoadStation(truck): " + AIRoad.BuildRoadStation(33412, 33413, true, false, true));
+ print(" BuildRoadStation(bus): " + AIRoad.BuildRoadStation(33411 + 256, 33411, false, false, true));
+ print(" BuildRoadStation(truck): " + AIRoad.BuildRoadStation(33412 + 256, 33412 + 256 + 256, true, false, true));
+ print(" BuildRoadStation(bus-drive): " + AIRoad.BuildRoadStation(33413, 33412, false, true, true));
+ print(" BuildRoadStation(truck-drive): " + AIRoad.BuildRoadStation(33414, 33413, true, true, true));
+ print(" BuildRoadStation(bus-drive): " + AIRoad.BuildRoadStation(33415, 33414, false, true, true));
+ print(" BuildRoadStation(truck-drive): " + AIRoad.BuildRoadStation(33416, 33415, true, true, true));
+ print(" BuildRoadDepot(): " + AIRoad.BuildRoadDepot(33417, 33418));
+ print(" GetRoadStationFrontTile(): " + AIRoad.GetRoadStationFrontTile(33411 + 256));
+ print(" GetRoadStationFrontTile(): " + AIRoad.GetRoadStationFrontTile(33412 + 256));
+ print(" IsDriveThroughRoadStationTile: " + AIRoad.IsDriveThroughRoadStationTile(33415));
+ print(" IsBuildable(): " + AITile.IsBuildable(33415));
+ print(" GetDriveThroughBackTile(): " + AIRoad.GetDriveThroughBackTile(33415));
+ print(" GetRoadStationFrontTile(): " + AIRoad.GetRoadStationFrontTile(33415));
+ print(" IsRoadTile(): " + AIRoad.IsRoadTile(33415));
+}
+
+function Regression::Sign()
+{
+ local j = 0;
+
+ print("");
+ print("--Sign--");
+ print(" BuildSign(33410, 'Some Sign'): " + AISign.BuildSign(33410, "Some Sign"));
+ print(" BuildSign(33411, 'Test'): " + AISign.BuildSign(33411, "Test"));
+ print(" SetName(1, 'Test2'): " + AISign.SetName(1, "Test2"));
+ local sign_id = AISign.BuildSign(33409, "Some other Sign");
+ print(" BuildSign(33409, 'Some other Sign'): " + sign_id);
+ print(" RemoveSign(" + sign_id + "): " + AISign.RemoveSign(sign_id));
+ print("");
+ print(" GetMaxSignID(): " + AISign.GetMaxSignID());
+ for (local i = -1; i < AISign.GetMaxSignID() + 1; i++) {
+ if (AISign.IsValidSign(i)) j++;
+ print(" Sign " + i);
+ print(" IsValidSign(): " + AISign.IsValidSign(i));
+ print(" GetName(): " + AISign.GetName(i));
+ print(" GetLocation(): " + AISign.GetLocation(i));
+ }
+ print(" Valid Signs: " + j);
+}
+
+function Regression::Station()
+{
+ print("");
+ print("--Station--");
+ print(" IsValidStation(0): " + AIStation.IsValidStation(0));
+ print(" IsValidStation(1000): " + AIStation.IsValidStation(1000));
+ print(" GetName(0): " + AIStation.GetName(0));
+ print(" SetName(0): " + AIStation.SetName(0, "Look, a station"));
+ print(" GetName(0): " + AIStation.GetName(0));
+ print(" GetLocation(1): " + AIStation.GetLocation(1));
+ print(" GetLocation(1000): " + AIStation.GetLocation(1000));
+ print(" GetStationID(33411): " + AIStation.GetStationID(33411));
+ print(" GetStationID(34411): " + AIStation.GetStationID(34411));
+ print(" GetCargoWaiting(0, 0): " + AIStation.GetCargoWaiting(0, 0));
+ print(" GetCargoWaiting(1000, 0): " + AIStation.GetCargoWaiting(1000, 0));
+ print(" GetCargoWaiting(0, 1000): " + AIStation.GetCargoWaiting(0, 1000));
+
+ print(" GetStationID(33411): " + AIStation.GetStationID(33411));
+ print(" HasRoadType(3, TRAM): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_TRAM));
+ print(" HasRoadType(3, ROAD): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_ROAD));
+ print(" HasRoadType(33411, TRAM): " + AIRoad.HasRoadType(33411, AIRoad.ROADTYPE_TRAM));
+ print(" HasRoadType(33411, ROAD): " + AIRoad.HasRoadType(33411, AIRoad.ROADTYPE_ROAD));
+ print(" HasStationType(3, BUS): " + AIStation.HasStationType(3, AIStation.STATION_BUS_STOP));
+ print(" HasStationType(3, TRAIN): " + AIStation.HasStationType(3, AIStation.STATION_TRAIN));
+
+ print(" GetCoverageRadius(BUS): " + AIStation.GetCoverageRadius(AIStation.STATION_BUS_STOP));
+ print(" GetCoverageRadius(TRUCK): " + AIStation.GetCoverageRadius(AIStation.STATION_TRUCK_STOP));
+ print(" GetCoverageRadius(TRAIN): " + AIStation.GetCoverageRadius(AIStation.STATION_TRAIN));
+
+ print(" GetNearestTown(): " + AIStation.GetNearestTown(0));
+ print(" GetNearestTown(): " + AIStation.GetNearestTown(10000));
+ print(" GetNearestTown(): " + AIStation.GetNearestTown(3));
+
+ local list = AIStationList(AIStation.STATION_BUS_STOP + AIStation.STATION_TRUCK_STOP);
+
+ print("");
+ print("--StationList--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIStation.GetLocation);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIStation.GetCargoWaiting, 0);
+ print(" CargoWaiting(0) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIStation.GetCargoWaiting, 1);
+ print(" CargoWaiting(1) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+}
+
+function Regression::Tile()
+{
+ print("");
+ print("--Tile--");
+ print(" HasTreeOnTile(): " + AITile.HasTreeOnTile(33148));
+ print(" IsFarmTile(): " + AITile.IsFarmTile(32892));
+ print(" IsRockTile(): " + AITile.IsRockTile(31606));
+ print(" IsRoughTile(): " + AITile.IsRoughTile(33674));
+ print(" HasTreeOnTile(): " + AITile.HasTreeOnTile(33404));
+ print(" IsFarmTile(): " + AITile.IsFarmTile(33404));
+ print(" IsRockTile(): " + AITile.IsRockTile(33404));
+ print(" IsRoughTile(): " + AITile.IsRoughTile(33404));
+ print(" IsSnowTile(): " + AITile.IsSnowTile(33404));
+ print(" IsDesertTile(): " + AITile.IsDesertTile(33404));
+ print(" PlantTree(): " + AITile.PlantTree(33404));
+ print(" HasTreeOnTile(): " + AITile.HasTreeOnTile(33404));
+ print(" PlantTree(): " + AITile.PlantTree(33404));
+ print(" HasTreeOnTile(): " + AITile.HasTreeOnTile(33661));
+ print(" PlantTreeRectangle(): " + AITile.PlantTreeRectangle(33404, 2, 2));
+ print(" HasTreeOnTile(): " + AITile.HasTreeOnTile(33661));
+}
+
+function Regression::TileList()
+{
+ local list = AITileList();
+
+ print("");
+ print("--TileList--");
+ print(" Count(): " + list.Count());
+ list.AddRectangle(27631 - 256 * 1, 256 * 1 + 27631 + 2);
+ print(" Count(): " + list.Count());
+
+ list.Valuate(AITile.GetSlope);
+ print(" Slope(): done");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ print(" " + i + " => " + AITile.GetComplementSlope(list.GetValue(i)));
+ print(" " + i + " => " + AITile.IsSteepSlope(list.GetValue(i)));
+ print(" " + i + " => " + AITile.IsHalftileSlope(list.GetValue(i)));
+ }
+ list.Clear();
+
+ print("");
+ print("--TileList--");
+ print(" Count(): " + list.Count());
+ list.AddRectangle(41895 - 256 * 2, 256 * 2 + 41895 + 8);
+ print(" Count(): " + list.Count());
+
+ list.Valuate(AITile.GetHeight);
+ print(" Height(): done");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list.Valuate(AITile.GetSlope);
+ list.KeepValue(0);
+ print(" Slope(): done");
+ print(" KeepValue(0): done");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list.Valuate(AITile.IsBuildable);
+ list.KeepValue(1);
+ print(" Buildable(): done");
+ print(" KeepValue(1): done");
+ print(" Count(): " + list.Count());
+
+ list.Valuate(AITile.IsBuildableRectangle, 3, 3);
+ print(" BuildableRectangle(3, 3) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AITile.GetDistanceManhattanToTile, 30000);
+ print(" DistanceManhattanToTile(30000) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AITile.GetDistanceSquareToTile, 30000);
+ print(" DistanceSquareToTile(30000) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AITile.GetOwner);
+ print(" GetOwner() ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AITile.GetClosestTown);
+ print(" GetClosestTown() ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list.Valuate(AITile.GetCargoAcceptance, 0, 1, 1, 3);
+ list.KeepAboveValue(10);
+ print(" CargoAcceptance(): done");
+ print(" KeepAboveValue(10): done");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list.Valuate(AIRoad.IsRoadTile);
+ list.KeepValue(1);
+ print(" RoadTile(): done");
+ print(" KeepValue(1): done");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list.Valuate(AIRoad.GetNeighbourRoadCount);
+ list.KeepValue(1);
+ print(" NeighbourRoadCount():done");
+ print(" KeepValue(1): done");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list.AddRectangle(54421 - 256 * 2, 256 * 2 + 54421 + 8);
+ list.Valuate(AITile.IsWaterTile);
+ print(" Water(): done");
+ print(" Count(): " + list.Count());
+ print(" ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list = AITileList_IndustryAccepting(0, 3);
+ print("");
+ print("--TileList_IndustryAccepting--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AITile.GetCargoAcceptance, 3, 1, 1, 3);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list = AITileList_IndustryProducing(1, 3);
+ print("");
+ print("--TileList_IndustryProducing--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AITile.GetCargoProduction, 7, 1, 1, 3);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ list = AITileList_StationType(4, AIStation.STATION_BUS_STOP);
+ print("");
+ print("--TileList_StationType--");
+ print(" Count(): " + list.Count());
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+}
+
+function Regression::Town()
+{
+ local j = 0;
+
+ print("");
+ print("--Town--");
+ print(" GetMaxTownID(): " + AITown.GetMaxTownID());
+ print(" GetTownCount(): " + AITown.GetTownCount());
+ for (local i = -1; i < AITown.GetMaxTownID() + 1; i++) {
+ if (AITown.IsValidTown(i)) j++;
+ print(" Town " + i);
+ print(" IsValidTown(): " + AITown.IsValidTown(i));
+ print(" GetName(): " + AITown.GetName(i));
+ print(" GetPopulation(): " + AITown.GetPopulation(i));
+ print(" GetLocation(): " + AITown.GetLocation(i));
+ print(" GetHouseCount(): " + AITown.GetHouseCount(i));
+ print(" GetRating(): " + AITown.GetRating(i, AICompany.MY_COMPANY));
+ }
+ print(" Valid Towns: " + j);
+ print(" GetTownCount(): " + AITown.GetTownCount());
+}
+
+function Regression::TownList()
+{
+ local list = AITownList();
+
+ print("");
+ print("--TownList--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AITown.GetLocation);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AITown.GetDistanceManhattanToTile, 30000);
+ print(" DistanceManhattanToTile(30000) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AITown.GetDistanceSquareToTile, 30000);
+ print(" DistanceSquareToTile(30000) ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AITown.IsWithinTownInfluence, AITown.GetLocation(0));
+ print(" IsWithinTownInfluence(" + AITown.GetLocation(0) + ") ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AITown.GetAllowedNoise);
+ print(" GetAllowedNoise() ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AITown.GetPopulation);
+ list.KeepAboveValue(500);
+ print(" KeepAboveValue(500): done");
+ print(" Count(): " + list.Count());
+ print(" Population ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+
+ print(" HasStatue(): " + AITown.HasStatue(list.Begin()));
+ print(" GetRoadReworkDuration(): " + AITown.GetRoadReworkDuration(list.Begin()));
+ print(" GetExclusiveRightsCompany(): " + AITown.GetExclusiveRightsCompany(list.Begin()));
+ print(" GetExclusiveRightsDuration(): " + AITown.GetExclusiveRightsDuration(list.Begin()));
+ print(" IsActionAvailable(BUILD_STATUE): " + AITown.IsActionAvailable(list.Begin(), AITown.TOWN_ACTION_BUILD_STATUE));
+ print(" PerformTownAction(BUILD_STATUE): " + AITown.PerformTownAction(list.Begin(), AITown.TOWN_ACTION_BUILD_STATUE));
+ print(" IsActionAvailable(BUILD_STATUE): " + AITown.IsActionAvailable(list.Begin(), AITown.TOWN_ACTION_BUILD_STATUE));
+ print(" HasStatue(): " + AITown.HasStatue(list.Begin()));
+}
+
+function Regression::Tunnel()
+{
+ print("");
+ print("--Tunnel--");
+ print(" IsTunnelTile(): " + AITunnel.IsTunnelTile(29050));
+ print(" RemoveTunnel(): " + AITunnel.RemoveTunnel(29050));
+ print(" GetOtherTunnelEnd(): " + AITunnel.GetOtherTunnelEnd(29050));
+ print(" BuildTunnel(): " + AITunnel.BuildTunnel(AIVehicle.VEHICLE_ROAD, 29050));
+ print(" GetOtherTunnelEnd(): " + AITunnel.GetOtherTunnelEnd(29050));
+ print(" IsTunnelTile(): " + AITunnel.IsTunnelTile(29050));
+ print(" IsTunnelTile(): " + AITunnel.IsTunnelTile(28026));
+ print(" RemoveTunnel(): " + AITunnel.RemoveTunnel(29050));
+ print(" IsTunnelTile(): " + AITunnel.IsTunnelTile(29050));
+
+ print(" --Errors--");
+ print(" BuildTunnel(): " + AITunnel.BuildTunnel(AIVehicle.VEHICLE_ROAD, 7529));
+ print(" BuildTunnel(): " + AITunnel.BuildTunnel(AIVehicle.VEHICLE_ROAD, 8043));
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+ print(" RemoveTunnel(): " + AITunnel.RemoveTunnel(7529));
+}
+
+function Regression::Vehicle()
+{
+ local accounting = AIAccounting();
+
+ print("");
+ print("--Vehicle--");
+ print(" IsValidVehicle(-1): " + AIVehicle.IsValidVehicle(-1));
+ print(" IsValidVehicle(0): " + AIVehicle.IsValidVehicle(0));
+ print(" IsValidVehicle(12): " + AIVehicle.IsValidVehicle(12));
+ print(" ISValidVehicle(9999): " + AIVehicle.IsValidVehicle(9999));
+
+ local bank = AICompany.GetBankBalance(AICompany.MY_COMPANY);
+
+ print(" BuildVehicle(): " + AIVehicle.BuildVehicle(33417, 153));
+ print(" IsValidVehicle(12): " + AIVehicle.IsValidVehicle(12));
+ print(" CloneVehicle(): " + AIVehicle.CloneVehicle(33417, 12, true));
+
+ local bank_after = AICompany.GetBankBalance(AICompany.MY_COMPANY);
+
+ print(" --Accounting--");
+ print(" GetCosts(): " + accounting.GetCosts());
+ print(" Should be: " + (bank - bank_after));
+ print(" ResetCosts(): " + accounting.ResetCosts());
+
+ bank = AICompany.GetBankBalance(AICompany.MY_COMPANY);
+
+ print(" SellVehicle(13): " + AIVehicle.SellVehicle(13));
+ print(" IsInDepot(): " + AIVehicle.IsInDepot(12));
+ print(" IsStoppedInDepot(): " + AIVehicle.IsStoppedInDepot(12));
+ print(" StartStopVehicle(): " + AIVehicle.StartStopVehicle(12));
+ print(" IsInDepot(): " + AIVehicle.IsInDepot(12));
+ print(" IsStoppedInDepot(): " + AIVehicle.IsStoppedInDepot(12));
+ print(" SendVehicleToDepot(): " + AIVehicle.SendVehicleToDepot(12));
+ print(" IsInDepot(): " + AIVehicle.IsInDepot(12));
+ print(" IsStoppedInDepot(): " + AIVehicle.IsStoppedInDepot(12));
+
+ bank_after = AICompany.GetBankBalance(AICompany.MY_COMPANY);
+
+ print(" --Accounting--");
+ print(" GetCosts(): " + accounting.GetCosts());
+ print(" Should be: " + (bank - bank_after));
+
+ print(" GetName(): " + AIVehicle.GetName(12));
+ print(" SetName(): " + AIVehicle.SetName(12, "MyVehicleName"));
+ print(" GetName(): " + AIVehicle.GetName(12));
+ print(" CloneVehicle(): " + AIVehicle.CloneVehicle(33417, 12, true));
+
+ print(" --VehicleData--");
+ print(" GetLocation(): " + AIVehicle.GetLocation(12));
+ print(" GetEngineType(): " + AIVehicle.GetEngineType(12));
+ print(" GetUnitNumber(): " + AIVehicle.GetUnitNumber(12));
+ print(" GetAge(): " + AIVehicle.GetAge(12));
+ print(" GetMaxAge(): " + AIVehicle.GetMaxAge(12));
+ print(" GetAgeLeft(): " + AIVehicle.GetAgeLeft(12));
+ print(" GetCurrentSpeed(): " + AIVehicle.GetCurrentSpeed(12));
+ print(" GetRunningCost(): " + AIVehicle.GetRunningCost(12));
+ print(" GetProfitThisYear(): " + AIVehicle.GetProfitThisYear(12));
+ print(" GetProfitLastYear(): " + AIVehicle.GetProfitLastYear(12));
+ print(" GetCurrentValue(): " + AIVehicle.GetCurrentValue(12));
+ print(" GetVehicleType(): " + AIVehicle.GetVehicleType(12));
+ print(" GetRoadType(): " + AIVehicle.GetRoadType(12));
+ print(" GetCapacity(): " + AIVehicle.GetCapacity(12, 10));
+ print(" GetCargoLoad(): " + AIVehicle.GetCargoLoad(12, 10));
+ print(" IsInDepot(): " + AIVehicle.IsInDepot(12));
+ print(" GetNumWagons(): " + AIVehicle.GetNumWagons(12));
+ print(" GetWagonEngineType(): " + AIVehicle.GetWagonEngineType(12, 0));
+ print(" GetWagonAge(): " + AIVehicle.GetWagonAge(12, 0));
+ print(" GetLength(): " + AIVehicle.GetLength(12));
+
+ print(" GetOwner(): " + AITile.GetOwner(32119));
+ print(" BuildVehicle(): " + AIVehicle.BuildVehicle(32119, 219));
+ print(" IsValidVehicle(14): " + AIVehicle.IsValidVehicle(14));
+ print(" IsInDepot(14): " + AIVehicle.IsInDepot(14));
+ print(" IsStoppedInDepot(14): " + AIVehicle.IsStoppedInDepot(14));
+ print(" IsValidVehicle(15): " + AIVehicle.IsValidVehicle(15));
+ print(" IsInDepot(15): " + AIVehicle.IsInDepot(15));
+ print(" IsStoppedInDepot(15): " + AIVehicle.IsStoppedInDepot(15));
+
+ print(" BuildVehicle(): " + AIVehicle.BuildVehicle(28479, 204));
+ print(" IsValidVehicle(16): " + AIVehicle.IsValidVehicle(16));
+ print(" IsInDepot(16): " + AIVehicle.IsInDepot(16));
+ print(" IsStoppedInDepot(16): " + AIVehicle.IsStoppedInDepot(16));
+
+ print(" BuildRailDepot(): " + AIRail.BuildRailDepot(10008, 10000));
+ print(" BuildVehicle(): " + AIVehicle.BuildVehicle(10008, 9));
+ print(" BuildVehicle(): " + AIVehicle.BuildVehicle(10008, 27));
+ print(" BuildVehicle(): " + AIVehicle.BuildVehicle(10008, 27));
+ print(" MoveWagon(): " + AIVehicle.MoveWagon(18, 0, true, 17, 0));
+ print(" GetNumWagons(): " + AIVehicle.GetNumWagons(17));
+ print(" GetLength(): " + AIVehicle.GetLength(17));
+ print(" GetWagonEngineType(): " + AIVehicle.GetWagonEngineType(17, 0));
+ print(" GetWagonAge(): " + AIVehicle.GetWagonAge(17, 0));
+ print(" GetWagonEngineType(): " + AIVehicle.GetWagonEngineType(17, 1));
+ print(" GetWagonAge(): " + AIVehicle.GetWagonAge(17, 1));
+ print(" GetWagonEngineType(): " + AIVehicle.GetWagonEngineType(17 2));
+ print(" GetWagonAge(): " + AIVehicle.GetWagonAge(17, 2));
+ print(" GetWagonEngineType(): " + AIVehicle.GetWagonEngineType(17 3));
+ print(" GetWagonAge(): " + AIVehicle.GetWagonAge(17, 3));
+
+ print(" --Errors--");
+ print(" RefitVehicle(): " + AIVehicle.RefitVehicle(12, 0));
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+ print(" SellVehicle(): " + AIVehicle.SellVehicle(12));
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+ print(" SendVehicleToDepot(): " + AIVehicle.SendVehicleToDepot(13));
+ print(" GetLastErrorString(): " + AIError.GetLastErrorString());
+
+ local list = AIVehicleList();
+
+ print("");
+ print("--VehicleList--");
+ print(" Count(): " + list.Count());
+ list.Valuate(AIVehicle.GetLocation);
+ print(" Location ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetEngineType);
+ print(" EngineType ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetUnitNumber);
+ print(" UnitNumber ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetAge);
+ print(" Age ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetMaxAge);
+ print(" MaxAge ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetAgeLeft);
+ print(" AgeLeft ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetCurrentSpeed);
+ print(" CurrentSpeed ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetRunningCost);
+ print(" RunningCost ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetProfitThisYear);
+ print(" ProfitThisYear ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetProfitLastYear);
+ print(" ProfitLastYear ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetCurrentValue);
+ print(" CurrentValue ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetVehicleType);
+ print(" VehicleType ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetRoadType);
+ print(" RoadType ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetCapacity, 10);
+ print(" VehicleType ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+ list.Valuate(AIVehicle.GetCargoLoad, 10);
+ print(" VehicleType ListDump:");
+ for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+ print(" " + i + " => " + list.GetValue(i));
+ }
+}
+
+function Regression::PrintSubsidy(subsidy_id)
+{
+ print(" --Subsidy (" + subsidy_id + ") --");
+ print(" IsValidSubsidy(): " + AISubsidy.IsValidSubsidy(subsidy_id));
+ print(" IsAwarded(): " + AISubsidy.IsAwarded(subsidy_id));
+ print(" GetAwardedTo(): " + AISubsidy.GetAwardedTo(subsidy_id));
+ print(" GetExpireDate(): " + AISubsidy.GetExpireDate(subsidy_id));
+ print(" SourceIsTown(): " + AISubsidy.SourceIsTown(subsidy_id));
+ print(" GetSource(): " + AISubsidy.GetSource(subsidy_id));
+ print(" DestionationIsTown(): " + AISubsidy.DestinationIsTown(subsidy_id));
+ print(" GetDestionation(): " + AISubsidy.GetDestination(subsidy_id));
+ print(" GetCargoType(): " + AISubsidy.GetCargoType(subsidy_id));
+}
+
+
+function Regression::Start()
+{
+ this.TestInit();
+ this.Std();
+ this.Base();
+ this.List();
+ this.Airport();
+ this.Bridge();
+ this.BridgeList();
+ this.Cargo();
+ this.CargoList();
+ this.Company();
+ this.Engine();
+ this.EngineList();
+ this.Graph();
+ this.Group();
+ this.Industry();
+ this.IndustryList();
+ this.IndustryTypeList();
+ this.Map();
+ this.Marine();
+ this.Pathfinder();
+ this.Queues();
+ this.Rail();
+ this.RailTypeList();
+ this.Road();
+ this.Sign();
+ this.Station();
+ this.Tile();
+ this.TileList();
+ this.Town();
+ this.TownList();
+ this.Tunnel();
+ this.Vehicle();
+ /* Order has to be after Vehicle */
+ this.Order();
+ print("");
+ print(" First Subsidy Test");
+ PrintSubsidy(0);
+
+ while (AIEventController.IsEventWaiting()) {
+ local e = AIEventController.GetNextEvent();
+ print(" GetNextEvent: " + (e == null ? "null" : "instance"));
+ print(" GetEventType: " + e.GetEventType());
+ switch (e.GetEventType()) {
+ case AIEvent.AI_ET_SUBSIDY_OFFER: {
+ local c = AIEventSubsidyOffer.Convert(e);
+ print(" EventName: SubsidyOffer");
+ PrintSubsidy(c.GetSubsidyID());
+ } break;
+
+ case AIEvent.AI_ET_VEHICLE_WAITING_IN_DEPOT: {
+ local c = AIEventVehicleWaitingInDepot.Convert(e);
+ print(" EventName: VehicleWaitingInDepot");
+ print(" VehicleID: " + c.GetVehicleID());
+ } break;
+
+ default:
+ print(" Unknown Event");
+ break;
+ }
+ }
+ print(" IsEventWaiting: false");
+}
+