(svn r12411) [NoAI] -Change [API CHANGE]: order of params of CargoIncome is changed
[NoAI] -Change [API CHANGE]: AIList.Valuate is changed; it now works on any normal function and removes the need for _valuator.[ch]pp.
Please check documentation how to alter your AI to work with this commit, or check the changes in regression.
--- a/bin/ai/regression/regression.nut Tue Mar 25 12:09:42 2008 +0000
+++ b/bin/ai/regression/regression.nut Tue Mar 25 12:12:45 2008 +0000
@@ -116,27 +116,27 @@
print("");
print("--BridgeList--");
print(" Count(): " + list.Count());
- list.Valuate(AIBridgeList_vMaxSpeed());
+ list.Valuate(AIBridge.GetMaxSpeed);
print(" MaxSpeed ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIBridgeList_vPrice(5));
+ 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(AIBridgeList_vMaxLength());
+ list.Valuate(AIBridge.GetMaxLength);
print(" MaxLength ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIBridgeList_vMinLength());
+ list.Valuate(AIBridge.GetMinLength);
print(" MinLength ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIBridgeList_vYearAvailable());
+ list.Valuate(AIBridge.GetYearAvailable);
print(" YearAvailable ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
@@ -147,12 +147,12 @@
print("");
print("--BridgeList_Length--");
print(" Count(): " + list.Count());
- list.Valuate(AIBridgeList_vMaxSpeed());
+ list.Valuate(AIBridge.GetMaxSpeed);
print(" MaxSpeed ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIBridgeList_vPrice(14));
+ list.Valuate(AIBridge.GetPrice, 14);
print(" Price ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
@@ -168,10 +168,10 @@
print(" IsValidCargo(): " + AICargo.IsValidCargo(i));
print(" GetCargoLabel(): '" + AICargo.GetCargoLabel(i)+ "'");
print(" IsFreight(): " + AICargo.IsFreight(i));
- print(" GetCargoIncome(0, 0): " + AICargo.GetCargoIncome(0, 0, i));
- print(" GetCargoIncome(10, 10): " + AICargo.GetCargoIncome(10, 10, i));
- print(" GetCargoIncome(100, 10): " + AICargo.GetCargoIncome(100, 10, i));
- print(" GetCargoIncome(10, 100): " + AICargo.GetCargoIncome(10, 100, 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));
}
}
@@ -182,13 +182,13 @@
print("");
print("--CargoList--");
print(" Count(): " + list.Count());
- list.Valuate(AICargoList_vIsFreight());
+ list.Valuate(AICargo.IsFreight);
print(" IsFreight ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AICargoList_vCargoIncomes(100, 100));
+ 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));
@@ -271,27 +271,27 @@
print("");
print("--EngineList--");
print(" Count(): " + list.Count());
- list.Valuate(AIEngineList_vCargoType());
+ list.Valuate(AIEngine.GetCargoType);
print(" CargoType ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIEngineList_vCapacity());
+ list.Valuate(AIEngine.GetCapacity);
print(" Capacity ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIEngineList_vReliability());
+ list.Valuate(AIEngine.GetReliability);
print(" Reliability ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIEngineList_vMaxSpeed());
+ list.Valuate(AIEngine.GetMaxSpeed);
print(" MaxSpeed ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIEngineList_vPrice());
+ list.Valuate(AIEngine.GetPrice);
print(" Price ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
@@ -375,27 +375,27 @@
print("");
print("--IndustryList--");
print(" Count(): " + list.Count());
- list.Valuate(AIIndustryList_vLocation());
+ list.Valuate(AIIndustry.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIIndustryList_vDistanceManhattanToTile(30000));
+ 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(AIIndustryList_vDistanceSquareToTile(30000));
+ 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(AIIndustryList_vCargoAccepted(1));
+ 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(AIIndustryList_vProduction(1));
+ list.Valuate(AIIndustry.GetProduction, 1);
list.KeepAboveValue(50);
print(" KeepAboveValue(50): done");
print(" Count(): " + list.Count());
@@ -407,7 +407,7 @@
list = AIIndustryList_CargoAccepting(1);
print("--IndustryList_CargoAccepting--");
print(" Count(): " + list.Count());
- list.Valuate(AIIndustryList_vLocation());
+ list.Valuate(AIIndustry.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
@@ -416,13 +416,18 @@
list = AIIndustryList_CargoProducing(1);
print("--IndustryList_CargoProducing--");
print(" Count(): " + list.Count());
- list.Valuate(AIIndustryList_vLocation());
+ list.Valuate(AIIndustry.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
+function CustomValuator(list_id)
+{
+ return list_id * 4343;
+}
+
function Regression::List()
{
local list = AIList();
@@ -448,7 +453,12 @@
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIList_vRandomize());
+ list.Valuate(CustomValuator);
+ 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));
@@ -603,32 +613,32 @@
print("");
print("--StationList_Vehicle--");
print(" Count(): " + list.Count());
- list.Valuate(AIStationList_vLocation());
+ list.Valuate(AIStation.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIStationList_vCargoWaiting(0));
+ 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(AIStationList_vCargoWaiting(1));
+ 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(AIStationList_vCargoRating(1));
+ 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(AIStationList_vDistanceManhattanToTile(30000));
+ 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(AIStationList_vDistanceSquareToTile(30000));
+ list.Valuate(AIStation.GetDistanceSquareToTile, 30000);
print(" DistanceSquareToTile(30000) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
@@ -639,7 +649,7 @@
print("");
print("--VehicleList_Station--");
print(" Count(): " + list.Count());
- list.Valuate(AIVehicleList_vLocation());
+ list.Valuate(AIVehicle.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
@@ -777,17 +787,17 @@
print("");
print("--StationList--");
print(" Count(): " + list.Count());
- list.Valuate(AIStationList_vLocation());
+ list.Valuate(AIStation.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIStationList_vCargoWaiting(0));
+ 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(AIStationList_vCargoWaiting(1));
+ list.Valuate(AIStation.GetCargoWaiting, 1);
print(" CargoWaiting(1) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
@@ -804,7 +814,7 @@
list.AddRectangle(41895 - 256 * 2, 256 * 2 + 41895 + 8);
print(" Count(): " + list.Count());
- list.Valuate(AITileList_vHeight());
+ list.Valuate(AITile.GetHeight);
print(" Height(): done");
print(" Count(): " + list.Count());
print(" ListDump:");
@@ -812,7 +822,7 @@
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AITileList_vSlope());
+ list.Valuate(AITile.GetSlope);
list.KeepValue(0);
print(" Slope(): done");
print(" KeepValue(0): done");
@@ -822,29 +832,29 @@
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AITileList_vBuildable());
+ list.Valuate(AITile.IsBuildable);
list.KeepValue(1);
print(" Buildable(): done");
print(" KeepValue(1): done");
print(" Count(): " + list.Count());
- list.Valuate(AITileList_vBuildableRectangle(3, 3));
+ 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(AITileList_vDistanceManhattanToTile(30000));
+ 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(AITileList_vDistanceSquareToTile(30000));
+ 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(AITileList_vCargoAcceptance(0, 1, 1, 3));
+ list.Valuate(AITile.GetCargoAcceptance, 0, 1, 1, 3);
list.KeepAboveValue(10);
print(" CargoAcceptance(): done");
print(" KeepAboveValue(10): done");
@@ -854,7 +864,7 @@
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AITileList_vRoadTile());
+ list.Valuate(AIRoad.IsRoadTile);
list.KeepValue(1);
print(" RoadTile(): done");
print(" KeepValue(1): done");
@@ -864,7 +874,7 @@
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AITileList_vNeighbourRoadCount());
+ list.Valuate(AIRoad.GetNeighbourRoadCount);
list.KeepValue(1);
print(" NeighbourRoadCount():done");
print(" KeepValue(1): done");
@@ -875,7 +885,7 @@
}
list.AddRectangle(54421 - 256 * 2, 256 * 2 + 54421 + 8);
- list.Valuate(AITileList_vWater());
+ list.Valuate(AITile.IsWater);
print(" Water(): done");
print(" Count(): " + list.Count());
print(" ListDump:");
@@ -887,7 +897,7 @@
print("");
print("--TileList_IndustryAccepting--");
print(" Count(): " + list.Count());
- list.Valuate(AITileList_vCargoAcceptance(3, 1, 1, 3));
+ 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));
@@ -897,7 +907,7 @@
print("");
print("--TileList_IndustryProducing--");
print(" Count(): " + list.Count());
- list.Valuate(AITileList_vCargoProduction(7, 1, 1, 3));
+ 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));
@@ -931,22 +941,22 @@
print("");
print("--TownList--");
print(" Count(): " + list.Count());
- list.Valuate(AITownList_vLocation());
+ list.Valuate(AITown.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AITownList_vDistanceManhattanToTile(30000));
+ 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(AITownList_vDistanceSquareToTile(30000));
+ 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(AITownList_vPopulation());
+ list.Valuate(AITown.GetPopulation);
list.KeepAboveValue(500);
print(" KeepAboveValue(500): done");
print(" Count(): " + list.Count());
@@ -1057,52 +1067,52 @@
print("");
print("--VehicleList--");
print(" Count(): " + list.Count());
- list.Valuate(AIVehicleList_vLocation());
+ list.Valuate(AIVehicle.GetLocation);
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIVehicleList_vEngineType());
+ list.Valuate(AIVehicle.GetEngineType);
print(" EngineType ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIVehicleList_vUnitNumber());
+ list.Valuate(AIVehicle.GetUnitNumber);
print(" UnitNumber ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIVehicleList_vAge());
+ list.Valuate(AIVehicle.GetAge);
print(" Age ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIVehicleList_vMaxAge());
+ list.Valuate(AIVehicle.GetMaxAge);
print(" MaxAge ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIVehicleList_vAgeLeft());
+ list.Valuate(AIVehicle.GetAgeLeft);
print(" AgeLeft ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIVehicleList_vRunningCost());
+ list.Valuate(AIVehicle.GetRunningCost);
print(" RunningCost ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIVehicleList_vProfitThisYear());
+ list.Valuate(AIVehicle.GetProfitThisYear);
print(" ProfitThisYear ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIVehicleList_vProfitLastYear());
+ list.Valuate(AIVehicle.GetProfitLastYear);
print(" ProfitLastYear ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
- list.Valuate(AIVehicleList_vVehicleType());
+ list.Valuate(AIVehicle.GetVehicleType);
print(" VehicleType ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
--- a/bin/ai/regression/regression.txt Tue Mar 25 12:09:42 2008 +0000
+++ b/bin/ai/regression/regression.txt Tue Mar 25 12:12:45 2008 +0000
@@ -136,6 +136,108 @@
1097 => 1097
1098 => 1098
1099 => 1099
+ Custom ListDump:
+ 1 => 4343
+ 2 => 8686
+ 1000 => 4343000
+ 1001 => 4347343
+ 1002 => 4351686
+ 1003 => 4356029
+ 1004 => 4360372
+ 1005 => 4364715
+ 1006 => 4369058
+ 1007 => 4373401
+ 1008 => 4377744
+ 1009 => 4382087
+ 1010 => 4386430
+ 1011 => 4390773
+ 1012 => 4395116
+ 1013 => 4399459
+ 1014 => 4403802
+ 1015 => 4408145
+ 1016 => 4412488
+ 1017 => 4416831
+ 1018 => 4421174
+ 1019 => 4425517
+ 1020 => 4429860
+ 1021 => 4434203
+ 1022 => 4438546
+ 1023 => 4442889
+ 1024 => 4447232
+ 1025 => 4451575
+ 1026 => 4455918
+ 1027 => 4460261
+ 1028 => 4464604
+ 1029 => 4468947
+ 1030 => 4473290
+ 1031 => 4477633
+ 1032 => 4481976
+ 1033 => 4486319
+ 1034 => 4490662
+ 1035 => 4495005
+ 1036 => 4499348
+ 1037 => 4503691
+ 1038 => 4508034
+ 1039 => 4512377
+ 1040 => 4516720
+ 1041 => 4521063
+ 1042 => 4525406
+ 1043 => 4529749
+ 1044 => 4534092
+ 1045 => 4538435
+ 1046 => 4542778
+ 1047 => 4547121
+ 1048 => 4551464
+ 1049 => 4555807
+ 1051 => 4564493
+ 1052 => 4568836
+ 1053 => 4573179
+ 1054 => 4577522
+ 1055 => 4581865
+ 1056 => 4586208
+ 1057 => 4590551
+ 1058 => 4594894
+ 1059 => 4599237
+ 1060 => 4603580
+ 1061 => 4607923
+ 1062 => 4612266
+ 1063 => 4616609
+ 1064 => 4620952
+ 1065 => 4625295
+ 1066 => 4629638
+ 1067 => 4633981
+ 1068 => 4638324
+ 1069 => 4642667
+ 1070 => 4647010
+ 1071 => 4651353
+ 1072 => 4655696
+ 1073 => 4660039
+ 1074 => 4664382
+ 1075 => 4668725
+ 1076 => 4673068
+ 1077 => 4677411
+ 1078 => 4681754
+ 1079 => 4686097
+ 1080 => 4690440
+ 1081 => 4694783
+ 1082 => 4699126
+ 1083 => 4703469
+ 1084 => 4707812
+ 1085 => 4712155
+ 1086 => 4716498
+ 1087 => 4720841
+ 1088 => 4725184
+ 1089 => 4729527
+ 1090 => 4733870
+ 1091 => 4738213
+ 1092 => 4742556
+ 1093 => 4746899
+ 1094 => 4751242
+ 1095 => 4755585
+ 1096 => 4759928
+ 1097 => 4764271
+ 1098 => 4768614
+ 1099 => 4772957
Randomize ListDump:
1 => -619704336
2 => 1166439751
--- a/projects/openttd_vs80.vcproj Tue Mar 25 12:09:42 2008 +0000
+++ b/projects/openttd_vs80.vcproj Tue Mar 25 12:12:45 2008 +0000
@@ -1940,10 +1940,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_bridgelist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_cargo.hpp"
>
</File>
@@ -1952,10 +1948,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_cargolist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_company.hpp"
>
</File>
@@ -1972,10 +1964,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_enginelist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_event.hpp"
>
</File>
@@ -1996,18 +1984,10 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_industrylist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_list.hpp"
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_list_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_map.hpp"
>
</File>
@@ -2052,10 +2032,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_stationlist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_testmode.hpp"
>
</File>
@@ -2068,10 +2044,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_tilelist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_town.hpp"
>
</File>
@@ -2080,10 +2052,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_townlist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_tunnel.hpp"
>
</File>
@@ -2099,10 +2067,6 @@
RelativePath=".\..\src\ai\api\ai_vehiclelist.hpp"
>
</File>
- <File
- RelativePath=".\..\src\ai\api\ai_vehiclelist_valuator.hpp"
- >
- </File>
</Filter>
<Filter
Name="AI API Implementation"
@@ -2132,10 +2096,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_bridgelist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_cargo.cpp"
>
</File>
@@ -2144,10 +2104,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_cargolist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_company.cpp"
>
</File>
@@ -2164,10 +2120,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_enginelist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_event.cpp"
>
</File>
@@ -2188,18 +2140,10 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_industrylist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_list.cpp"
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_list_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_map.cpp"
>
</File>
@@ -2240,10 +2184,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_stationlist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_testmode.cpp"
>
</File>
@@ -2256,10 +2196,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_tilelist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_town.cpp"
>
</File>
@@ -2268,10 +2204,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_townlist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_tunnel.cpp"
>
</File>
@@ -2287,10 +2219,6 @@
RelativePath=".\..\src\ai\api\ai_vehiclelist.cpp"
>
</File>
- <File
- RelativePath=".\..\src\ai\api\ai_vehiclelist_valuator.cpp"
- >
- </File>
</Filter>
<Filter
Name="Blitters"
--- a/projects/openttd_vs90.vcproj Tue Mar 25 12:09:42 2008 +0000
+++ b/projects/openttd_vs90.vcproj Tue Mar 25 12:12:45 2008 +0000
@@ -1937,10 +1937,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_bridgelist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_cargo.hpp"
>
</File>
@@ -1949,10 +1945,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_cargolist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_company.hpp"
>
</File>
@@ -1969,10 +1961,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_enginelist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_event.hpp"
>
</File>
@@ -1993,18 +1981,10 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_industrylist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_list.hpp"
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_list_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_map.hpp"
>
</File>
@@ -2049,10 +2029,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_stationlist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_testmode.hpp"
>
</File>
@@ -2065,10 +2041,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_tilelist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_town.hpp"
>
</File>
@@ -2077,10 +2049,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_townlist_valuator.hpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_tunnel.hpp"
>
</File>
@@ -2096,10 +2064,6 @@
RelativePath=".\..\src\ai\api\ai_vehiclelist.hpp"
>
</File>
- <File
- RelativePath=".\..\src\ai\api\ai_vehiclelist_valuator.hpp"
- >
- </File>
</Filter>
<Filter
Name="AI API Implementation"
@@ -2129,10 +2093,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_bridgelist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_cargo.cpp"
>
</File>
@@ -2141,10 +2101,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_cargolist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_company.cpp"
>
</File>
@@ -2161,10 +2117,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_enginelist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_event.cpp"
>
</File>
@@ -2185,18 +2137,10 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_industrylist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_list.cpp"
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_list_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_map.cpp"
>
</File>
@@ -2237,10 +2181,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_stationlist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_testmode.cpp"
>
</File>
@@ -2253,10 +2193,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_tilelist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_town.cpp"
>
</File>
@@ -2265,10 +2201,6 @@
>
</File>
<File
- RelativePath=".\..\src\ai\api\ai_townlist_valuator.cpp"
- >
- </File>
- <File
RelativePath=".\..\src\ai\api\ai_tunnel.cpp"
>
</File>
@@ -2284,10 +2216,6 @@
RelativePath=".\..\src\ai\api\ai_vehiclelist.cpp"
>
</File>
- <File
- RelativePath=".\..\src\ai\api\ai_vehiclelist_valuator.cpp"
- >
- </File>
</Filter>
<Filter
Name="Blitters"
--- a/source.list Tue Mar 25 12:09:42 2008 +0000
+++ b/source.list Tue Mar 25 12:12:45 2008 +0000
@@ -400,23 +400,18 @@
ai/api/ai_base.hpp
ai/api/ai_bridge.hpp
ai/api/ai_bridgelist.hpp
-ai/api/ai_bridgelist_valuator.hpp
ai/api/ai_cargo.hpp
ai/api/ai_cargolist.hpp
-ai/api/ai_cargolist_valuator.hpp
ai/api/ai_company.hpp
ai/api/ai_controller.hpp
ai/api/ai_engine.hpp
ai/api/ai_enginelist.hpp
-ai/api/ai_enginelist_valuator.hpp
ai/api/ai_event.hpp
ai/api/ai_event_types.hpp
ai/api/ai_execmode.hpp
ai/api/ai_industry.hpp
ai/api/ai_industrylist.hpp
-ai/api/ai_industrylist_valuator.hpp
ai/api/ai_list.hpp
-ai/api/ai_list_valuator.hpp
ai/api/ai_map.hpp
ai/api/ai_marine.hpp
ai/api/ai_object.hpp
@@ -428,19 +423,15 @@
ai/api/ai_sign.hpp
ai/api/ai_station.hpp
ai/api/ai_stationlist.hpp
-ai/api/ai_stationlist_valuator.hpp
ai/api/ai_testmode.hpp
ai/api/ai_tile.hpp
ai/api/ai_tilelist.hpp
-ai/api/ai_tilelist_valuator.hpp
ai/api/ai_town.hpp
ai/api/ai_townlist.hpp
-ai/api/ai_townlist_valuator.hpp
ai/api/ai_tunnel.hpp
ai/api/ai_transactionmode.hpp
ai/api/ai_vehicle.hpp
ai/api/ai_vehiclelist.hpp
-ai/api/ai_vehiclelist_valuator.hpp
# AI API Implementation
ai/api/ai_abstractlist.cpp
@@ -449,23 +440,18 @@
ai/api/ai_base.cpp
ai/api/ai_bridge.cpp
ai/api/ai_bridgelist.cpp
-ai/api/ai_bridgelist_valuator.cpp
ai/api/ai_cargo.cpp
ai/api/ai_cargolist.cpp
-ai/api/ai_cargolist_valuator.cpp
ai/api/ai_company.cpp
ai/api/ai_controller.cpp
ai/api/ai_engine.cpp
ai/api/ai_enginelist.cpp
-ai/api/ai_enginelist_valuator.cpp
ai/api/ai_event.cpp
ai/api/ai_event_types.cpp
ai/api/ai_execmode.cpp
ai/api/ai_industry.cpp
ai/api/ai_industrylist.cpp
-ai/api/ai_industrylist_valuator.cpp
ai/api/ai_list.cpp
-ai/api/ai_list_valuator.cpp
ai/api/ai_map.cpp
ai/api/ai_marine.cpp
ai/api/ai_object.cpp
@@ -476,19 +462,15 @@
ai/api/ai_sign.cpp
ai/api/ai_station.cpp
ai/api/ai_stationlist.cpp
-ai/api/ai_stationlist_valuator.cpp
ai/api/ai_testmode.cpp
ai/api/ai_tile.cpp
ai/api/ai_tilelist.cpp
-ai/api/ai_tilelist_valuator.cpp
ai/api/ai_town.cpp
ai/api/ai_townlist.cpp
-ai/api/ai_townlist_valuator.cpp
ai/api/ai_tunnel.cpp
ai/api/ai_transactionmode.cpp
ai/api/ai_vehicle.cpp
ai/api/ai_vehiclelist.cpp
-ai/api/ai_vehiclelist_valuator.cpp
#end
# Blitters
--- a/src/ai/ai_squirrel.cpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/ai_squirrel.cpp Tue Mar 25 12:12:45 2008 +0000
@@ -28,23 +28,18 @@
#include "api/ai_base.hpp.sq"
#include "api/ai_bridge.hpp.sq"
#include "api/ai_bridgelist.hpp.sq"
-#include "api/ai_bridgelist_valuator.hpp.sq"
#include "api/ai_cargo.hpp.sq"
#include "api/ai_cargolist.hpp.sq"
-#include "api/ai_cargolist_valuator.hpp.sq"
#include "api/ai_company.hpp.sq"
#include "api/ai_controller.hpp.sq"
#include "api/ai_engine.hpp.sq"
#include "api/ai_enginelist.hpp.sq"
-#include "api/ai_enginelist_valuator.hpp.sq"
#include "api/ai_event.hpp.sq"
#include "api/ai_event_types.hpp.sq"
#include "api/ai_execmode.hpp.sq"
#include "api/ai_industry.hpp.sq"
#include "api/ai_industrylist.hpp.sq"
-#include "api/ai_industrylist_valuator.hpp.sq"
#include "api/ai_list.hpp.sq"
-#include "api/ai_list_valuator.hpp.sq"
#include "api/ai_map.hpp.sq"
#include "api/ai_marine.hpp.sq"
#include "api/ai_order.hpp.sq"
@@ -55,19 +50,15 @@
#include "api/ai_sign.hpp.sq"
#include "api/ai_station.hpp.sq"
#include "api/ai_stationlist.hpp.sq"
-#include "api/ai_stationlist_valuator.hpp.sq"
#include "api/ai_testmode.hpp.sq"
#include "api/ai_tile.hpp.sq"
#include "api/ai_tilelist.hpp.sq"
-#include "api/ai_tilelist_valuator.hpp.sq"
#include "api/ai_town.hpp.sq"
#include "api/ai_townlist.hpp.sq"
-#include "api/ai_townlist_valuator.hpp.sq"
#include "api/ai_transactionmode.hpp.sq"
#include "api/ai_tunnel.hpp.sq"
#include "api/ai_vehicle.hpp.sq"
#include "api/ai_vehiclelist.hpp.sq"
-#include "api/ai_vehiclelist_valuator.hpp.sq"
static FSquirrel iFSquirrel; ///< Tell the AI-core that we have an AI with which we like to play.
@@ -227,24 +218,12 @@
SQAIBridge_Register(this->engine);
SQAIBridgeList_Register(this->engine);
SQAIBridgeList_Length_Register(this->engine);
- SQAIBridgeList_vMaxLength_Register(this->engine);
- SQAIBridgeList_vMaxSpeed_Register(this->engine);
- SQAIBridgeList_vMinLength_Register(this->engine);
- SQAIBridgeList_vPrice_Register(this->engine);
- SQAIBridgeList_vYearAvailable_Register(this->engine);
SQAICargo_Register(this->engine);
SQAICargoList_Register(this->engine);
- SQAICargoList_vCargoIncomes_Register(this->engine);
- SQAICargoList_vIsFreight_Register(this->engine);
SQAICompany_Register(this->engine);
SQAIController_Register(this->engine);
SQAIEngine_Register(this->engine);
SQAIEngineList_Register(this->engine);
- SQAIEngineList_vCapacity_Register(this->engine);
- SQAIEngineList_vCargoType_Register(this->engine);
- SQAIEngineList_vMaxSpeed_Register(this->engine);
- SQAIEngineList_vPrice_Register(this->engine);
- SQAIEngineList_vReliability_Register(this->engine);
SQAIEvent_Register(this->engine);
SQAIEventController_Register(this->engine);
SQAIEventTest_Register(this->engine);
@@ -254,13 +233,7 @@
SQAIIndustryList_Register(this->engine);
SQAIIndustryList_CargoAccepting_Register(this->engine);
SQAIIndustryList_CargoProducing_Register(this->engine);
- SQAIIndustryList_vCargoAccepted_Register(this->engine);
- SQAIIndustryList_vDistanceManhattanToTile_Register(this->engine);
- SQAIIndustryList_vDistanceSquareToTile_Register(this->engine);
- SQAIIndustryList_vLocation_Register(this->engine);
- SQAIIndustryList_vProduction_Register(this->engine);
SQAIList_Register(this->engine);
- SQAIList_vRandomize_Register(this->engine);
SQAIMap_Register(this->engine);
SQAIMarine_Register(this->engine);
SQAIOrder_Register(this->engine);
@@ -272,48 +245,18 @@
SQAIStation_Register(this->engine);
SQAIStationList_Register(this->engine);
SQAIStationList_Vehicle_Register(this->engine);
- SQAIStationList_vCargoRating_Register(this->engine);
- SQAIStationList_vCargoWaiting_Register(this->engine);
- SQAIStationList_vDistanceManhattanToTile_Register(this->engine);
- SQAIStationList_vDistanceSquareToTile_Register(this->engine);
- SQAIStationList_vLocation_Register(this->engine);
SQAITestMode_Register(this->engine);
SQAITile_Register(this->engine);
SQAITileList_Register(this->engine);
SQAITileList_IndustryAccepting_Register(this->engine);
SQAITileList_IndustryProducing_Register(this->engine);
- SQAITileList_vBuildable_Register(this->engine);
- SQAITileList_vBuildableRectangle_Register(this->engine);
- SQAITileList_vCargoAcceptance_Register(this->engine);
- SQAITileList_vCargoProduction_Register(this->engine);
- SQAITileList_vDistanceManhattanToTile_Register(this->engine);
- SQAITileList_vDistanceSquareToTile_Register(this->engine);
- SQAITileList_vHeight_Register(this->engine);
- SQAITileList_vNeighbourRoadCount_Register(this->engine);
- SQAITileList_vRoadTile_Register(this->engine);
- SQAITileList_vSlope_Register(this->engine);
- SQAITileList_vWater_Register(this->engine);
SQAITown_Register(this->engine);
SQAITownList_Register(this->engine);
- SQAITownList_vDistanceManhattanToTile_Register(this->engine);
- SQAITownList_vDistanceSquareToTile_Register(this->engine);
- SQAITownList_vLocation_Register(this->engine);
- SQAITownList_vPopulation_Register(this->engine);
SQAITransactionMode_Register(this->engine);
SQAITunnel_Register(this->engine);
SQAIVehicle_Register(this->engine);
SQAIVehicleList_Register(this->engine);
SQAIVehicleList_Station_Register(this->engine);
- SQAIVehicleList_vAge_Register(this->engine);
- SQAIVehicleList_vAgeLeft_Register(this->engine);
- SQAIVehicleList_vEngineType_Register(this->engine);
- SQAIVehicleList_vLocation_Register(this->engine);
- SQAIVehicleList_vMaxAge_Register(this->engine);
- SQAIVehicleList_vProfitLastYear_Register(this->engine);
- SQAIVehicleList_vProfitThisYear_Register(this->engine);
- SQAIVehicleList_vRunningCost_Register(this->engine);
- SQAIVehicleList_vUnitNumber_Register(this->engine);
- SQAIVehicleList_vVehicleType_Register(this->engine);
this->engine->SetGlobalPointer(this->engine);
}
--- a/src/ai/api/ai_abstractlist.cpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_abstractlist.cpp Tue Mar 25 12:12:45 2008 +0000
@@ -2,6 +2,7 @@
/** @file ai_abstractlist.cpp Implementation of AIAbstractList */
+#include <squirrel.h>
#include "ai_abstractlist.hpp"
#include "../../debug.h"
@@ -542,17 +543,64 @@
this->RemoveList(&tmp);
}
-void AIAbstractList::Valuate(const AIAbstractList::Valuator &proc)
-{
- if (this->GetListName() != NULL && proc.GetListName() != NULL && strcmp(this->GetListName(), proc.GetListName()) != 0) {
- DEBUG(ai, 0, "WARNING: You are trying to use a valuator for %s on a list which\n", this->GetListName());
- DEBUG(ai, 0, " is based on %s. In general, this can't work. Expect fuzzy results!\n", proc.GetListName());
+SQInteger AIAbstractList::Valuate(HSQUIRRELVM vm) {
+ int nparam = sq_gettop(vm) - 2;
+
+ /* Get the list instance and the function to call */
+ HSQOBJECT obj_list, obj_func;
+ sq_getstackobj(vm, 1, &obj_list);
+ sq_getstackobj(vm, 2, &obj_func);
+
+ /* Read the params */
+ HSQOBJECT obj_params[10];
+ assert(nparam < 10);
+ for (int i = 0; i < nparam; i++) {
+ sq_getstackobj(vm, i + 3, &obj_params[i]);
}
+ /* Remove all unneeded stuff */
+ sq_pop(vm, nparam + 1);
+ /* Walk all items, and query the result */
this->buckets.clear();
for (AIAbstractListMap::iterator iter = this->items.begin(); iter != this->items.end(); iter++) {
- int32 value = proc.Valuate((*iter).first);
+ /* The function to call */
+ sq_pushobject(vm, obj_func);
+ /* The 'list' instance; this is most likely wrong, but we need to send something ;) */
+ sq_pushobject(vm, obj_list);
+
+ /* Now send the params */
+ sq_pushinteger(vm, (*iter).first);
+ for (int i = 0; i < nparam; i++) {
+ sq_pushobject(vm, obj_params[i]);
+ }
+
+ /* Call the function */
+ if (SQ_FAILED(sq_call(vm, nparam + 2, SQTrue, SQTrue))) return -1;
+
+ /* Retreive the return value */
+ SQInteger value;
+ switch (sq_gettype(vm, -1)) {
+ case OT_INTEGER: {
+ sq_getinteger(vm, -1, &value);
+ } break;
+
+ case OT_BOOL: {
+ SQBool v;
+ sq_getbool(vm, -1, &v);
+ value = v ? 1 : 0;
+ } break;
+
+ default: {
+ sq_throwerror(vm, "return value of valuator is not valid (not integer/bool)");
+ return -1;
+ }
+ }
+ /* Remove junk */
+ sq_pop(vm, 2);
+
(*iter).second = value;
this->buckets[value].insert((*iter).first);
}
+
+ return 0;
}
--- a/src/ai/api/ai_abstractlist.hpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_abstractlist.hpp Tue Mar 25 12:12:45 2008 +0000
@@ -262,9 +262,20 @@
/**
* Give all items a value defined by the valuator you give.
- * @note the valuator should be a valid instance.
+ * @param vm Internal pointer, not something you need to specify.
+ * @note The first param for this function is the function you want to use
+ * to valuate the items in the list. It should accept at least one integer
+ * which will be set to the item, and should return an integer, which will
+ * become the value of the item. Additional parameters are possible, then
+ * you need to add them to the Valuator to. Example:
+ * list.Valuate(AIBridge.GetPrice, 5);
+ * list.Valuate(AIBridge.GetMaxLength);
+ * function MyVal(bridge_id, myparam) {
+ * return myparam * bridge_id; // This is silly
+ * }
+ * list.Valuate(MyVal, 12);
*/
- void Valuate(const AIAbstractList::Valuator &proc);
+ SQInteger Valuate(HSQUIRRELVM vm);
private:
/**
--- a/src/ai/api/ai_abstractlist.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_abstractlist.hpp.sq Tue Mar 25 12:12:45 2008 +0000
@@ -54,7 +54,7 @@
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::KeepTop, "KeepTop", 2, "xi");
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::KeepBottom, "KeepBottom", 2, "xi");
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::KeepList, "KeepList", 2, "xx");
- SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Valuate, "Valuate", 2, "xx");
+ SQAIAbstractList.DefSQAdvancedMethod(engine, &AIAbstractList::Valuate, "Valuate");
SQAIAbstractList.PostRegister(engine);
}
--- a/src/ai/api/ai_base.cpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_base.cpp Tue Mar 25 12:12:45 2008 +0000
@@ -13,6 +13,11 @@
return ::Random();
}
+/* static */ uint32 AIBase::RandItem(int unused_param)
+{
+ return AIBase::Rand();
+}
+
/* static */ uint AIBase::RandRange(uint max)
{
/* We pick RandomRange if we are in SP (so when saved, we do the same over and over)
@@ -21,7 +26,17 @@
return ::RandomRange(max);
}
+/* static */ uint32 AIBase::RandRangeItem(int unused_param, uint max)
+{
+ return AIBase::RandRange(max);
+}
+
/* static */ bool AIBase::Chance(uint out, uint max)
{
return (uint16)Rand() <= (uint16)((65536 * out) / max);
}
+
+/* static */ bool AIBase::ChanceItem(int unused_param, uint out, uint max)
+{
+ return AIBase::Chance(out, max);
+}
--- a/src/ai/api/ai_base.hpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_base.hpp Tue Mar 25 12:12:45 2008 +0000
@@ -32,6 +32,13 @@
static uint32 Rand();
/**
+ * Get a random value.
+ * @param unused_param This param is not used, but is needed to work with lists.
+ * @return a random value between 0 and MAX(uint32).
+ */
+ static uint32 RandItem(int unused_param);
+
+ /**
* Get a random value in a range.
* @param max the maximum value it will return.
* @return a random value between 0 .. max.
@@ -39,11 +46,27 @@
static uint RandRange(uint max);
/**
+ * Get a random value in a range.
+ * @param unused_param This param is not used, but is needed to work with lists.
+ * @param max the maximum value it will return.
+ * @return a random value between 0 .. max.
+ */
+ static uint RandRangeItem(int unused_param, uint max);
+
+ /**
* Returns approximatelly 'out' times true when called 'max' times.
* After all, it is a random function.
* @return true if the chance worked out.
*/
static bool Chance(uint out, uint max);
+
+ /**
+ * Returns approximatelly 'out' times true when called 'max' times.
+ * After all, it is a random function.
+ * @param unused_param This param is not used, but is needed to work with lists.
+ * @return true if the chance worked out.
+ */
+ static bool ChanceItem(int unused_param, uint out, uint max);
};
#endif /* AI_BASE_HPP */
--- a/src/ai/api/ai_base.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_base.hpp.sq Tue Mar 25 12:12:45 2008 +0000
@@ -14,10 +14,13 @@
SQAIBase.PreRegister(engine);
SQAIBase.AddConstructor<void (AIBase::*)(), 1>(engine, "x");
- SQAIBase.DefSQStaticMethod(engine, &AIBase::GetClassName, "GetClassName", 1, "x");
- SQAIBase.DefSQStaticMethod(engine, &AIBase::Rand, "Rand", 1, "x");
- SQAIBase.DefSQStaticMethod(engine, &AIBase::RandRange, "RandRange", 2, "xi");
- SQAIBase.DefSQStaticMethod(engine, &AIBase::Chance, "Chance", 3, "xii");
+ SQAIBase.DefSQStaticMethod(engine, &AIBase::GetClassName, "GetClassName", 1, "x");
+ SQAIBase.DefSQStaticMethod(engine, &AIBase::Rand, "Rand", 1, "x");
+ SQAIBase.DefSQStaticMethod(engine, &AIBase::RandItem, "RandItem", 2, "xi");
+ SQAIBase.DefSQStaticMethod(engine, &AIBase::RandRange, "RandRange", 2, "xi");
+ SQAIBase.DefSQStaticMethod(engine, &AIBase::RandRangeItem, "RandRangeItem", 3, "xii");
+ SQAIBase.DefSQStaticMethod(engine, &AIBase::Chance, "Chance", 3, "xii");
+ SQAIBase.DefSQStaticMethod(engine, &AIBase::ChanceItem, "ChanceItem", 4, "xiii");
SQAIBase.PostRegister(engine);
}
--- a/src/ai/api/ai_bridgelist_valuator.cpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#include "ai_bridgelist_valuator.hpp"
-#include "ai_bridge.hpp"
-
-int32 AIBridgeList_vMaxSpeed::Valuate(int32 bridge_id) const
-{
- return AIBridge::GetMaxSpeed(bridge_id);
-}
-
-int32 AIBridgeList_vPrice::Valuate(int32 bridge_id) const
-{
- return AIBridge::GetPrice(bridge_id, this->length);
-}
-
-int32 AIBridgeList_vMaxLength::Valuate(int32 bridge_id) const
-{
- return AIBridge::GetMaxLength(bridge_id);
-}
-
-int32 AIBridgeList_vMinLength::Valuate(int32 bridge_id) const
-{
- return AIBridge::GetMinLength(bridge_id);
-}
-
-int32 AIBridgeList_vYearAvailable::Valuate(int32 bridge_id) const
-{
- return AIBridge::GetYearAvailable(bridge_id);
-}
-
--- a/src/ai/api/ai_bridgelist_valuator.hpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/* $Id$ */
-
-/** @file ai_bridgelist_valuator.hpp all the valuators for AIBridgeList */
-
-#ifndef AI_BRIDGELIST_VALUATOR_HPP
-#define AI_BRIDGELIST_VALUATOR_HPP
-
-#include "ai_abstractlist.hpp"
-
-/**
- * Get the maximum speed for entries in an AIBridgeList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIBridgeList instance.
- * @ingroup AIBridgeList
- */
-class AIBridgeList_vMaxSpeed : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIBridgeList_vMaxSpeed"; }
-
-private:
- const char *GetListName() const { return "AIBridgeList"; }
- int32 Valuate(int32 bridge_id) const;
-};
-
-/**
- * Get the price for entries in an AIBridgeList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIBridgeList instance.
- * @ingroup AIBridgeList
- */
-class AIBridgeList_vPrice : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIBridgeList_vPrice"; }
-
- /**
- * @param length The length of the bridge you want to build.
- */
- AIBridgeList_vPrice(uint length) :
- length(length)
- {}
-
-private:
- uint length;
-
- const char *GetListName() const { return "AIBridgeList"; }
- int32 Valuate(int32 bridge_id) const;
-};
-
-/**
- * Get the maximum bridge length for entries in an AIBridgeList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIBridgeList instance.
- * @ingroup AIBridgeList
- */
-class AIBridgeList_vMaxLength : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIBridgeList_vMaxLength"; }
-
-private:
- const char *GetListName() const { return "AIBridgeList"; }
- int32 Valuate(int32 bridge_id) const;
-};
-
-/**
- * Get the minimum bridge length for entries in an AIBridgeList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIBridgeList instance.
- * @ingroup AIBridgeList
- */
-class AIBridgeList_vMinLength : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIBridgeList_vMinLength"; }
-
-private:
- const char *GetListName() const { return "AIBridgeList"; }
- int32 Valuate(int32 bridge_id) const;
-};
-
-/**
- * Get the year in which the bridge will be available for all entries in an
- * AIBridgeList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIBridgeList instance.
- * @ingroup AIBridgeList
- */
-class AIBridgeList_vYearAvailable : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIBridgeList_vYearAvailable"; }
-
-private:
- const char *GetListName() const { return "AIBridgeList"; }
- int32 Valuate(int32 bridge_id) const;
-};
-
-#endif /* AI_BRIDGELIST_VALUATOR_HPP */
--- a/src/ai/api/ai_bridgelist_valuator.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-#include "ai_bridgelist_valuator.hpp"
-
-namespace SQConvert {
- /* Allow AIBridgeList_vMaxSpeed to be used as Squirrel parameter */
- template <> AIBridgeList_vMaxSpeed *GetParam(ForceType<AIBridgeList_vMaxSpeed *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vMaxSpeed *)instance; }
- template <> AIBridgeList_vMaxSpeed &GetParam(ForceType<AIBridgeList_vMaxSpeed &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vMaxSpeed *)instance; }
- template <> const AIBridgeList_vMaxSpeed *GetParam(ForceType<const AIBridgeList_vMaxSpeed *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vMaxSpeed *)instance; }
- template <> const AIBridgeList_vMaxSpeed &GetParam(ForceType<const AIBridgeList_vMaxSpeed &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vMaxSpeed *)instance; }
- template <> int Return<AIBridgeList_vMaxSpeed *>(HSQUIRRELVM vm, AIBridgeList_vMaxSpeed *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIBridgeList_vMaxSpeed", res, NULL, DefSQDestructorCallback<AIBridgeList_vMaxSpeed>); return 1; }
-}; // namespace SQConvert
-
-void SQAIBridgeList_vMaxSpeed_Register(Squirrel *engine) {
- DefSQClass <AIBridgeList_vMaxSpeed> SQAIBridgeList_vMaxSpeed("AIBridgeList_vMaxSpeed");
- SQAIBridgeList_vMaxSpeed.PreRegister(engine);
- SQAIBridgeList_vMaxSpeed.AddConstructor<void (AIBridgeList_vMaxSpeed::*)(), 1>(engine, "x");
-
- SQAIBridgeList_vMaxSpeed.DefSQStaticMethod(engine, &AIBridgeList_vMaxSpeed::GetClassName, "GetClassName", 1, "x");
-
- SQAIBridgeList_vMaxSpeed.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIBridgeList_vPrice to be used as Squirrel parameter */
- template <> AIBridgeList_vPrice *GetParam(ForceType<AIBridgeList_vPrice *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vPrice *)instance; }
- template <> AIBridgeList_vPrice &GetParam(ForceType<AIBridgeList_vPrice &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vPrice *)instance; }
- template <> const AIBridgeList_vPrice *GetParam(ForceType<const AIBridgeList_vPrice *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vPrice *)instance; }
- template <> const AIBridgeList_vPrice &GetParam(ForceType<const AIBridgeList_vPrice &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vPrice *)instance; }
- template <> int Return<AIBridgeList_vPrice *>(HSQUIRRELVM vm, AIBridgeList_vPrice *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIBridgeList_vPrice", res, NULL, DefSQDestructorCallback<AIBridgeList_vPrice>); return 1; }
-}; // namespace SQConvert
-
-void SQAIBridgeList_vPrice_Register(Squirrel *engine) {
- DefSQClass <AIBridgeList_vPrice> SQAIBridgeList_vPrice("AIBridgeList_vPrice");
- SQAIBridgeList_vPrice.PreRegister(engine);
- SQAIBridgeList_vPrice.AddConstructor<void (AIBridgeList_vPrice::*)(uint length), 2>(engine, "xi");
-
- SQAIBridgeList_vPrice.DefSQStaticMethod(engine, &AIBridgeList_vPrice::GetClassName, "GetClassName", 1, "x");
-
- SQAIBridgeList_vPrice.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIBridgeList_vMaxLength to be used as Squirrel parameter */
- template <> AIBridgeList_vMaxLength *GetParam(ForceType<AIBridgeList_vMaxLength *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vMaxLength *)instance; }
- template <> AIBridgeList_vMaxLength &GetParam(ForceType<AIBridgeList_vMaxLength &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vMaxLength *)instance; }
- template <> const AIBridgeList_vMaxLength *GetParam(ForceType<const AIBridgeList_vMaxLength *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vMaxLength *)instance; }
- template <> const AIBridgeList_vMaxLength &GetParam(ForceType<const AIBridgeList_vMaxLength &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vMaxLength *)instance; }
- template <> int Return<AIBridgeList_vMaxLength *>(HSQUIRRELVM vm, AIBridgeList_vMaxLength *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIBridgeList_vMaxLength", res, NULL, DefSQDestructorCallback<AIBridgeList_vMaxLength>); return 1; }
-}; // namespace SQConvert
-
-void SQAIBridgeList_vMaxLength_Register(Squirrel *engine) {
- DefSQClass <AIBridgeList_vMaxLength> SQAIBridgeList_vMaxLength("AIBridgeList_vMaxLength");
- SQAIBridgeList_vMaxLength.PreRegister(engine);
- SQAIBridgeList_vMaxLength.AddConstructor<void (AIBridgeList_vMaxLength::*)(), 1>(engine, "x");
-
- SQAIBridgeList_vMaxLength.DefSQStaticMethod(engine, &AIBridgeList_vMaxLength::GetClassName, "GetClassName", 1, "x");
-
- SQAIBridgeList_vMaxLength.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIBridgeList_vMinLength to be used as Squirrel parameter */
- template <> AIBridgeList_vMinLength *GetParam(ForceType<AIBridgeList_vMinLength *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vMinLength *)instance; }
- template <> AIBridgeList_vMinLength &GetParam(ForceType<AIBridgeList_vMinLength &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vMinLength *)instance; }
- template <> const AIBridgeList_vMinLength *GetParam(ForceType<const AIBridgeList_vMinLength *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vMinLength *)instance; }
- template <> const AIBridgeList_vMinLength &GetParam(ForceType<const AIBridgeList_vMinLength &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vMinLength *)instance; }
- template <> int Return<AIBridgeList_vMinLength *>(HSQUIRRELVM vm, AIBridgeList_vMinLength *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIBridgeList_vMinLength", res, NULL, DefSQDestructorCallback<AIBridgeList_vMinLength>); return 1; }
-}; // namespace SQConvert
-
-void SQAIBridgeList_vMinLength_Register(Squirrel *engine) {
- DefSQClass <AIBridgeList_vMinLength> SQAIBridgeList_vMinLength("AIBridgeList_vMinLength");
- SQAIBridgeList_vMinLength.PreRegister(engine);
- SQAIBridgeList_vMinLength.AddConstructor<void (AIBridgeList_vMinLength::*)(), 1>(engine, "x");
-
- SQAIBridgeList_vMinLength.DefSQStaticMethod(engine, &AIBridgeList_vMinLength::GetClassName, "GetClassName", 1, "x");
-
- SQAIBridgeList_vMinLength.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIBridgeList_vYearAvailable to be used as Squirrel parameter */
- template <> AIBridgeList_vYearAvailable *GetParam(ForceType<AIBridgeList_vYearAvailable *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vYearAvailable *)instance; }
- template <> AIBridgeList_vYearAvailable &GetParam(ForceType<AIBridgeList_vYearAvailable &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vYearAvailable *)instance; }
- template <> const AIBridgeList_vYearAvailable *GetParam(ForceType<const AIBridgeList_vYearAvailable *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBridgeList_vYearAvailable *)instance; }
- template <> const AIBridgeList_vYearAvailable &GetParam(ForceType<const AIBridgeList_vYearAvailable &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBridgeList_vYearAvailable *)instance; }
- template <> int Return<AIBridgeList_vYearAvailable *>(HSQUIRRELVM vm, AIBridgeList_vYearAvailable *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIBridgeList_vYearAvailable", res, NULL, DefSQDestructorCallback<AIBridgeList_vYearAvailable>); return 1; }
-}; // namespace SQConvert
-
-void SQAIBridgeList_vYearAvailable_Register(Squirrel *engine) {
- DefSQClass <AIBridgeList_vYearAvailable> SQAIBridgeList_vYearAvailable("AIBridgeList_vYearAvailable");
- SQAIBridgeList_vYearAvailable.PreRegister(engine);
- SQAIBridgeList_vYearAvailable.AddConstructor<void (AIBridgeList_vYearAvailable::*)(), 1>(engine, "x");
-
- SQAIBridgeList_vYearAvailable.DefSQStaticMethod(engine, &AIBridgeList_vYearAvailable::GetClassName, "GetClassName", 1, "x");
-
- SQAIBridgeList_vYearAvailable.PostRegister(engine);
-}
--- a/src/ai/api/ai_cargo.cpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_cargo.cpp Tue Mar 25 12:12:45 2008 +0000
@@ -35,7 +35,7 @@
return cargo->is_freight;
}
-/* static */ int32 AICargo::GetCargoIncome(uint32 distance, uint32 days_in_transit, CargoID cargo_type)
+/* static */ int32 AICargo::GetCargoIncome(CargoID cargo_type, uint32 distance, uint32 days_in_transit)
{
if (!IsValidCargo(cargo_type)) return 0;
return ::GetTransportedGoodsIncome(1, distance, days_in_transit, cargo_type);
--- a/src/ai/api/ai_cargo.hpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_cargo.hpp Tue Mar 25 12:12:45 2008 +0000
@@ -42,12 +42,12 @@
/**
* Get the income for transporting a piece of cargo over the
* given distance within the specified time.
+ * @param cargo_type the cargo to transport.
* @param distance the distance the cargo travels from begin to end.
* @param days_in_transit amount of (game) days the cargo is in transit.
- * @param cargo_type the cargo to transport.
* @return the amount of money that would be earned by this trip.
*/
- static int32 GetCargoIncome(uint32 distance, uint32 days_in_transit, CargoID cargo_type);
+ static int32 GetCargoIncome(CargoID cargo_type, uint32 distance, uint32 days_in_transit);
};
#endif /* AI_CARGO_HPP */
--- a/src/ai/api/ai_cargolist_valuator.cpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-#include "ai_cargolist_valuator.hpp"
-#include "ai_cargo.hpp"
-
-int32 AICargoList_vIsFreight::Valuate(int32 cargoID) const
-{
- return AICargo::IsFreight(cargoID);
-}
-
-int32 AICargoList_vCargoIncomes::Valuate(int32 cargoID) const
-{
- return AICargo::GetCargoIncome(distance, days_in_transit, cargoID);
-}
--- a/src/ai/api/ai_cargolist_valuator.hpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/** @file ai_cargolist_valuator.hpp all the valuators for AICargoList */
-
-#ifndef AI_CARGOLIST_VALUATOR_HPP
-#define AI_CARGOLIST_VALUATOR_HPP
-
-#include "ai_abstractlist.hpp"
-
-
-/**
- * Checks if the given cargo is freight cargo, for all entries in an AICargoList.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on a AICargoList.
- * @ingroup AICargoList.
- */
-class AICargoList_vIsFreight : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AICargoList_vIsFreight"; }
-
-private:
- const char *GetListName() const { return "AICargoList"; }
- int32 Valuate(int32 cargo) const;
-};
-
-/**
- * Get the income for transporting one unit of cargo over the given distance
- * within the specified time.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on a AICargoList.
- * @ingroup AICargoList.
- */
-class AICargoList_vCargoIncomes : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AICargoList_vCargoIncomes"; }
-
- /**
- * @param distance The distance the cargo travels from begin to end.
- * @param days_in_transit Amount of (game)days the cargo is in transit.
- */
- AICargoList_vCargoIncomes(uint32 distance, uint32 days_in_transit) :
- distance(distance),
- days_in_transit(days_in_transit)
- {}
-
-private:
- uint32 distance, days_in_transit;
-
- const char *GetListName() const { return "AICargoList"; }
- int32 Valuate(int32 cargo) const;
-};
-
-#endif // AI_CARGOLIST_VALUATOR_HPP
--- a/src/ai/api/ai_cargolist_valuator.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#include "ai_cargolist_valuator.hpp"
-
-namespace SQConvert {
- /* Allow AICargoList_vIsFreight to be used as Squirrel parameter */
- template <> AICargoList_vIsFreight *GetParam(ForceType<AICargoList_vIsFreight *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICargoList_vIsFreight *)instance; }
- template <> AICargoList_vIsFreight &GetParam(ForceType<AICargoList_vIsFreight &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AICargoList_vIsFreight *)instance; }
- template <> const AICargoList_vIsFreight *GetParam(ForceType<const AICargoList_vIsFreight *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICargoList_vIsFreight *)instance; }
- template <> const AICargoList_vIsFreight &GetParam(ForceType<const AICargoList_vIsFreight &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AICargoList_vIsFreight *)instance; }
- template <> int Return<AICargoList_vIsFreight *>(HSQUIRRELVM vm, AICargoList_vIsFreight *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AICargoList_vIsFreight", res, NULL, DefSQDestructorCallback<AICargoList_vIsFreight>); return 1; }
-}; // namespace SQConvert
-
-void SQAICargoList_vIsFreight_Register(Squirrel *engine) {
- DefSQClass <AICargoList_vIsFreight> SQAICargoList_vIsFreight("AICargoList_vIsFreight");
- SQAICargoList_vIsFreight.PreRegister(engine);
- SQAICargoList_vIsFreight.AddConstructor<void (AICargoList_vIsFreight::*)(), 1>(engine, "x");
-
- SQAICargoList_vIsFreight.DefSQStaticMethod(engine, &AICargoList_vIsFreight::GetClassName, "GetClassName", 1, "x");
-
- SQAICargoList_vIsFreight.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AICargoList_vCargoIncomes to be used as Squirrel parameter */
- template <> AICargoList_vCargoIncomes *GetParam(ForceType<AICargoList_vCargoIncomes *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICargoList_vCargoIncomes *)instance; }
- template <> AICargoList_vCargoIncomes &GetParam(ForceType<AICargoList_vCargoIncomes &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AICargoList_vCargoIncomes *)instance; }
- template <> const AICargoList_vCargoIncomes *GetParam(ForceType<const AICargoList_vCargoIncomes *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICargoList_vCargoIncomes *)instance; }
- template <> const AICargoList_vCargoIncomes &GetParam(ForceType<const AICargoList_vCargoIncomes &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AICargoList_vCargoIncomes *)instance; }
- template <> int Return<AICargoList_vCargoIncomes *>(HSQUIRRELVM vm, AICargoList_vCargoIncomes *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AICargoList_vCargoIncomes", res, NULL, DefSQDestructorCallback<AICargoList_vCargoIncomes>); return 1; }
-}; // namespace SQConvert
-
-void SQAICargoList_vCargoIncomes_Register(Squirrel *engine) {
- DefSQClass <AICargoList_vCargoIncomes> SQAICargoList_vCargoIncomes("AICargoList_vCargoIncomes");
- SQAICargoList_vCargoIncomes.PreRegister(engine);
- SQAICargoList_vCargoIncomes.AddConstructor<void (AICargoList_vCargoIncomes::*)(uint32 distance, uint32 days_in_transit), 3>(engine, "xii");
-
- SQAICargoList_vCargoIncomes.DefSQStaticMethod(engine, &AICargoList_vCargoIncomes::GetClassName, "GetClassName", 1, "x");
-
- SQAICargoList_vCargoIncomes.PostRegister(engine);
-}
--- a/src/ai/api/ai_enginelist_valuator.cpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#include "ai_enginelist_valuator.hpp"
-#include "ai_engine.hpp"
-
-int32 AIEngineList_vCargoType::Valuate(int32 engine_id) const
-{
- return AIEngine::GetCargoType(engine_id);
-}
-
-int32 AIEngineList_vCapacity::Valuate(int32 engine_id) const
-{
- return AIEngine::GetCapacity(engine_id);
-}
-
-int32 AIEngineList_vReliability::Valuate(int32 engine_id) const
-{
- return AIEngine::GetReliability(engine_id);
-}
-
-int32 AIEngineList_vMaxSpeed::Valuate(int32 engine_id) const
-{
- return AIEngine::GetMaxSpeed(engine_id);
-}
-
-int32 AIEngineList_vPrice::Valuate(int32 engine_id) const
-{
- return AIEngine::GetPrice(engine_id);
-}
--- a/src/ai/api/ai_enginelist_valuator.hpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/* $Id$ */
-
-/** @file ai_enginelist_valuator.hpp all the valuators for AIEngineList */
-
-#ifndef AI_ENGINELIST_VALUATOR_HPP
-#define AI_ENGINELIST_VALUATOR_HPP
-
-#include "ai_abstractlist.hpp"
-
-/**
- * Get the cargo-type for entries in an AIEngineList instance.
- * @note Resulting items are of the type CargoID.
- * @note Can only operate on an AIEngineList instance.
- * @ingroup AIEngineList
- */
-class AIEngineList_vCargoType : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIEngineList_vCargoType"; }
-
-private:
- const char *GetListName() const { return "AIEngineList"; }
- int32 Valuate(int32 engine_id) const;
-};
-
-/**
- * Get the capacity for entries in an AIEngineList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIEngineList instance.
- * @ingroup AIEngineList
- */
-class AIEngineList_vCapacity : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIEngineList_vCapacity"; }
-
-private:
- const char *GetListName() const { return "AIEngineList"; }
- int32 Valuate(int32 engine_id) const;
-};
-
-/**
- * Get the reliability for entries in an AIEngineList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIEngineList instance.
- * @ingroup AIEngineList
- */
-class AIEngineList_vReliability : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIEngineList_vReliability"; }
-
-private:
- const char *GetListName() const { return "AIEngineList"; }
- int32 Valuate(int32 engine_id) const;
-};
-
-/**
- * Get the max speed for entries in an AIEngineList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIEngineList instance.
- * @ingroup AIEngineList
- */
-class AIEngineList_vMaxSpeed : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIEngineList_vMaxSpeed"; }
-
-private:
- const char *GetListName() const { return "AIEngineList"; }
- int32 Valuate(int32 engine_id) const;
-};
-
-/**
- * Get the price for entries in an AIEngineList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIEngineList instance.
- * @ingroup AIEngineList
- */
-class AIEngineList_vPrice : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIEngineList_vPrice"; }
-
-private:
- const char *GetListName() const { return "AIEngineList"; }
- int32 Valuate(int32 engine_id) const;
-};
-
-#endif /* AI_ENGINELIST_VALUATOR_HPP */
--- a/src/ai/api/ai_enginelist_valuator.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-#include "ai_enginelist_valuator.hpp"
-
-namespace SQConvert {
- /* Allow AIEngineList_vCargoType to be used as Squirrel parameter */
- template <> AIEngineList_vCargoType *GetParam(ForceType<AIEngineList_vCargoType *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vCargoType *)instance; }
- template <> AIEngineList_vCargoType &GetParam(ForceType<AIEngineList_vCargoType &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vCargoType *)instance; }
- template <> const AIEngineList_vCargoType *GetParam(ForceType<const AIEngineList_vCargoType *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vCargoType *)instance; }
- template <> const AIEngineList_vCargoType &GetParam(ForceType<const AIEngineList_vCargoType &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vCargoType *)instance; }
- template <> int Return<AIEngineList_vCargoType *>(HSQUIRRELVM vm, AIEngineList_vCargoType *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineList_vCargoType", res, NULL, DefSQDestructorCallback<AIEngineList_vCargoType>); return 1; }
-}; // namespace SQConvert
-
-void SQAIEngineList_vCargoType_Register(Squirrel *engine) {
- DefSQClass <AIEngineList_vCargoType> SQAIEngineList_vCargoType("AIEngineList_vCargoType");
- SQAIEngineList_vCargoType.PreRegister(engine);
- SQAIEngineList_vCargoType.AddConstructor<void (AIEngineList_vCargoType::*)(), 1>(engine, "x");
-
- SQAIEngineList_vCargoType.DefSQStaticMethod(engine, &AIEngineList_vCargoType::GetClassName, "GetClassName", 1, "x");
-
- SQAIEngineList_vCargoType.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIEngineList_vCapacity to be used as Squirrel parameter */
- template <> AIEngineList_vCapacity *GetParam(ForceType<AIEngineList_vCapacity *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vCapacity *)instance; }
- template <> AIEngineList_vCapacity &GetParam(ForceType<AIEngineList_vCapacity &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vCapacity *)instance; }
- template <> const AIEngineList_vCapacity *GetParam(ForceType<const AIEngineList_vCapacity *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vCapacity *)instance; }
- template <> const AIEngineList_vCapacity &GetParam(ForceType<const AIEngineList_vCapacity &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vCapacity *)instance; }
- template <> int Return<AIEngineList_vCapacity *>(HSQUIRRELVM vm, AIEngineList_vCapacity *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineList_vCapacity", res, NULL, DefSQDestructorCallback<AIEngineList_vCapacity>); return 1; }
-}; // namespace SQConvert
-
-void SQAIEngineList_vCapacity_Register(Squirrel *engine) {
- DefSQClass <AIEngineList_vCapacity> SQAIEngineList_vCapacity("AIEngineList_vCapacity");
- SQAIEngineList_vCapacity.PreRegister(engine);
- SQAIEngineList_vCapacity.AddConstructor<void (AIEngineList_vCapacity::*)(), 1>(engine, "x");
-
- SQAIEngineList_vCapacity.DefSQStaticMethod(engine, &AIEngineList_vCapacity::GetClassName, "GetClassName", 1, "x");
-
- SQAIEngineList_vCapacity.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIEngineList_vReliability to be used as Squirrel parameter */
- template <> AIEngineList_vReliability *GetParam(ForceType<AIEngineList_vReliability *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vReliability *)instance; }
- template <> AIEngineList_vReliability &GetParam(ForceType<AIEngineList_vReliability &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vReliability *)instance; }
- template <> const AIEngineList_vReliability *GetParam(ForceType<const AIEngineList_vReliability *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vReliability *)instance; }
- template <> const AIEngineList_vReliability &GetParam(ForceType<const AIEngineList_vReliability &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vReliability *)instance; }
- template <> int Return<AIEngineList_vReliability *>(HSQUIRRELVM vm, AIEngineList_vReliability *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineList_vReliability", res, NULL, DefSQDestructorCallback<AIEngineList_vReliability>); return 1; }
-}; // namespace SQConvert
-
-void SQAIEngineList_vReliability_Register(Squirrel *engine) {
- DefSQClass <AIEngineList_vReliability> SQAIEngineList_vReliability("AIEngineList_vReliability");
- SQAIEngineList_vReliability.PreRegister(engine);
- SQAIEngineList_vReliability.AddConstructor<void (AIEngineList_vReliability::*)(), 1>(engine, "x");
-
- SQAIEngineList_vReliability.DefSQStaticMethod(engine, &AIEngineList_vReliability::GetClassName, "GetClassName", 1, "x");
-
- SQAIEngineList_vReliability.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIEngineList_vMaxSpeed to be used as Squirrel parameter */
- template <> AIEngineList_vMaxSpeed *GetParam(ForceType<AIEngineList_vMaxSpeed *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vMaxSpeed *)instance; }
- template <> AIEngineList_vMaxSpeed &GetParam(ForceType<AIEngineList_vMaxSpeed &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vMaxSpeed *)instance; }
- template <> const AIEngineList_vMaxSpeed *GetParam(ForceType<const AIEngineList_vMaxSpeed *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vMaxSpeed *)instance; }
- template <> const AIEngineList_vMaxSpeed &GetParam(ForceType<const AIEngineList_vMaxSpeed &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vMaxSpeed *)instance; }
- template <> int Return<AIEngineList_vMaxSpeed *>(HSQUIRRELVM vm, AIEngineList_vMaxSpeed *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineList_vMaxSpeed", res, NULL, DefSQDestructorCallback<AIEngineList_vMaxSpeed>); return 1; }
-}; // namespace SQConvert
-
-void SQAIEngineList_vMaxSpeed_Register(Squirrel *engine) {
- DefSQClass <AIEngineList_vMaxSpeed> SQAIEngineList_vMaxSpeed("AIEngineList_vMaxSpeed");
- SQAIEngineList_vMaxSpeed.PreRegister(engine);
- SQAIEngineList_vMaxSpeed.AddConstructor<void (AIEngineList_vMaxSpeed::*)(), 1>(engine, "x");
-
- SQAIEngineList_vMaxSpeed.DefSQStaticMethod(engine, &AIEngineList_vMaxSpeed::GetClassName, "GetClassName", 1, "x");
-
- SQAIEngineList_vMaxSpeed.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIEngineList_vPrice to be used as Squirrel parameter */
- template <> AIEngineList_vPrice *GetParam(ForceType<AIEngineList_vPrice *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vPrice *)instance; }
- template <> AIEngineList_vPrice &GetParam(ForceType<AIEngineList_vPrice &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vPrice *)instance; }
- template <> const AIEngineList_vPrice *GetParam(ForceType<const AIEngineList_vPrice *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIEngineList_vPrice *)instance; }
- template <> const AIEngineList_vPrice &GetParam(ForceType<const AIEngineList_vPrice &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList_vPrice *)instance; }
- template <> int Return<AIEngineList_vPrice *>(HSQUIRRELVM vm, AIEngineList_vPrice *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineList_vPrice", res, NULL, DefSQDestructorCallback<AIEngineList_vPrice>); return 1; }
-}; // namespace SQConvert
-
-void SQAIEngineList_vPrice_Register(Squirrel *engine) {
- DefSQClass <AIEngineList_vPrice> SQAIEngineList_vPrice("AIEngineList_vPrice");
- SQAIEngineList_vPrice.PreRegister(engine);
- SQAIEngineList_vPrice.AddConstructor<void (AIEngineList_vPrice::*)(), 1>(engine, "x");
-
- SQAIEngineList_vPrice.DefSQStaticMethod(engine, &AIEngineList_vPrice::GetClassName, "GetClassName", 1, "x");
-
- SQAIEngineList_vPrice.PostRegister(engine);
-}
--- a/src/ai/api/ai_industry.cpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_industry.cpp Tue Mar 25 12:12:45 2008 +0000
@@ -4,6 +4,7 @@
#include "ai_industry.hpp"
#include "ai_cargo.hpp"
+#include "ai_map.hpp"
#include "../../industry.h"
#include "../../strings_func.h"
#include "table/strings.h"
@@ -96,3 +97,13 @@
return false;
}
+
+/* static */ int32 AIIndustry::GetDistanceManhattanToTile(IndustryID industry_id, TileIndex tile)
+{
+ return AIMap::DistanceManhattan(tile, GetLocation(industry_id));
+}
+
+/* static */ int32 AIIndustry::GetDistanceSquareToTile(IndustryID industry_id, TileIndex tile)
+{
+ return AIMap::DistanceSquare(tile, GetLocation(industry_id));
+}
--- a/src/ai/api/ai_industry.hpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_industry.hpp Tue Mar 25 12:12:45 2008 +0000
@@ -100,6 +100,24 @@
* @return the amount of given cargo transported from this industry last month.
*/
static uint16 GetLastMonthTransported(IndustryID industry_id, CargoID cargo_id);
+
+ /**
+ * Get the manhattan distance from the tile to the AIIndustry::GetLocation()
+ * of the industry.
+ * @param industry_id The industry to get the distance to.
+ * @param tile The tile to get the distance to.
+ * @return The distance between industry and tile.
+ */
+ static int32 GetDistanceManhattanToTile(IndustryID industry_id, TileIndex tile);
+
+ /**
+ * Get the square distance from the tile to the AIIndustry::GetLocation()
+ * of the industry.
+ * @param industry_id The industry to get the distance to.
+ * @param tile The tile to get the distance to.
+ * @return The distance between industry and tile.
+ */
+ static int32 GetDistanceSquareToTile(IndustryID industry_id, TileIndex tile);
};
#endif /* AI_INDUSTRY_HPP */
--- a/src/ai/api/ai_industry.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_industry.hpp.sq Tue Mar 25 12:12:45 2008 +0000
@@ -14,16 +14,18 @@
SQAIIndustry.PreRegister(engine);
SQAIIndustry.AddConstructor<void (AIIndustry::*)(), 1>(engine, "x");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetClassName, "GetClassName", 1, "x");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetMaxIndustryID, "GetMaxIndustryID", 1, "x");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetIndustryCount, "GetIndustryCount", 1, "x");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsValidIndustry, "IsValidIndustry", 2, "xi");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetName, "GetName", 2, "xi");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetProduction, "GetProduction", 3, "xii");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsCargoAccepted, "IsCargoAccepted", 3, "xii");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLocation, "GetLocation", 2, "xi");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLastMonthProduction, "GetLastMonthProduction", 3, "xii");
- SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLastMonthTransported, "GetLastMonthTransported", 3, "xii");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetClassName, "GetClassName", 1, "x");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetMaxIndustryID, "GetMaxIndustryID", 1, "x");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetIndustryCount, "GetIndustryCount", 1, "x");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsValidIndustry, "IsValidIndustry", 2, "xi");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetName, "GetName", 2, "xi");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetProduction, "GetProduction", 3, "xii");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsCargoAccepted, "IsCargoAccepted", 3, "xii");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLocation, "GetLocation", 2, "xi");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLastMonthProduction, "GetLastMonthProduction", 3, "xii");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLastMonthTransported, "GetLastMonthTransported", 3, "xii");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, "xii");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetDistanceSquareToTile, "GetDistanceSquareToTile", 3, "xii");
SQAIIndustry.PostRegister(engine);
}
--- a/src/ai/api/ai_industrylist_valuator.cpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#include "ai_industrylist_valuator.hpp"
-#include "ai_industry.hpp"
-#include "ai_map.hpp"
-
-int32 AIIndustryList_vProduction::Valuate(int32 industry_id) const
-{
- return AIIndustry::GetProduction(industry_id, this->cargo_id);
-}
-
-int32 AIIndustryList_vCargoAccepted::Valuate(int32 industry_id) const
-{
- return AIIndustry::IsCargoAccepted(industry_id, this->cargo_id);
-}
-
-int32 AIIndustryList_vLocation::Valuate(int32 industry_id) const
-{
- return AIIndustry::GetLocation(industry_id);
-}
-
-int32 AIIndustryList_vDistanceManhattanToTile::Valuate(int32 industry_id) const
-{
- return AIMap::DistanceManhattan(this->tile, AIIndustry::GetLocation(industry_id));
-}
-
-int32 AIIndustryList_vDistanceSquareToTile::Valuate(int32 industry_id) const
-{
- return AIMap::DistanceSquare(this->tile, AIIndustry::GetLocation(industry_id));
-}
--- a/src/ai/api/ai_industrylist_valuator.hpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/* $Id$ */
-
-/** @file ai_industrylist_valuator.hpp all the valuators for AIIndustryList */
-
-#ifndef AI_INDUSTRYLIST_VALUATOR_HPP
-#define AI_INDUSTRYLIST_VALUATOR_HPP
-
-#include "ai_abstractlist.hpp"
-
-/**
- * Get the production rate of the cargo for entries in an AIIndustryList
- * instance. This is the amount of production you can expect in a month.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIIndustryList instance.
- * @ingroup AIIndustryList
- */
-class AIIndustryList_vProduction : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIIndustryList_vProduction"; }
-
- /**
- * @param cargo_id The cargo to check the production rate of.
- */
- AIIndustryList_vProduction(CargoID cargo_id) :
- cargo_id(cargo_id)
- {}
-
-private:
- CargoID cargo_id;
-
- const char *GetListName() const { return "AIIndustryList"; }
- int32 Valuate(int32 industry) const;
-};
-
-/**
- * See which entries in the AIIndustryList instance accepts a given cargo.
- * @note Resulting items are of the type bool.
- * @note Can only operate on an AIIndustryList instance.
- * @ingroup AIIndustryList
- */
-class AIIndustryList_vCargoAccepted : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIIndustryList_vCargoAccepted"; }
-
- /**
- * @param cargo_id Check if this cargo is accepted.
- */
- AIIndustryList_vCargoAccepted(CargoID cargo_id) :
- cargo_id(cargo_id)
- {}
-
-private:
- CargoID cargo_id;
-
- const char *GetListName() const { return "AIIndustryList"; }
- int32 Valuate(int32 industry) const;
-};
-
-/**
- * Get the location for entries in an AIIndustryList instance.
- * @note Resulting items are of the type TileIndex.
- * @note Can only operate on an AIIndustryList instance.
- * @ingroup AIIndustryList
- */
-class AIIndustryList_vLocation : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIIndustryList_vGetLocation"; }
-
-private:
- const char *GetListName() const { return "AIIndustryList"; }
- int32 Valuate(int32 industry) const;
-};
-
-/**
- * Get the manhattan distance to a tile for entries in an AIIndustryList instance.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on an AIIndustryList instance.
- * @ingroup AIIndustryList
- */
-class AIIndustryList_vDistanceManhattanToTile : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIIndustryList_vDistanceManhattanToTile"; }
-
- /**
- * @param tile The tile to get the distance to.
- */
- AIIndustryList_vDistanceManhattanToTile(TileIndex tile) :
- tile(tile)
- {}
-
-private:
- TileIndex tile;
-
- const char *GetListName() const { return "AIIndustryList"; }
- int32 Valuate(int32 station) const;
-};
-
-/**
- * Get the square distance to a tile for entries in an AIIndustryList instance.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on an AIIndustryList instance.
- * @ingroup AIIndustryList
- */
-class AIIndustryList_vDistanceSquareToTile : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIIndustryList_vDistanceSquareToTile"; }
-
- /**
- * @param tile The tile to get the distance to.
- */
- AIIndustryList_vDistanceSquareToTile(TileIndex tile) :
- tile(tile)
- {}
-
-private:
- TileIndex tile;
-
- const char *GetListName() const { return "AIIndustryList"; }
- int32 Valuate(int32 station) const;
-};
-
-#endif /* AI_INDUSTRYLIST_VALUATOR_HPP */
--- a/src/ai/api/ai_industrylist_valuator.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-#include "ai_industrylist_valuator.hpp"
-
-namespace SQConvert {
- /* Allow AIIndustryList_vProduction to be used as Squirrel parameter */
- template <> AIIndustryList_vProduction *GetParam(ForceType<AIIndustryList_vProduction *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vProduction *)instance; }
- template <> AIIndustryList_vProduction &GetParam(ForceType<AIIndustryList_vProduction &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vProduction *)instance; }
- template <> const AIIndustryList_vProduction *GetParam(ForceType<const AIIndustryList_vProduction *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vProduction *)instance; }
- template <> const AIIndustryList_vProduction &GetParam(ForceType<const AIIndustryList_vProduction &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vProduction *)instance; }
- template <> int Return<AIIndustryList_vProduction *>(HSQUIRRELVM vm, AIIndustryList_vProduction *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIIndustryList_vProduction", res, NULL, DefSQDestructorCallback<AIIndustryList_vProduction>); return 1; }
-}; // namespace SQConvert
-
-void SQAIIndustryList_vProduction_Register(Squirrel *engine) {
- DefSQClass <AIIndustryList_vProduction> SQAIIndustryList_vProduction("AIIndustryList_vProduction");
- SQAIIndustryList_vProduction.PreRegister(engine);
- SQAIIndustryList_vProduction.AddConstructor<void (AIIndustryList_vProduction::*)(CargoID cargo_id), 2>(engine, "xi");
-
- SQAIIndustryList_vProduction.DefSQStaticMethod(engine, &AIIndustryList_vProduction::GetClassName, "GetClassName", 1, "x");
-
- SQAIIndustryList_vProduction.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIIndustryList_vCargoAccepted to be used as Squirrel parameter */
- template <> AIIndustryList_vCargoAccepted *GetParam(ForceType<AIIndustryList_vCargoAccepted *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vCargoAccepted *)instance; }
- template <> AIIndustryList_vCargoAccepted &GetParam(ForceType<AIIndustryList_vCargoAccepted &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vCargoAccepted *)instance; }
- template <> const AIIndustryList_vCargoAccepted *GetParam(ForceType<const AIIndustryList_vCargoAccepted *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vCargoAccepted *)instance; }
- template <> const AIIndustryList_vCargoAccepted &GetParam(ForceType<const AIIndustryList_vCargoAccepted &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vCargoAccepted *)instance; }
- template <> int Return<AIIndustryList_vCargoAccepted *>(HSQUIRRELVM vm, AIIndustryList_vCargoAccepted *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIIndustryList_vCargoAccepted", res, NULL, DefSQDestructorCallback<AIIndustryList_vCargoAccepted>); return 1; }
-}; // namespace SQConvert
-
-void SQAIIndustryList_vCargoAccepted_Register(Squirrel *engine) {
- DefSQClass <AIIndustryList_vCargoAccepted> SQAIIndustryList_vCargoAccepted("AIIndustryList_vCargoAccepted");
- SQAIIndustryList_vCargoAccepted.PreRegister(engine);
- SQAIIndustryList_vCargoAccepted.AddConstructor<void (AIIndustryList_vCargoAccepted::*)(CargoID cargo_id), 2>(engine, "xi");
-
- SQAIIndustryList_vCargoAccepted.DefSQStaticMethod(engine, &AIIndustryList_vCargoAccepted::GetClassName, "GetClassName", 1, "x");
-
- SQAIIndustryList_vCargoAccepted.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIIndustryList_vLocation to be used as Squirrel parameter */
- template <> AIIndustryList_vLocation *GetParam(ForceType<AIIndustryList_vLocation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vLocation *)instance; }
- template <> AIIndustryList_vLocation &GetParam(ForceType<AIIndustryList_vLocation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vLocation *)instance; }
- template <> const AIIndustryList_vLocation *GetParam(ForceType<const AIIndustryList_vLocation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vLocation *)instance; }
- template <> const AIIndustryList_vLocation &GetParam(ForceType<const AIIndustryList_vLocation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vLocation *)instance; }
- template <> int Return<AIIndustryList_vLocation *>(HSQUIRRELVM vm, AIIndustryList_vLocation *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIIndustryList_vLocation", res, NULL, DefSQDestructorCallback<AIIndustryList_vLocation>); return 1; }
-}; // namespace SQConvert
-
-void SQAIIndustryList_vLocation_Register(Squirrel *engine) {
- DefSQClass <AIIndustryList_vLocation> SQAIIndustryList_vLocation("AIIndustryList_vLocation");
- SQAIIndustryList_vLocation.PreRegister(engine);
- SQAIIndustryList_vLocation.AddConstructor<void (AIIndustryList_vLocation::*)(), 1>(engine, "x");
-
- SQAIIndustryList_vLocation.DefSQStaticMethod(engine, &AIIndustryList_vLocation::GetClassName, "GetClassName", 1, "x");
-
- SQAIIndustryList_vLocation.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIIndustryList_vDistanceManhattanToTile to be used as Squirrel parameter */
- template <> AIIndustryList_vDistanceManhattanToTile *GetParam(ForceType<AIIndustryList_vDistanceManhattanToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vDistanceManhattanToTile *)instance; }
- template <> AIIndustryList_vDistanceManhattanToTile &GetParam(ForceType<AIIndustryList_vDistanceManhattanToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vDistanceManhattanToTile *)instance; }
- template <> const AIIndustryList_vDistanceManhattanToTile *GetParam(ForceType<const AIIndustryList_vDistanceManhattanToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vDistanceManhattanToTile *)instance; }
- template <> const AIIndustryList_vDistanceManhattanToTile &GetParam(ForceType<const AIIndustryList_vDistanceManhattanToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vDistanceManhattanToTile *)instance; }
- template <> int Return<AIIndustryList_vDistanceManhattanToTile *>(HSQUIRRELVM vm, AIIndustryList_vDistanceManhattanToTile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIIndustryList_vDistanceManhattanToTile", res, NULL, DefSQDestructorCallback<AIIndustryList_vDistanceManhattanToTile>); return 1; }
-}; // namespace SQConvert
-
-void SQAIIndustryList_vDistanceManhattanToTile_Register(Squirrel *engine) {
- DefSQClass <AIIndustryList_vDistanceManhattanToTile> SQAIIndustryList_vDistanceManhattanToTile("AIIndustryList_vDistanceManhattanToTile");
- SQAIIndustryList_vDistanceManhattanToTile.PreRegister(engine);
- SQAIIndustryList_vDistanceManhattanToTile.AddConstructor<void (AIIndustryList_vDistanceManhattanToTile::*)(TileIndex tile), 2>(engine, "xi");
-
- SQAIIndustryList_vDistanceManhattanToTile.DefSQStaticMethod(engine, &AIIndustryList_vDistanceManhattanToTile::GetClassName, "GetClassName", 1, "x");
-
- SQAIIndustryList_vDistanceManhattanToTile.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIIndustryList_vDistanceSquareToTile to be used as Squirrel parameter */
- template <> AIIndustryList_vDistanceSquareToTile *GetParam(ForceType<AIIndustryList_vDistanceSquareToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vDistanceSquareToTile *)instance; }
- template <> AIIndustryList_vDistanceSquareToTile &GetParam(ForceType<AIIndustryList_vDistanceSquareToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vDistanceSquareToTile *)instance; }
- template <> const AIIndustryList_vDistanceSquareToTile *GetParam(ForceType<const AIIndustryList_vDistanceSquareToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustryList_vDistanceSquareToTile *)instance; }
- template <> const AIIndustryList_vDistanceSquareToTile &GetParam(ForceType<const AIIndustryList_vDistanceSquareToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustryList_vDistanceSquareToTile *)instance; }
- template <> int Return<AIIndustryList_vDistanceSquareToTile *>(HSQUIRRELVM vm, AIIndustryList_vDistanceSquareToTile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIIndustryList_vDistanceSquareToTile", res, NULL, DefSQDestructorCallback<AIIndustryList_vDistanceSquareToTile>); return 1; }
-}; // namespace SQConvert
-
-void SQAIIndustryList_vDistanceSquareToTile_Register(Squirrel *engine) {
- DefSQClass <AIIndustryList_vDistanceSquareToTile> SQAIIndustryList_vDistanceSquareToTile("AIIndustryList_vDistanceSquareToTile");
- SQAIIndustryList_vDistanceSquareToTile.PreRegister(engine);
- SQAIIndustryList_vDistanceSquareToTile.AddConstructor<void (AIIndustryList_vDistanceSquareToTile::*)(TileIndex tile), 2>(engine, "xi");
-
- SQAIIndustryList_vDistanceSquareToTile.DefSQStaticMethod(engine, &AIIndustryList_vDistanceSquareToTile::GetClassName, "GetClassName", 1, "x");
-
- SQAIIndustryList_vDistanceSquareToTile.PostRegister(engine);
-}
--- a/src/ai/api/ai_list_valuator.cpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-#include "ai_list_valuator.hpp"
-#include "ai_base.hpp"
-
-int32 AIList_vRandomize::Valuate(int32 town) const
-{
- return AIBase::Rand();
-}
--- a/src/ai/api/ai_list_valuator.hpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/* $Id$ */
-
-/** @file ai_list_valuator.hpp all the valuators for AIList */
-
-#ifndef AI_LIST_VALUATOR_HPP
-#define AI_LIST_VALUATOR_HPP
-
-#include "ai_abstractlist.hpp"
-
-/**
- * Give a random value for each entry in an AIList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIList instance.
- * @ingroup AIList
- */
-class AIList_vRandomize : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIList_vRandomize"; }
-
-private:
- const char *GetListName() const { return NULL; }
- int32 Valuate(int32 item) const;
-};
-
-#endif /* AI_LIST_VALUATOR_HPP */
--- a/src/ai/api/ai_list_valuator.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#include "ai_list_valuator.hpp"
-
-namespace SQConvert {
- /* Allow AIList_vRandomize to be used as Squirrel parameter */
- template <> AIList_vRandomize *GetParam(ForceType<AIList_vRandomize *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIList_vRandomize *)instance; }
- template <> AIList_vRandomize &GetParam(ForceType<AIList_vRandomize &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIList_vRandomize *)instance; }
- template <> const AIList_vRandomize *GetParam(ForceType<const AIList_vRandomize *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIList_vRandomize *)instance; }
- template <> const AIList_vRandomize &GetParam(ForceType<const AIList_vRandomize &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIList_vRandomize *)instance; }
- template <> int Return<AIList_vRandomize *>(HSQUIRRELVM vm, AIList_vRandomize *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIList_vRandomize", res, NULL, DefSQDestructorCallback<AIList_vRandomize>); return 1; }
-}; // namespace SQConvert
-
-void SQAIList_vRandomize_Register(Squirrel *engine) {
- DefSQClass <AIList_vRandomize> SQAIList_vRandomize("AIList_vRandomize");
- SQAIList_vRandomize.PreRegister(engine);
- SQAIList_vRandomize.AddConstructor<void (AIList_vRandomize::*)(), 1>(engine, "x");
-
- SQAIList_vRandomize.DefSQStaticMethod(engine, &AIList_vRandomize::GetClassName, "GetClassName", 1, "x");
-
- SQAIList_vRandomize.PostRegister(engine);
-}
--- a/src/ai/api/ai_object.hpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_object.hpp Tue Mar 25 12:12:45 2008 +0000
@@ -9,6 +9,13 @@
#include "../../functions.h"
#include "../../misc/countedptr.hpp"
+#ifndef _SQUIRREL_H_
+/* Life becomes easier when we can tell about a function it needs the VM, but
+ * without really including 'squirrel.h'. */
+typedef void* HSQUIRRELVM;
+typedef int SQInteger;
+#endif
+
/**
* The callback function for Mode-classes.
*/
--- a/src/ai/api/ai_station.cpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_station.cpp Tue Mar 25 12:12:45 2008 +0000
@@ -4,6 +4,7 @@
#include "ai_station.hpp"
#include "ai_cargo.hpp"
+#include "ai_map.hpp"
#include "../../debug.h"
#include "../../station.h"
#include "../../station_map.h"
@@ -76,3 +77,13 @@
default: return CA_NONE;
}
}
+
+/* static */ int32 AIStation::GetDistanceManhattanToTile(StationID station_id, TileIndex tile)
+{
+ return AIMap::DistanceManhattan(tile, GetLocation(station_id));
+}
+
+/* static */ int32 AIStation::GetDistanceSquareToTile(StationID station_id, TileIndex tile)
+{
+ return AIMap::DistanceSquare(tile, GetLocation(station_id));
+}
--- a/src/ai/api/ai_station.hpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_station.hpp Tue Mar 25 12:12:45 2008 +0000
@@ -86,6 +86,24 @@
* @return the radius in tiles.
*/
static int32 GetCoverageRadius(AIStation::StationType type);
+
+ /**
+ * Get the manhattan distance from the tile to the AIStation::GetLocation()
+ * of the station.
+ * @param station_id The station to get the distance to.
+ * @param tile The tile to get the distance to.
+ * @return The distance between station and tile.
+ */
+ static int32 GetDistanceManhattanToTile(StationID station_id, TileIndex tile);
+
+ /**
+ * Get the square distance from the tile to the AIStation::GetLocation()
+ * of the station.
+ * @param station_id The station to get the distance to.
+ * @param tile The tile to get the distance to.
+ * @return The distance between station and tile.
+ */
+ static int32 GetDistanceSquareToTile(StationID station_id, TileIndex tile);
};
DECLARE_ENUM_AS_BIT_SET(AIStation::StationType);
--- a/src/ai/api/ai_station.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_station.hpp.sq Tue Mar 25 12:12:45 2008 +0000
@@ -25,14 +25,16 @@
SQAIStation.DefSQConst(engine, AIStation::STATION_AIRPORT, "STATION_AIRPORT");
SQAIStation.DefSQConst(engine, AIStation::STATION_DOCK, "STATION_DOCK");
- SQAIStation.DefSQStaticMethod(engine, &AIStation::GetClassName, "GetClassName", 1, "x");
- SQAIStation.DefSQStaticMethod(engine, &AIStation::IsValidStation, "IsValidStation", 2, "xi");
- SQAIStation.DefSQStaticMethod(engine, &AIStation::GetStationID, "GetStationID", 2, "xi");
- SQAIStation.DefSQStaticMethod(engine, &AIStation::GetName, "GetName", 2, "xi");
- SQAIStation.DefSQStaticMethod(engine, &AIStation::GetLocation, "GetLocation", 2, "xi");
- SQAIStation.DefSQStaticMethod(engine, &AIStation::GetCargoWaiting, "GetCargoWaiting", 3, "xii");
- SQAIStation.DefSQStaticMethod(engine, &AIStation::GetCargoRating, "GetCargoRating", 3, "xii");
- SQAIStation.DefSQStaticMethod(engine, &AIStation::GetCoverageRadius, "GetCoverageRadius", 2, "xi");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::GetClassName, "GetClassName", 1, "x");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::IsValidStation, "IsValidStation", 2, "xi");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::GetStationID, "GetStationID", 2, "xi");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::GetName, "GetName", 2, "xi");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::GetLocation, "GetLocation", 2, "xi");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::GetCargoWaiting, "GetCargoWaiting", 3, "xii");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::GetCargoRating, "GetCargoRating", 3, "xii");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::GetCoverageRadius, "GetCoverageRadius", 2, "xi");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, "xii");
+ SQAIStation.DefSQStaticMethod(engine, &AIStation::GetDistanceSquareToTile, "GetDistanceSquareToTile", 3, "xii");
SQAIStation.PostRegister(engine);
}
--- a/src/ai/api/ai_stationlist_valuator.cpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/* $Id$ */
-
-#include "ai_stationlist_valuator.hpp"
-#include "ai_station.hpp"
-#include "ai_map.hpp"
-
-int32 AIStationList_vLocation::Valuate(int32 station_id) const
-{
- return AIStation::GetLocation(station_id);
-}
-
-int32 AIStationList_vCargoWaiting::Valuate(int32 station_id) const
-{
- return AIStation::GetCargoWaiting(station_id, this->cargo_id);
-}
-
-int32 AIStationList_vCargoRating::Valuate(int32 station_id) const
-{
- return AIStation::GetCargoRating(station_id, this->cargo_id);
-}
-
-int32 AIStationList_vDistanceManhattanToTile::Valuate(int32 station_id) const
-{
- return AIMap::DistanceManhattan(this->tile, AIStation::GetLocation(station_id));
-}
-
-int32 AIStationList_vDistanceSquareToTile::Valuate(int32 station_id) const
-{
- return AIMap::DistanceSquare(this->tile, AIStation::GetLocation(station_id));
-}
--- a/src/ai/api/ai_stationlist_valuator.hpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/* $Id$ */
-
-/** @file ai_stationlist_valuator.hpp all the valuators for AIStationList */
-
-#ifndef AI_STATIONLIST_VALUATOR_HPP
-#define AI_STATIONLIST_VALUATOR_HPP
-
-#include "ai_abstractlist.hpp"
-
-/**
- * Get the location for entries in an AIStationList instance.
- * @note Resulting items are of the type TileIndex.
- * @note Can only operate on an AIStationList instance.
- * @ingroup AIStationList
- */
-class AIStationList_vLocation : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIStationList_vGetLocation"; }
-
-private:
- const char *GetListName() const { return "AIStationList"; }
- int32 Valuate(int32 station_id) const;
-};
-
-/**
- * Get the cargo-waiting for entries in an AIStationList instance.
- * @note Resulting items are of the type uint32 (units of cargo).
- * @note Can only operate on an AIStationList instance.
- * @ingroup AIStationList
- */
-class AIStationList_vCargoWaiting : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIStationList_vCargoWaiting"; }
-
- /**
- * @param cargo_id The cargo of which you want to get the amount of units waiting for.
- */
- AIStationList_vCargoWaiting(CargoID cargo_id) :
- cargo_id(cargo_id)
- {}
-
-private:
- CargoID cargo_id;
-
- const char *GetListName() const { return "AIStationList"; }
- int32 Valuate(int32 station_id) const;
-};
-
-/**
- * Get the cargo rating for entries in an AIStationList instance.
- * @note Resulting items are of the type int32 (percent).
- * @note Can only operate on an AIStationList instance.
- * @ingroup AIStationList
- */
-class AIStationList_vCargoRating : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIStationList_vCargoRating"; }
-
- /**
- * @param cargo_id The cargo of which you want to get the rating of.
- */
- AIStationList_vCargoRating(CargoID cargo_id) :
- cargo_id(cargo_id)
- {}
-
-private:
- CargoID cargo_id;
-
- const char *GetListName() const { return "AIStationList"; }
- int32 Valuate(int32 station_id) const;
-};
-
-/**
- * Get the manhattan distance to a tile for entries in an AIStationList instance.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on an AIStationList instance.
- * @ingroup AIStationList
- */
-class AIStationList_vDistanceManhattanToTile : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIStationList_vDistanceManhattanToTile"; }
-
- /**
- * @param tile The tile to get the distances to.
- */
- AIStationList_vDistanceManhattanToTile(TileIndex tile) :
- tile(tile)
- {}
-
-private:
- TileIndex tile;
-
- const char *GetListName() const { return "AIStationList"; }
- int32 Valuate(int32 station_id) const;
-};
-
-/**
- * Get the square distance to a tile for entries in an AIStationList instance.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on an AIStationList instance.
- * @ingroup AIStationList
- */
-class AIStationList_vDistanceSquareToTile : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIStationList_vDistanceSquareToTile"; }
-
- /**
- * @param tile The tile to get the distances to.
- */
- AIStationList_vDistanceSquareToTile(TileIndex tile) :
- tile(tile)
- {}
-
-private:
- TileIndex tile;
-
- const char *GetListName() const { return "AIStationList"; }
- int32 Valuate(int32 station_id) const;
-};
-
-#endif /* AI_STATIONLIST_VALUATOR_HPP */
--- a/src/ai/api/ai_stationlist_valuator.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-#include "ai_stationlist_valuator.hpp"
-
-namespace SQConvert {
- /* Allow AIStationList_vLocation to be used as Squirrel parameter */
- template <> AIStationList_vLocation *GetParam(ForceType<AIStationList_vLocation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vLocation *)instance; }
- template <> AIStationList_vLocation &GetParam(ForceType<AIStationList_vLocation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vLocation *)instance; }
- template <> const AIStationList_vLocation *GetParam(ForceType<const AIStationList_vLocation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vLocation *)instance; }
- template <> const AIStationList_vLocation &GetParam(ForceType<const AIStationList_vLocation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vLocation *)instance; }
- template <> int Return<AIStationList_vLocation *>(HSQUIRRELVM vm, AIStationList_vLocation *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIStationList_vLocation", res, NULL, DefSQDestructorCallback<AIStationList_vLocation>); return 1; }
-}; // namespace SQConvert
-
-void SQAIStationList_vLocation_Register(Squirrel *engine) {
- DefSQClass <AIStationList_vLocation> SQAIStationList_vLocation("AIStationList_vLocation");
- SQAIStationList_vLocation.PreRegister(engine);
- SQAIStationList_vLocation.AddConstructor<void (AIStationList_vLocation::*)(), 1>(engine, "x");
-
- SQAIStationList_vLocation.DefSQStaticMethod(engine, &AIStationList_vLocation::GetClassName, "GetClassName", 1, "x");
-
- SQAIStationList_vLocation.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIStationList_vCargoWaiting to be used as Squirrel parameter */
- template <> AIStationList_vCargoWaiting *GetParam(ForceType<AIStationList_vCargoWaiting *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vCargoWaiting *)instance; }
- template <> AIStationList_vCargoWaiting &GetParam(ForceType<AIStationList_vCargoWaiting &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vCargoWaiting *)instance; }
- template <> const AIStationList_vCargoWaiting *GetParam(ForceType<const AIStationList_vCargoWaiting *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vCargoWaiting *)instance; }
- template <> const AIStationList_vCargoWaiting &GetParam(ForceType<const AIStationList_vCargoWaiting &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vCargoWaiting *)instance; }
- template <> int Return<AIStationList_vCargoWaiting *>(HSQUIRRELVM vm, AIStationList_vCargoWaiting *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIStationList_vCargoWaiting", res, NULL, DefSQDestructorCallback<AIStationList_vCargoWaiting>); return 1; }
-}; // namespace SQConvert
-
-void SQAIStationList_vCargoWaiting_Register(Squirrel *engine) {
- DefSQClass <AIStationList_vCargoWaiting> SQAIStationList_vCargoWaiting("AIStationList_vCargoWaiting");
- SQAIStationList_vCargoWaiting.PreRegister(engine);
- SQAIStationList_vCargoWaiting.AddConstructor<void (AIStationList_vCargoWaiting::*)(CargoID cargo_id), 2>(engine, "xi");
-
- SQAIStationList_vCargoWaiting.DefSQStaticMethod(engine, &AIStationList_vCargoWaiting::GetClassName, "GetClassName", 1, "x");
-
- SQAIStationList_vCargoWaiting.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIStationList_vCargoRating to be used as Squirrel parameter */
- template <> AIStationList_vCargoRating *GetParam(ForceType<AIStationList_vCargoRating *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vCargoRating *)instance; }
- template <> AIStationList_vCargoRating &GetParam(ForceType<AIStationList_vCargoRating &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vCargoRating *)instance; }
- template <> const AIStationList_vCargoRating *GetParam(ForceType<const AIStationList_vCargoRating *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vCargoRating *)instance; }
- template <> const AIStationList_vCargoRating &GetParam(ForceType<const AIStationList_vCargoRating &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vCargoRating *)instance; }
- template <> int Return<AIStationList_vCargoRating *>(HSQUIRRELVM vm, AIStationList_vCargoRating *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIStationList_vCargoRating", res, NULL, DefSQDestructorCallback<AIStationList_vCargoRating>); return 1; }
-}; // namespace SQConvert
-
-void SQAIStationList_vCargoRating_Register(Squirrel *engine) {
- DefSQClass <AIStationList_vCargoRating> SQAIStationList_vCargoRating("AIStationList_vCargoRating");
- SQAIStationList_vCargoRating.PreRegister(engine);
- SQAIStationList_vCargoRating.AddConstructor<void (AIStationList_vCargoRating::*)(CargoID cargo_id), 2>(engine, "xi");
-
- SQAIStationList_vCargoRating.DefSQStaticMethod(engine, &AIStationList_vCargoRating::GetClassName, "GetClassName", 1, "x");
-
- SQAIStationList_vCargoRating.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIStationList_vDistanceManhattanToTile to be used as Squirrel parameter */
- template <> AIStationList_vDistanceManhattanToTile *GetParam(ForceType<AIStationList_vDistanceManhattanToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vDistanceManhattanToTile *)instance; }
- template <> AIStationList_vDistanceManhattanToTile &GetParam(ForceType<AIStationList_vDistanceManhattanToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vDistanceManhattanToTile *)instance; }
- template <> const AIStationList_vDistanceManhattanToTile *GetParam(ForceType<const AIStationList_vDistanceManhattanToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vDistanceManhattanToTile *)instance; }
- template <> const AIStationList_vDistanceManhattanToTile &GetParam(ForceType<const AIStationList_vDistanceManhattanToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vDistanceManhattanToTile *)instance; }
- template <> int Return<AIStationList_vDistanceManhattanToTile *>(HSQUIRRELVM vm, AIStationList_vDistanceManhattanToTile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIStationList_vDistanceManhattanToTile", res, NULL, DefSQDestructorCallback<AIStationList_vDistanceManhattanToTile>); return 1; }
-}; // namespace SQConvert
-
-void SQAIStationList_vDistanceManhattanToTile_Register(Squirrel *engine) {
- DefSQClass <AIStationList_vDistanceManhattanToTile> SQAIStationList_vDistanceManhattanToTile("AIStationList_vDistanceManhattanToTile");
- SQAIStationList_vDistanceManhattanToTile.PreRegister(engine);
- SQAIStationList_vDistanceManhattanToTile.AddConstructor<void (AIStationList_vDistanceManhattanToTile::*)(TileIndex tile), 2>(engine, "xi");
-
- SQAIStationList_vDistanceManhattanToTile.DefSQStaticMethod(engine, &AIStationList_vDistanceManhattanToTile::GetClassName, "GetClassName", 1, "x");
-
- SQAIStationList_vDistanceManhattanToTile.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIStationList_vDistanceSquareToTile to be used as Squirrel parameter */
- template <> AIStationList_vDistanceSquareToTile *GetParam(ForceType<AIStationList_vDistanceSquareToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vDistanceSquareToTile *)instance; }
- template <> AIStationList_vDistanceSquareToTile &GetParam(ForceType<AIStationList_vDistanceSquareToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vDistanceSquareToTile *)instance; }
- template <> const AIStationList_vDistanceSquareToTile *GetParam(ForceType<const AIStationList_vDistanceSquareToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIStationList_vDistanceSquareToTile *)instance; }
- template <> const AIStationList_vDistanceSquareToTile &GetParam(ForceType<const AIStationList_vDistanceSquareToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIStationList_vDistanceSquareToTile *)instance; }
- template <> int Return<AIStationList_vDistanceSquareToTile *>(HSQUIRRELVM vm, AIStationList_vDistanceSquareToTile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIStationList_vDistanceSquareToTile", res, NULL, DefSQDestructorCallback<AIStationList_vDistanceSquareToTile>); return 1; }
-}; // namespace SQConvert
-
-void SQAIStationList_vDistanceSquareToTile_Register(Squirrel *engine) {
- DefSQClass <AIStationList_vDistanceSquareToTile> SQAIStationList_vDistanceSquareToTile("AIStationList_vDistanceSquareToTile");
- SQAIStationList_vDistanceSquareToTile.PreRegister(engine);
- SQAIStationList_vDistanceSquareToTile.AddConstructor<void (AIStationList_vDistanceSquareToTile::*)(TileIndex tile), 2>(engine, "xi");
-
- SQAIStationList_vDistanceSquareToTile.DefSQStaticMethod(engine, &AIStationList_vDistanceSquareToTile::GetClassName, "GetClassName", 1, "x");
-
- SQAIStationList_vDistanceSquareToTile.PostRegister(engine);
-}
--- a/src/ai/api/ai_tile.cpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_tile.cpp Tue Mar 25 12:12:45 2008 +0000
@@ -3,6 +3,7 @@
/** @file ai_tile.cpp handles the functions of the AITile class */
#include "ai_tile.hpp"
+#include "ai_map.hpp"
#include "../../tile_map.h"
#include "../../map_func.h"
#include "../../variables.h"
@@ -31,6 +32,22 @@
}
}
+/* static */ bool AITile::IsBuildableRectangle(TileIndex tile, uint width, uint height)
+{
+ uint tx, ty;
+
+ tx = AIMap::GetTileX(tile);
+ ty = AIMap::GetTileY(tile);
+
+ for (uint x = tx; x < width + tx; x++) {
+ for (uint y = ty; y < height + ty; y++) {
+ if (!IsBuildable(AIMap::GetTileIndex(x, y))) return false;
+ }
+ }
+
+ return true;
+}
+
/* static */ bool AITile::IsWater(TileIndex tile)
{
if (!::IsValidTile(tile)) return false;
@@ -83,3 +100,13 @@
return AIObject::DoCommand(tile, slope, 0, CMD_TERRAFORM_LAND);
}
+
+/* static */ int32 AITile::GetDistanceManhattanToTile(TileIndex tile_from, TileIndex tile_to)
+{
+ return AIMap::DistanceManhattan(tile_from, tile_to);
+}
+
+/* static */ int32 AITile::GetDistanceSquareToTile(TileIndex tile_from, TileIndex tile_to)
+{
+ return AIMap::DistanceSquare(tile_from, tile_to);
+}
--- a/src/ai/api/ai_tile.hpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_tile.hpp Tue Mar 25 12:12:45 2008 +0000
@@ -59,6 +59,17 @@
static bool IsBuildable(TileIndex tile);
/**
+ * Check if this tile is buildable in a rectangle around a tile, with the entry in the list as top-left.
+ * @note Road and rail are considered buildable.
+ * @param tile the tile to check on.
+ * @param width the width of the rectangle.
+ * @param height the height of the rectangle.
+ * @pre AIMap::IsValidTile(tile).
+ * @return true if it is buildable, false if not.
+ */
+ static bool IsBuildableRectangle(TileIndex tile, uint width, uint height);
+
+ /**
* Check if a tile is water.
* @param tile the tile to check on.
* @pre AIMap::IsValidTile(tile).
@@ -112,6 +123,22 @@
static int32 GetCargoProduction(TileIndex tile, CargoID cargo_type, uint width, uint height, uint radius);
/**
+ * Get the manhattan distance from the tile to the tile.
+ * @param tile_from The tile to get the distance to.
+ * @param tile_to The tile to get the distance to.
+ * @return The distance between the two tiles.
+ */
+ static int32 GetDistanceManhattanToTile(TileIndex tile_from, TileIndex tile_to);
+
+ /**
+ * Get the square distance from the tile to the tile.
+ * @param tile_from The tile to get the distance to.
+ * @param tile_to The tile to get the distance to.
+ * @return The distance between the two tiles.
+ */
+ static int32 GetDistanceSquareToTile(TileIndex tile_from, TileIndex tile_to);
+
+ /**
* Raise the given corners of the tile. The corners can be combined,
* for example: SLOPE_N | SLOPE_W (= SLOPE_NW)
* @param tile the tile to raise.
--- a/src/ai/api/ai_tile.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_tile.hpp.sq Tue Mar 25 12:12:45 2008 +0000
@@ -40,15 +40,18 @@
SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_E, "SLOPE_STEEP_E");
SQAITile.DefSQConst(engine, AITile::SLOPE_STEEP_N, "SLOPE_STEEP_N");
- SQAITile.DefSQStaticMethod(engine, &AITile::GetClassName, "GetClassName", 1, "x");
- SQAITile.DefSQStaticMethod(engine, &AITile::IsBuildable, "IsBuildable", 2, "xi");
- SQAITile.DefSQStaticMethod(engine, &AITile::IsWater, "IsWater", 2, "xi");
- SQAITile.DefSQStaticMethod(engine, &AITile::GetSlope, "GetSlope", 2, "xi");
- SQAITile.DefSQStaticMethod(engine, &AITile::GetHeight, "GetHeight", 2, "xi");
- SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoAcceptance, "GetCargoAcceptance", 6, "xiiiii");
- SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoProduction, "GetCargoProduction", 6, "xiiiii");
- SQAITile.DefSQStaticMethod(engine, &AITile::RaiseTile, "RaiseTile", 3, "xii");
- SQAITile.DefSQStaticMethod(engine, &AITile::LowerTile, "LowerTile", 3, "xii");
+ SQAITile.DefSQStaticMethod(engine, &AITile::GetClassName, "GetClassName", 1, "x");
+ SQAITile.DefSQStaticMethod(engine, &AITile::IsBuildable, "IsBuildable", 2, "xi");
+ SQAITile.DefSQStaticMethod(engine, &AITile::IsBuildableRectangle, "IsBuildableRectangle", 4, "xiii");
+ SQAITile.DefSQStaticMethod(engine, &AITile::IsWater, "IsWater", 2, "xi");
+ SQAITile.DefSQStaticMethod(engine, &AITile::GetSlope, "GetSlope", 2, "xi");
+ SQAITile.DefSQStaticMethod(engine, &AITile::GetHeight, "GetHeight", 2, "xi");
+ SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoAcceptance, "GetCargoAcceptance", 6, "xiiiii");
+ SQAITile.DefSQStaticMethod(engine, &AITile::GetCargoProduction, "GetCargoProduction", 6, "xiiiii");
+ SQAITile.DefSQStaticMethod(engine, &AITile::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, "xii");
+ SQAITile.DefSQStaticMethod(engine, &AITile::GetDistanceSquareToTile, "GetDistanceSquareToTile", 3, "xii");
+ SQAITile.DefSQStaticMethod(engine, &AITile::RaiseTile, "RaiseTile", 3, "xii");
+ SQAITile.DefSQStaticMethod(engine, &AITile::LowerTile, "LowerTile", 3, "xii");
SQAITile.PostRegister(engine);
}
--- a/src/ai/api/ai_tilelist_valuator.cpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-#include "ai_tilelist_valuator.hpp"
-#include "ai_tile.hpp"
-#include "ai_road.hpp"
-#include "ai_map.hpp"
-#include "../../road_map.h"
-
-int32 AITileList_vBuildable::Valuate(int32 tile) const
-{
- return AITile::IsBuildable(tile);
-}
-
-int32 AITileList_vWater::Valuate(int32 tile) const
-{
- return AITile::IsWater(tile);
-}
-
-int32 AITileList_vBuildableRectangle::Valuate(int32 tile) const
-{
- uint tx, ty;
-
- tx = AIMap::GetTileX(tile);
- ty = AIMap::GetTileY(tile);
-
- for (uint x = tx; x < this->width + tx; x++) {
- for (uint y = ty; y < this->height + ty; y++) {
- if (!AITile::IsBuildable(AIMap::GetTileIndex(x, y))) return false;
- }
- }
-
- return true;
-}
-
-int32 AITileList_vSlope::Valuate(int32 tile) const
-{
- return AITile::GetSlope(tile);
-}
-
-int32 AITileList_vHeight::Valuate(int32 tile) const
-{
- return AITile::GetHeight(tile);
-}
-
-int32 AITileList_vNeighbourRoadCount::Valuate(int32 tile) const
-{
- return AIRoad::GetNeighbourRoadCount(tile);
-}
-
-int32 AITileList_vRoadTile::Valuate(int32 tile) const
-{
- return ::IsTileType(tile, MP_ROAD) && ::GetRoadTileType(tile) != ROAD_TILE_DEPOT;
-}
-
-int32 AITileList_vCargoAcceptance::Valuate(int32 tile) const
-{
- return AITile::GetCargoAcceptance(tile, this->cargo_id, this->width, this->height, this->radius);
-}
-
-int32 AITileList_vCargoProduction::Valuate(int32 tile) const
-{
- return AITile::GetCargoProduction(tile, this->cargo_id, this->width, this->height, this->radius);
-}
-
-int32 AITileList_vDistanceManhattanToTile::Valuate(int32 tile) const
-{
- return AIMap::DistanceManhattan(this->tile, tile);
-}
-
-int32 AITileList_vDistanceSquareToTile::Valuate(int32 tile) const
-{
- return AIMap::DistanceSquare(this->tile, tile);
-}
--- a/src/ai/api/ai_tilelist_valuator.hpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-/* $Id$ */
-
-/** @file ai_tilelist_valuator.hpp all the valuators for AITileList */
-
-#ifndef AI_TILELIST_VALUATOR_HPP
-#define AI_TILELIST_VALUATOR_HPP
-
-#include "ai_abstractlist.hpp"
-
-/**
- * Check if tiles are buildable for entries in an AITileList instance.
- * @note Resulting items are of the type bool (0 = not buildable, 1 = buildable).
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vBuildable : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vBuildable"; }
-
-private:
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 tile) const;
-};
-
-/**
- * Check if tiles are water-tiles for entries in an AITileList instance.
- * @note Resulting items are of the type bool (0 = not water-tile, 1 = water-tile).
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vWater : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vWater"; }
-
-private:
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 tile) const;
-};
-
-/**
- * Check if tiles are buildable in a rectangle around entries in an AITileList instance, with the entry in the list as top-left.
- * @note Resulting items are of the type bool (0 = not buildable, 1 = buildable).
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vBuildableRectangle : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vBuildableRectangle"; }
-
- /**
- * @param width The width of the rectangle.
- * @param height The height of the rectangle.
- */
- AITileList_vBuildableRectangle(uint width, uint height) :
- width(width),
- height(height)
- {}
-
-private:
- uint width, height;
-
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 tile) const;
-};
-
-/**
- * Check how tiles in an AITileList instance are sloped.
- * @note Resulting items are of the type int32 (0 = flat, > 1 = slope).
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vSlope : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vSlope"; }
-
-private:
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 tile) const;
-};
-
-/**
- * Check the height of the tiles in an AITileList instance.
- * @note Resulting items are of the type int32 (height, ranging from 0 to 15).
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vHeight : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vHeight"; }
-
-private:
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 tile) const;
-};
-
-/**
- * Count for each entry in AITileList the amount of neighbours that contain road.
- * This is a value between 0 and 4, as it only check horizontal and vertical.
- * @note Resulting items are of the type int32 (the amount of neighbour road tiles, value between 0 and 4).
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vNeighbourRoadCount : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vNeighbourRoad"; }
-
-private:
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 tile) const;
-};
-
-/**
- * Check if the tiles in AITileList have a piece of road on them.
- * @note Resulting items are of the type bool (0 = no road, 1 = road).
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vRoadTile : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vRoadTile"; }
-
-private:
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 tile) const;
-};
-
-/**
- * Get the amount of estimated accepted cargo for all tiles in AITileList.
- * If this value is >= 8, it means it will accept this cargo. For passengers
- * and mail it is also a good indicator how much cargo would be brought to
- * the station.
- * @post Values < 8 means this tile does not accept this cargo.
- * @note Resulting items are of the type int32 (indicating acceptance).
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vCargoAcceptance : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vCargoAcceptance"; }
-
- /**
- * @param cargo_id The cargo to check the acceptance for.
- * @param width The width of your station.
- * @param height The height of your station.
- * @param radius The radius of your station-type.
- */
- AITileList_vCargoAcceptance(CargoID cargo_id, uint width, uint height, uint radius) :
- cargo_id(cargo_id),
- width(width),
- height(height),
- radius(radius)
- {}
-
-private:
- CargoID cargo_id;
- uint width, height, radius;
-
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 tile) const;
-};
-
-/**
- * Get the amount of tiles producing cargo for all tiles in AITileList.
- * This counts the tiles that produce this cargo. It doesn't give any
- * indication about the amount it will be producing.
- * @note Town(houses) are not included in the value.
- * @note Resulting items are of the type int32 (indicating tiles of production).
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vCargoProduction : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vCargoProduction"; }
-
- /**
- * @param cargo_id The cargo to check the production for.
- * @param width The width of your station.
- * @param height The height of your station.
- * @param radius The radius of your station-type.
- */
- AITileList_vCargoProduction(CargoID cargo_id, uint width, uint height, uint radius) :
- cargo_id(cargo_id),
- width(width),
- height(height),
- radius(radius)
- {}
-
-private:
- CargoID cargo_id;
- uint width, height, radius;
-
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 tile) const;
-};
-
-/**
- * Get the manhattan distance to a tile for entries in an AITileList instance.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vDistanceManhattanToTile : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vDistanceManhattanToTile"; }
-
- /**
- * @param tile The tile to get the distance to.
- */
- AITileList_vDistanceManhattanToTile(TileIndex tile) :
- tile(tile)
- {}
-
-private:
- TileIndex tile;
-
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 station) const;
-};
-
-/**
- * Get the square distance to a tile for entries in an AITileList instance.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on an AITileList instance.
- * @ingroup AITileList
- */
-class AITileList_vDistanceSquareToTile : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITileList_vDistanceSquareToTile"; }
-
- /**
- * @param tile The tile to get the distance to.
- */
- AITileList_vDistanceSquareToTile(TileIndex tile) :
- tile(tile)
- {}
-
-private:
- TileIndex tile;
-
- const char *GetListName() const { return "AITileList"; }
- int32 Valuate(int32 station) const;
-};
-
-
-#endif /* AI_TILELIST_VALUATOR_HPP */
--- a/src/ai/api/ai_tilelist_valuator.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-#include "ai_tilelist_valuator.hpp"
-
-namespace SQConvert {
- /* Allow AITileList_vBuildable to be used as Squirrel parameter */
- template <> AITileList_vBuildable *GetParam(ForceType<AITileList_vBuildable *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vBuildable *)instance; }
- template <> AITileList_vBuildable &GetParam(ForceType<AITileList_vBuildable &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vBuildable *)instance; }
- template <> const AITileList_vBuildable *GetParam(ForceType<const AITileList_vBuildable *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vBuildable *)instance; }
- template <> const AITileList_vBuildable &GetParam(ForceType<const AITileList_vBuildable &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vBuildable *)instance; }
- template <> int Return<AITileList_vBuildable *>(HSQUIRRELVM vm, AITileList_vBuildable *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vBuildable", res, NULL, DefSQDestructorCallback<AITileList_vBuildable>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vBuildable_Register(Squirrel *engine) {
- DefSQClass <AITileList_vBuildable> SQAITileList_vBuildable("AITileList_vBuildable");
- SQAITileList_vBuildable.PreRegister(engine);
- SQAITileList_vBuildable.AddConstructor<void (AITileList_vBuildable::*)(), 1>(engine, "x");
-
- SQAITileList_vBuildable.DefSQStaticMethod(engine, &AITileList_vBuildable::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vBuildable.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vWater to be used as Squirrel parameter */
- template <> AITileList_vWater *GetParam(ForceType<AITileList_vWater *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vWater *)instance; }
- template <> AITileList_vWater &GetParam(ForceType<AITileList_vWater &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vWater *)instance; }
- template <> const AITileList_vWater *GetParam(ForceType<const AITileList_vWater *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vWater *)instance; }
- template <> const AITileList_vWater &GetParam(ForceType<const AITileList_vWater &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vWater *)instance; }
- template <> int Return<AITileList_vWater *>(HSQUIRRELVM vm, AITileList_vWater *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vWater", res, NULL, DefSQDestructorCallback<AITileList_vWater>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vWater_Register(Squirrel *engine) {
- DefSQClass <AITileList_vWater> SQAITileList_vWater("AITileList_vWater");
- SQAITileList_vWater.PreRegister(engine);
- SQAITileList_vWater.AddConstructor<void (AITileList_vWater::*)(), 1>(engine, "x");
-
- SQAITileList_vWater.DefSQStaticMethod(engine, &AITileList_vWater::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vWater.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vBuildableRectangle to be used as Squirrel parameter */
- template <> AITileList_vBuildableRectangle *GetParam(ForceType<AITileList_vBuildableRectangle *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vBuildableRectangle *)instance; }
- template <> AITileList_vBuildableRectangle &GetParam(ForceType<AITileList_vBuildableRectangle &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vBuildableRectangle *)instance; }
- template <> const AITileList_vBuildableRectangle *GetParam(ForceType<const AITileList_vBuildableRectangle *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vBuildableRectangle *)instance; }
- template <> const AITileList_vBuildableRectangle &GetParam(ForceType<const AITileList_vBuildableRectangle &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vBuildableRectangle *)instance; }
- template <> int Return<AITileList_vBuildableRectangle *>(HSQUIRRELVM vm, AITileList_vBuildableRectangle *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vBuildableRectangle", res, NULL, DefSQDestructorCallback<AITileList_vBuildableRectangle>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vBuildableRectangle_Register(Squirrel *engine) {
- DefSQClass <AITileList_vBuildableRectangle> SQAITileList_vBuildableRectangle("AITileList_vBuildableRectangle");
- SQAITileList_vBuildableRectangle.PreRegister(engine);
- SQAITileList_vBuildableRectangle.AddConstructor<void (AITileList_vBuildableRectangle::*)(uint width, uint height), 3>(engine, "xii");
-
- SQAITileList_vBuildableRectangle.DefSQStaticMethod(engine, &AITileList_vBuildableRectangle::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vBuildableRectangle.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vSlope to be used as Squirrel parameter */
- template <> AITileList_vSlope *GetParam(ForceType<AITileList_vSlope *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vSlope *)instance; }
- template <> AITileList_vSlope &GetParam(ForceType<AITileList_vSlope &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vSlope *)instance; }
- template <> const AITileList_vSlope *GetParam(ForceType<const AITileList_vSlope *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vSlope *)instance; }
- template <> const AITileList_vSlope &GetParam(ForceType<const AITileList_vSlope &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vSlope *)instance; }
- template <> int Return<AITileList_vSlope *>(HSQUIRRELVM vm, AITileList_vSlope *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vSlope", res, NULL, DefSQDestructorCallback<AITileList_vSlope>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vSlope_Register(Squirrel *engine) {
- DefSQClass <AITileList_vSlope> SQAITileList_vSlope("AITileList_vSlope");
- SQAITileList_vSlope.PreRegister(engine);
- SQAITileList_vSlope.AddConstructor<void (AITileList_vSlope::*)(), 1>(engine, "x");
-
- SQAITileList_vSlope.DefSQStaticMethod(engine, &AITileList_vSlope::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vSlope.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vHeight to be used as Squirrel parameter */
- template <> AITileList_vHeight *GetParam(ForceType<AITileList_vHeight *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vHeight *)instance; }
- template <> AITileList_vHeight &GetParam(ForceType<AITileList_vHeight &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vHeight *)instance; }
- template <> const AITileList_vHeight *GetParam(ForceType<const AITileList_vHeight *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vHeight *)instance; }
- template <> const AITileList_vHeight &GetParam(ForceType<const AITileList_vHeight &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vHeight *)instance; }
- template <> int Return<AITileList_vHeight *>(HSQUIRRELVM vm, AITileList_vHeight *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vHeight", res, NULL, DefSQDestructorCallback<AITileList_vHeight>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vHeight_Register(Squirrel *engine) {
- DefSQClass <AITileList_vHeight> SQAITileList_vHeight("AITileList_vHeight");
- SQAITileList_vHeight.PreRegister(engine);
- SQAITileList_vHeight.AddConstructor<void (AITileList_vHeight::*)(), 1>(engine, "x");
-
- SQAITileList_vHeight.DefSQStaticMethod(engine, &AITileList_vHeight::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vHeight.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vNeighbourRoadCount to be used as Squirrel parameter */
- template <> AITileList_vNeighbourRoadCount *GetParam(ForceType<AITileList_vNeighbourRoadCount *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vNeighbourRoadCount *)instance; }
- template <> AITileList_vNeighbourRoadCount &GetParam(ForceType<AITileList_vNeighbourRoadCount &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vNeighbourRoadCount *)instance; }
- template <> const AITileList_vNeighbourRoadCount *GetParam(ForceType<const AITileList_vNeighbourRoadCount *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vNeighbourRoadCount *)instance; }
- template <> const AITileList_vNeighbourRoadCount &GetParam(ForceType<const AITileList_vNeighbourRoadCount &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vNeighbourRoadCount *)instance; }
- template <> int Return<AITileList_vNeighbourRoadCount *>(HSQUIRRELVM vm, AITileList_vNeighbourRoadCount *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vNeighbourRoadCount", res, NULL, DefSQDestructorCallback<AITileList_vNeighbourRoadCount>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vNeighbourRoadCount_Register(Squirrel *engine) {
- DefSQClass <AITileList_vNeighbourRoadCount> SQAITileList_vNeighbourRoadCount("AITileList_vNeighbourRoadCount");
- SQAITileList_vNeighbourRoadCount.PreRegister(engine);
- SQAITileList_vNeighbourRoadCount.AddConstructor<void (AITileList_vNeighbourRoadCount::*)(), 1>(engine, "x");
-
- SQAITileList_vNeighbourRoadCount.DefSQStaticMethod(engine, &AITileList_vNeighbourRoadCount::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vNeighbourRoadCount.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vRoadTile to be used as Squirrel parameter */
- template <> AITileList_vRoadTile *GetParam(ForceType<AITileList_vRoadTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vRoadTile *)instance; }
- template <> AITileList_vRoadTile &GetParam(ForceType<AITileList_vRoadTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vRoadTile *)instance; }
- template <> const AITileList_vRoadTile *GetParam(ForceType<const AITileList_vRoadTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vRoadTile *)instance; }
- template <> const AITileList_vRoadTile &GetParam(ForceType<const AITileList_vRoadTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vRoadTile *)instance; }
- template <> int Return<AITileList_vRoadTile *>(HSQUIRRELVM vm, AITileList_vRoadTile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vRoadTile", res, NULL, DefSQDestructorCallback<AITileList_vRoadTile>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vRoadTile_Register(Squirrel *engine) {
- DefSQClass <AITileList_vRoadTile> SQAITileList_vRoadTile("AITileList_vRoadTile");
- SQAITileList_vRoadTile.PreRegister(engine);
- SQAITileList_vRoadTile.AddConstructor<void (AITileList_vRoadTile::*)(), 1>(engine, "x");
-
- SQAITileList_vRoadTile.DefSQStaticMethod(engine, &AITileList_vRoadTile::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vRoadTile.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vCargoAcceptance to be used as Squirrel parameter */
- template <> AITileList_vCargoAcceptance *GetParam(ForceType<AITileList_vCargoAcceptance *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vCargoAcceptance *)instance; }
- template <> AITileList_vCargoAcceptance &GetParam(ForceType<AITileList_vCargoAcceptance &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vCargoAcceptance *)instance; }
- template <> const AITileList_vCargoAcceptance *GetParam(ForceType<const AITileList_vCargoAcceptance *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vCargoAcceptance *)instance; }
- template <> const AITileList_vCargoAcceptance &GetParam(ForceType<const AITileList_vCargoAcceptance &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vCargoAcceptance *)instance; }
- template <> int Return<AITileList_vCargoAcceptance *>(HSQUIRRELVM vm, AITileList_vCargoAcceptance *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vCargoAcceptance", res, NULL, DefSQDestructorCallback<AITileList_vCargoAcceptance>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vCargoAcceptance_Register(Squirrel *engine) {
- DefSQClass <AITileList_vCargoAcceptance> SQAITileList_vCargoAcceptance("AITileList_vCargoAcceptance");
- SQAITileList_vCargoAcceptance.PreRegister(engine);
- SQAITileList_vCargoAcceptance.AddConstructor<void (AITileList_vCargoAcceptance::*)(CargoID cargo_id, uint width, uint height, uint radius), 5>(engine, "xiiii");
-
- SQAITileList_vCargoAcceptance.DefSQStaticMethod(engine, &AITileList_vCargoAcceptance::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vCargoAcceptance.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vCargoProduction to be used as Squirrel parameter */
- template <> AITileList_vCargoProduction *GetParam(ForceType<AITileList_vCargoProduction *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vCargoProduction *)instance; }
- template <> AITileList_vCargoProduction &GetParam(ForceType<AITileList_vCargoProduction &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vCargoProduction *)instance; }
- template <> const AITileList_vCargoProduction *GetParam(ForceType<const AITileList_vCargoProduction *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vCargoProduction *)instance; }
- template <> const AITileList_vCargoProduction &GetParam(ForceType<const AITileList_vCargoProduction &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vCargoProduction *)instance; }
- template <> int Return<AITileList_vCargoProduction *>(HSQUIRRELVM vm, AITileList_vCargoProduction *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vCargoProduction", res, NULL, DefSQDestructorCallback<AITileList_vCargoProduction>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vCargoProduction_Register(Squirrel *engine) {
- DefSQClass <AITileList_vCargoProduction> SQAITileList_vCargoProduction("AITileList_vCargoProduction");
- SQAITileList_vCargoProduction.PreRegister(engine);
- SQAITileList_vCargoProduction.AddConstructor<void (AITileList_vCargoProduction::*)(CargoID cargo_id, uint width, uint height, uint radius), 5>(engine, "xiiii");
-
- SQAITileList_vCargoProduction.DefSQStaticMethod(engine, &AITileList_vCargoProduction::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vCargoProduction.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vDistanceManhattanToTile to be used as Squirrel parameter */
- template <> AITileList_vDistanceManhattanToTile *GetParam(ForceType<AITileList_vDistanceManhattanToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vDistanceManhattanToTile *)instance; }
- template <> AITileList_vDistanceManhattanToTile &GetParam(ForceType<AITileList_vDistanceManhattanToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vDistanceManhattanToTile *)instance; }
- template <> const AITileList_vDistanceManhattanToTile *GetParam(ForceType<const AITileList_vDistanceManhattanToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vDistanceManhattanToTile *)instance; }
- template <> const AITileList_vDistanceManhattanToTile &GetParam(ForceType<const AITileList_vDistanceManhattanToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vDistanceManhattanToTile *)instance; }
- template <> int Return<AITileList_vDistanceManhattanToTile *>(HSQUIRRELVM vm, AITileList_vDistanceManhattanToTile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vDistanceManhattanToTile", res, NULL, DefSQDestructorCallback<AITileList_vDistanceManhattanToTile>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vDistanceManhattanToTile_Register(Squirrel *engine) {
- DefSQClass <AITileList_vDistanceManhattanToTile> SQAITileList_vDistanceManhattanToTile("AITileList_vDistanceManhattanToTile");
- SQAITileList_vDistanceManhattanToTile.PreRegister(engine);
- SQAITileList_vDistanceManhattanToTile.AddConstructor<void (AITileList_vDistanceManhattanToTile::*)(TileIndex tile), 2>(engine, "xi");
-
- SQAITileList_vDistanceManhattanToTile.DefSQStaticMethod(engine, &AITileList_vDistanceManhattanToTile::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vDistanceManhattanToTile.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITileList_vDistanceSquareToTile to be used as Squirrel parameter */
- template <> AITileList_vDistanceSquareToTile *GetParam(ForceType<AITileList_vDistanceSquareToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vDistanceSquareToTile *)instance; }
- template <> AITileList_vDistanceSquareToTile &GetParam(ForceType<AITileList_vDistanceSquareToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vDistanceSquareToTile *)instance; }
- template <> const AITileList_vDistanceSquareToTile *GetParam(ForceType<const AITileList_vDistanceSquareToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList_vDistanceSquareToTile *)instance; }
- template <> const AITileList_vDistanceSquareToTile &GetParam(ForceType<const AITileList_vDistanceSquareToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList_vDistanceSquareToTile *)instance; }
- template <> int Return<AITileList_vDistanceSquareToTile *>(HSQUIRRELVM vm, AITileList_vDistanceSquareToTile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITileList_vDistanceSquareToTile", res, NULL, DefSQDestructorCallback<AITileList_vDistanceSquareToTile>); return 1; }
-}; // namespace SQConvert
-
-void SQAITileList_vDistanceSquareToTile_Register(Squirrel *engine) {
- DefSQClass <AITileList_vDistanceSquareToTile> SQAITileList_vDistanceSquareToTile("AITileList_vDistanceSquareToTile");
- SQAITileList_vDistanceSquareToTile.PreRegister(engine);
- SQAITileList_vDistanceSquareToTile.AddConstructor<void (AITileList_vDistanceSquareToTile::*)(TileIndex tile), 2>(engine, "xi");
-
- SQAITileList_vDistanceSquareToTile.DefSQStaticMethod(engine, &AITileList_vDistanceSquareToTile::GetClassName, "GetClassName", 1, "x");
-
- SQAITileList_vDistanceSquareToTile.PostRegister(engine);
-}
--- a/src/ai/api/ai_town.cpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_town.cpp Tue Mar 25 12:12:45 2008 +0000
@@ -3,6 +3,7 @@
/** @file ai_town.cpp handles the town-related functions of the AITown class */
#include "ai_town.hpp"
+#include "ai_map.hpp"
#include "../../town.h"
#include "../../strings_func.h"
#include "../../town_type.h"
@@ -49,3 +50,13 @@
const Town *t = ::GetTown(town_id);
return t->xy;
}
+
+/* static */ int32 AITown::GetDistanceManhattanToTile(TownID town_id, TileIndex tile)
+{
+ return AIMap::DistanceManhattan(tile, GetLocation(town_id));
+}
+
+/* static */ int32 AITown::GetDistanceSquareToTile(TownID town_id, TileIndex tile)
+{
+ return AIMap::DistanceSquare(tile, GetLocation(town_id));
+}
--- a/src/ai/api/ai_town.hpp Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_town.hpp Tue Mar 25 12:12:45 2008 +0000
@@ -66,6 +66,24 @@
* @post return value is always valid with AIMap::IsValidTile().
*/
static TileIndex GetLocation(TownID town_id);
+
+ /**
+ * Get the manhattan distance from the tile to the AITown::GetLocation()
+ * of the town.
+ * @param town_id The town to get the distance to.
+ * @param tile The tile to get the distance to.
+ * @return The distance between town and tile.
+ */
+ static int32 GetDistanceManhattanToTile(TownID town_id, TileIndex tile);
+
+ /**
+ * Get the square distance from the tile to the AITown::GetLocation()
+ * of the town.
+ * @param town_id The town to get the distance to.
+ * @param tile The tile to get the distance to.
+ * @return The distance between town and tile.
+ */
+ static int32 GetDistanceSquareToTile(TownID town_id, TileIndex tile);
};
#endif /* AI_TOWN_HPP */
--- a/src/ai/api/ai_town.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/ai_town.hpp.sq Tue Mar 25 12:12:45 2008 +0000
@@ -14,13 +14,15 @@
SQAITown.PreRegister(engine);
SQAITown.AddConstructor<void (AITown::*)(), 1>(engine, "x");
- SQAITown.DefSQStaticMethod(engine, &AITown::GetClassName, "GetClassName", 1, "x");
- SQAITown.DefSQStaticMethod(engine, &AITown::GetMaxTownID, "GetMaxTownID", 1, "x");
- SQAITown.DefSQStaticMethod(engine, &AITown::GetTownCount, "GetTownCount", 1, "x");
- SQAITown.DefSQStaticMethod(engine, &AITown::IsValidTown, "IsValidTown", 2, "xi");
- SQAITown.DefSQStaticMethod(engine, &AITown::GetName, "GetName", 2, "xi");
- SQAITown.DefSQStaticMethod(engine, &AITown::GetPopulation, "GetPopulation", 2, "xi");
- SQAITown.DefSQStaticMethod(engine, &AITown::GetLocation, "GetLocation", 2, "xi");
+ SQAITown.DefSQStaticMethod(engine, &AITown::GetClassName, "GetClassName", 1, "x");
+ SQAITown.DefSQStaticMethod(engine, &AITown::GetMaxTownID, "GetMaxTownID", 1, "x");
+ SQAITown.DefSQStaticMethod(engine, &AITown::GetTownCount, "GetTownCount", 1, "x");
+ SQAITown.DefSQStaticMethod(engine, &AITown::IsValidTown, "IsValidTown", 2, "xi");
+ SQAITown.DefSQStaticMethod(engine, &AITown::GetName, "GetName", 2, "xi");
+ SQAITown.DefSQStaticMethod(engine, &AITown::GetPopulation, "GetPopulation", 2, "xi");
+ SQAITown.DefSQStaticMethod(engine, &AITown::GetLocation, "GetLocation", 2, "xi");
+ SQAITown.DefSQStaticMethod(engine, &AITown::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, "xii");
+ SQAITown.DefSQStaticMethod(engine, &AITown::GetDistanceSquareToTile, "GetDistanceSquareToTile", 3, "xii");
SQAITown.PostRegister(engine);
}
--- a/src/ai/api/ai_townlist_valuator.cpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#include "ai_townlist_valuator.hpp"
-#include "ai_town.hpp"
-#include "ai_map.hpp"
-#include "ai_base.hpp"
-
-int32 AITownList_vPopulation::Valuate(int32 town) const
-{
- return AITown::GetPopulation(town);
-}
-
-int32 AITownList_vLocation::Valuate(int32 town) const
-{
- return AITown::GetLocation(town);
-}
-
-int32 AITownList_vDistanceManhattanToTile::Valuate(int32 town) const
-{
- return AIMap::DistanceManhattan(this->tile, AITown::GetLocation(town));
-}
-
-int32 AITownList_vDistanceSquareToTile::Valuate(int32 town) const
-{
- return AIMap::DistanceSquare(this->tile, AITown::GetLocation(town));
-}
--- a/src/ai/api/ai_townlist_valuator.hpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/* $Id$ */
-
-/** @file ai_townlist_valuator.hpp all the valuators for AITownList */
-
-#ifndef AI_TOWNLIST_VALUATOR_HPP
-#define AI_TOWNLIST_VALUATOR_HPP
-
-#include "ai_abstractlist.hpp"
-
-/**
- * Get the population for entries in an AITownList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AITownList instance.
- * @ingroup AITownList
- */
-class AITownList_vPopulation : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITownList_vGetPopulation"; }
-
-private:
- const char *GetListName() const { return "AITownList"; }
- int32 Valuate(int32 town) const;
-};
-
-/**
- * Get the location for entries in an AITownList instance.
- * @note Resulting items are of the type TileIndex.
- * @note Can only operate on an AITownList instance.
- * @ingroup AITownList
- */
-class AITownList_vLocation : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITownList_vGetLocation"; }
-
-private:
- const char *GetListName() const { return "AITownList"; }
- int32 Valuate(int32 town) const;
-};
-
-/**
- * Get the manhattan distance to a tile for entries in an AITownList instance.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on an AITownList instance.
- * @ingroup AITownList
- */
-class AITownList_vDistanceManhattanToTile : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITownList_vDistanceManhattanToTile"; }
-
- /**
- * Custom constructor, we want a tile as parameter.
- */
- AITownList_vDistanceManhattanToTile(TileIndex tile) :
- tile(tile)
- {}
-
-private:
- TileIndex tile;
-
- /**
- * @param tile The tile to get the distance to.
- */
- const char *GetListName() const { return "AITownList"; }
-
- int32 Valuate(int32 station) const;
-};
-
-/**
- * Get the square distance to a tile for entries in an AITownList instance.
- * @note Resulting items are of the type uint32.
- * @note Can only operate on an AITownList instance.
- * @ingroup AITownList
- */
-class AITownList_vDistanceSquareToTile : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AITownList_vDistanceSquareToTile"; }
-
- /**
- * @param tile The tile to get the distance to.
- */
- AITownList_vDistanceSquareToTile(TileIndex tile) :
- tile(tile)
- {}
-
-private:
- TileIndex tile;
-
- const char *GetListName() const { return "AITownList"; }
- int32 Valuate(int32 station) const;
-};
-
-#endif /* AI_TOWNLIST_VALUATOR_HPP */
--- a/src/ai/api/ai_townlist_valuator.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-#include "ai_townlist_valuator.hpp"
-
-namespace SQConvert {
- /* Allow AITownList_vPopulation to be used as Squirrel parameter */
- template <> AITownList_vPopulation *GetParam(ForceType<AITownList_vPopulation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList_vPopulation *)instance; }
- template <> AITownList_vPopulation &GetParam(ForceType<AITownList_vPopulation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList_vPopulation *)instance; }
- template <> const AITownList_vPopulation *GetParam(ForceType<const AITownList_vPopulation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList_vPopulation *)instance; }
- template <> const AITownList_vPopulation &GetParam(ForceType<const AITownList_vPopulation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList_vPopulation *)instance; }
- template <> int Return<AITownList_vPopulation *>(HSQUIRRELVM vm, AITownList_vPopulation *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITownList_vPopulation", res, NULL, DefSQDestructorCallback<AITownList_vPopulation>); return 1; }
-}; // namespace SQConvert
-
-void SQAITownList_vPopulation_Register(Squirrel *engine) {
- DefSQClass <AITownList_vPopulation> SQAITownList_vPopulation("AITownList_vPopulation");
- SQAITownList_vPopulation.PreRegister(engine);
- SQAITownList_vPopulation.AddConstructor<void (AITownList_vPopulation::*)(), 1>(engine, "x");
-
- SQAITownList_vPopulation.DefSQStaticMethod(engine, &AITownList_vPopulation::GetClassName, "GetClassName", 1, "x");
-
- SQAITownList_vPopulation.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITownList_vLocation to be used as Squirrel parameter */
- template <> AITownList_vLocation *GetParam(ForceType<AITownList_vLocation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList_vLocation *)instance; }
- template <> AITownList_vLocation &GetParam(ForceType<AITownList_vLocation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList_vLocation *)instance; }
- template <> const AITownList_vLocation *GetParam(ForceType<const AITownList_vLocation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList_vLocation *)instance; }
- template <> const AITownList_vLocation &GetParam(ForceType<const AITownList_vLocation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList_vLocation *)instance; }
- template <> int Return<AITownList_vLocation *>(HSQUIRRELVM vm, AITownList_vLocation *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITownList_vLocation", res, NULL, DefSQDestructorCallback<AITownList_vLocation>); return 1; }
-}; // namespace SQConvert
-
-void SQAITownList_vLocation_Register(Squirrel *engine) {
- DefSQClass <AITownList_vLocation> SQAITownList_vLocation("AITownList_vLocation");
- SQAITownList_vLocation.PreRegister(engine);
- SQAITownList_vLocation.AddConstructor<void (AITownList_vLocation::*)(), 1>(engine, "x");
-
- SQAITownList_vLocation.DefSQStaticMethod(engine, &AITownList_vLocation::GetClassName, "GetClassName", 1, "x");
-
- SQAITownList_vLocation.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITownList_vDistanceManhattanToTile to be used as Squirrel parameter */
- template <> AITownList_vDistanceManhattanToTile *GetParam(ForceType<AITownList_vDistanceManhattanToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList_vDistanceManhattanToTile *)instance; }
- template <> AITownList_vDistanceManhattanToTile &GetParam(ForceType<AITownList_vDistanceManhattanToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList_vDistanceManhattanToTile *)instance; }
- template <> const AITownList_vDistanceManhattanToTile *GetParam(ForceType<const AITownList_vDistanceManhattanToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList_vDistanceManhattanToTile *)instance; }
- template <> const AITownList_vDistanceManhattanToTile &GetParam(ForceType<const AITownList_vDistanceManhattanToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList_vDistanceManhattanToTile *)instance; }
- template <> int Return<AITownList_vDistanceManhattanToTile *>(HSQUIRRELVM vm, AITownList_vDistanceManhattanToTile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITownList_vDistanceManhattanToTile", res, NULL, DefSQDestructorCallback<AITownList_vDistanceManhattanToTile>); return 1; }
-}; // namespace SQConvert
-
-void SQAITownList_vDistanceManhattanToTile_Register(Squirrel *engine) {
- DefSQClass <AITownList_vDistanceManhattanToTile> SQAITownList_vDistanceManhattanToTile("AITownList_vDistanceManhattanToTile");
- SQAITownList_vDistanceManhattanToTile.PreRegister(engine);
- SQAITownList_vDistanceManhattanToTile.AddConstructor<void (AITownList_vDistanceManhattanToTile::*)(TileIndex tile), 2>(engine, "xi");
-
- SQAITownList_vDistanceManhattanToTile.DefSQStaticMethod(engine, &AITownList_vDistanceManhattanToTile::GetClassName, "GetClassName", 1, "x");
-
- SQAITownList_vDistanceManhattanToTile.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AITownList_vDistanceSquareToTile to be used as Squirrel parameter */
- template <> AITownList_vDistanceSquareToTile *GetParam(ForceType<AITownList_vDistanceSquareToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList_vDistanceSquareToTile *)instance; }
- template <> AITownList_vDistanceSquareToTile &GetParam(ForceType<AITownList_vDistanceSquareToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList_vDistanceSquareToTile *)instance; }
- template <> const AITownList_vDistanceSquareToTile *GetParam(ForceType<const AITownList_vDistanceSquareToTile *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList_vDistanceSquareToTile *)instance; }
- template <> const AITownList_vDistanceSquareToTile &GetParam(ForceType<const AITownList_vDistanceSquareToTile &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList_vDistanceSquareToTile *)instance; }
- template <> int Return<AITownList_vDistanceSquareToTile *>(HSQUIRRELVM vm, AITownList_vDistanceSquareToTile *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AITownList_vDistanceSquareToTile", res, NULL, DefSQDestructorCallback<AITownList_vDistanceSquareToTile>); return 1; }
-}; // namespace SQConvert
-
-void SQAITownList_vDistanceSquareToTile_Register(Squirrel *engine) {
- DefSQClass <AITownList_vDistanceSquareToTile> SQAITownList_vDistanceSquareToTile("AITownList_vDistanceSquareToTile");
- SQAITownList_vDistanceSquareToTile.PreRegister(engine);
- SQAITownList_vDistanceSquareToTile.AddConstructor<void (AITownList_vDistanceSquareToTile::*)(TileIndex tile), 2>(engine, "xi");
-
- SQAITownList_vDistanceSquareToTile.DefSQStaticMethod(engine, &AITownList_vDistanceSquareToTile::GetClassName, "GetClassName", 1, "x");
-
- SQAITownList_vDistanceSquareToTile.PostRegister(engine);
-}
--- a/src/ai/api/ai_vehiclelist_valuator.cpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-#include "ai_vehiclelist_valuator.hpp"
-#include "ai_vehicle.hpp"
-
-int32 AIVehicleList_vLocation::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetLocation(vehicle);
-}
-
-int32 AIVehicleList_vEngineType::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetEngineType(vehicle);
-}
-
-int32 AIVehicleList_vUnitNumber::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetUnitNumber(vehicle);
-}
-
-int32 AIVehicleList_vAge::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetAge(vehicle);
-}
-
-int32 AIVehicleList_vMaxAge::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetMaxAge(vehicle);
-}
-
-int32 AIVehicleList_vAgeLeft::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetAgeLeft(vehicle);
-}
-
-int32 AIVehicleList_vRunningCost::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetRunningCost(vehicle);
-}
-
-int32 AIVehicleList_vProfitThisYear::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetProfitThisYear(vehicle);
-}
-
-int32 AIVehicleList_vProfitLastYear::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetProfitLastYear(vehicle);
-}
-
-int32 AIVehicleList_vVehicleType::Valuate(int32 vehicle) const
-{
- return AIVehicle::GetVehicleType(vehicle);
-}
--- a/src/ai/api/ai_vehiclelist_valuator.hpp Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-/* $Id$ */
-
-/** @file ai_vehiclelist_valuator.hpp all the valuators for AIVehicleList */
-
-#ifndef AI_VEHICLELIST_VALUATOR_HPP
-#define AI_VEHICLELIST_VALUATOR_HPP
-
-#include "ai_abstractlist.hpp"
-
-/**
- * Get the location for entries in an AIVehicleList instance.
- * @note Resulting items are of the type TileIndex.
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vLocation : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vGetLocation"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-/**
- * Get the engine-type for entries in an AIVehicleList instance.
- * @note Resulting items are of the type EngineID.
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vEngineType : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vEngineType"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-/**
- * Get the unit number for entries in an AIVehicleList instance.
- * @note Resulting items are of the type int32.
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vUnitNumber : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vUnitNumber"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-/**
- * Get the age for entries in an AIVehicleList instance.
- * @note Resulting items are of the type int32 (age in days).
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vAge : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vAge"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-/**
- * Get the max age for entries in an AIVehicleList instance.
- * @note Resulting items are of the type int32 (age in days).
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vMaxAge : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vMaxAge"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-/**
- * Get the age left for the vehicle gets 'old' for entries in an AIVehicleList instance.
- * @note Resulting items are of the type int32 (age in days).
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vAgeLeft : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vAgeLeft"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-/**
- * Get the running costs for the entries in an AIVehicleList instance.
- * @note Resulting items are of the type int32 (cost is per year).
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vRunningCost : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vRunningCost"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-
-/**
- * Get the profit of this year for entries in an AIVehicleList instance.
- * @note Resulting items are of the type int32 (age in days).
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vProfitThisYear : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vProfitThisYear"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-/**
- * Get the profit of last year for entries in an AIVehicleList instance.
- * @note Resulting items are of the type int32 (age in days).
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vProfitLastYear : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vProfitLastYear"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-/**
- * Get the type of the vehicle for entries in an AIVehicleList instance.
- * @note Resulting items are of the type AIVehicle::VehicleType.
- * @note Can only operate on an AIVehicleList instance.
- * @ingroup AIVehicleList
- */
-class AIVehicleList_vVehicleType : public AIAbstractList::Valuator {
-public:
- static const char *GetClassName() { return "AIVehicleList_vVehicleType"; }
-
-private:
- const char *GetListName() const { return "AIVehicleList"; }
- int32 Valuate(int32 vehicle_id) const;
-};
-
-
-#endif /* AI_VEHICLELIST_VALUATOR_HPP */
--- a/src/ai/api/ai_vehiclelist_valuator.hpp.sq Tue Mar 25 12:09:42 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-#include "ai_vehiclelist_valuator.hpp"
-
-namespace SQConvert {
- /* Allow AIVehicleList_vLocation to be used as Squirrel parameter */
- template <> AIVehicleList_vLocation *GetParam(ForceType<AIVehicleList_vLocation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vLocation *)instance; }
- template <> AIVehicleList_vLocation &GetParam(ForceType<AIVehicleList_vLocation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vLocation *)instance; }
- template <> const AIVehicleList_vLocation *GetParam(ForceType<const AIVehicleList_vLocation *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vLocation *)instance; }
- template <> const AIVehicleList_vLocation &GetParam(ForceType<const AIVehicleList_vLocation &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vLocation *)instance; }
- template <> int Return<AIVehicleList_vLocation *>(HSQUIRRELVM vm, AIVehicleList_vLocation *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vLocation", res, NULL, DefSQDestructorCallback<AIVehicleList_vLocation>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vLocation_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vLocation> SQAIVehicleList_vLocation("AIVehicleList_vLocation");
- SQAIVehicleList_vLocation.PreRegister(engine);
- SQAIVehicleList_vLocation.AddConstructor<void (AIVehicleList_vLocation::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vLocation.DefSQStaticMethod(engine, &AIVehicleList_vLocation::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vLocation.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIVehicleList_vEngineType to be used as Squirrel parameter */
- template <> AIVehicleList_vEngineType *GetParam(ForceType<AIVehicleList_vEngineType *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vEngineType *)instance; }
- template <> AIVehicleList_vEngineType &GetParam(ForceType<AIVehicleList_vEngineType &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vEngineType *)instance; }
- template <> const AIVehicleList_vEngineType *GetParam(ForceType<const AIVehicleList_vEngineType *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vEngineType *)instance; }
- template <> const AIVehicleList_vEngineType &GetParam(ForceType<const AIVehicleList_vEngineType &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vEngineType *)instance; }
- template <> int Return<AIVehicleList_vEngineType *>(HSQUIRRELVM vm, AIVehicleList_vEngineType *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vEngineType", res, NULL, DefSQDestructorCallback<AIVehicleList_vEngineType>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vEngineType_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vEngineType> SQAIVehicleList_vEngineType("AIVehicleList_vEngineType");
- SQAIVehicleList_vEngineType.PreRegister(engine);
- SQAIVehicleList_vEngineType.AddConstructor<void (AIVehicleList_vEngineType::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vEngineType.DefSQStaticMethod(engine, &AIVehicleList_vEngineType::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vEngineType.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIVehicleList_vUnitNumber to be used as Squirrel parameter */
- template <> AIVehicleList_vUnitNumber *GetParam(ForceType<AIVehicleList_vUnitNumber *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vUnitNumber *)instance; }
- template <> AIVehicleList_vUnitNumber &GetParam(ForceType<AIVehicleList_vUnitNumber &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vUnitNumber *)instance; }
- template <> const AIVehicleList_vUnitNumber *GetParam(ForceType<const AIVehicleList_vUnitNumber *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vUnitNumber *)instance; }
- template <> const AIVehicleList_vUnitNumber &GetParam(ForceType<const AIVehicleList_vUnitNumber &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vUnitNumber *)instance; }
- template <> int Return<AIVehicleList_vUnitNumber *>(HSQUIRRELVM vm, AIVehicleList_vUnitNumber *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vUnitNumber", res, NULL, DefSQDestructorCallback<AIVehicleList_vUnitNumber>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vUnitNumber_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vUnitNumber> SQAIVehicleList_vUnitNumber("AIVehicleList_vUnitNumber");
- SQAIVehicleList_vUnitNumber.PreRegister(engine);
- SQAIVehicleList_vUnitNumber.AddConstructor<void (AIVehicleList_vUnitNumber::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vUnitNumber.DefSQStaticMethod(engine, &AIVehicleList_vUnitNumber::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vUnitNumber.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIVehicleList_vAge to be used as Squirrel parameter */
- template <> AIVehicleList_vAge *GetParam(ForceType<AIVehicleList_vAge *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vAge *)instance; }
- template <> AIVehicleList_vAge &GetParam(ForceType<AIVehicleList_vAge &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vAge *)instance; }
- template <> const AIVehicleList_vAge *GetParam(ForceType<const AIVehicleList_vAge *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vAge *)instance; }
- template <> const AIVehicleList_vAge &GetParam(ForceType<const AIVehicleList_vAge &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vAge *)instance; }
- template <> int Return<AIVehicleList_vAge *>(HSQUIRRELVM vm, AIVehicleList_vAge *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vAge", res, NULL, DefSQDestructorCallback<AIVehicleList_vAge>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vAge_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vAge> SQAIVehicleList_vAge("AIVehicleList_vAge");
- SQAIVehicleList_vAge.PreRegister(engine);
- SQAIVehicleList_vAge.AddConstructor<void (AIVehicleList_vAge::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vAge.DefSQStaticMethod(engine, &AIVehicleList_vAge::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vAge.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIVehicleList_vMaxAge to be used as Squirrel parameter */
- template <> AIVehicleList_vMaxAge *GetParam(ForceType<AIVehicleList_vMaxAge *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vMaxAge *)instance; }
- template <> AIVehicleList_vMaxAge &GetParam(ForceType<AIVehicleList_vMaxAge &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vMaxAge *)instance; }
- template <> const AIVehicleList_vMaxAge *GetParam(ForceType<const AIVehicleList_vMaxAge *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vMaxAge *)instance; }
- template <> const AIVehicleList_vMaxAge &GetParam(ForceType<const AIVehicleList_vMaxAge &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vMaxAge *)instance; }
- template <> int Return<AIVehicleList_vMaxAge *>(HSQUIRRELVM vm, AIVehicleList_vMaxAge *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vMaxAge", res, NULL, DefSQDestructorCallback<AIVehicleList_vMaxAge>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vMaxAge_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vMaxAge> SQAIVehicleList_vMaxAge("AIVehicleList_vMaxAge");
- SQAIVehicleList_vMaxAge.PreRegister(engine);
- SQAIVehicleList_vMaxAge.AddConstructor<void (AIVehicleList_vMaxAge::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vMaxAge.DefSQStaticMethod(engine, &AIVehicleList_vMaxAge::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vMaxAge.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIVehicleList_vAgeLeft to be used as Squirrel parameter */
- template <> AIVehicleList_vAgeLeft *GetParam(ForceType<AIVehicleList_vAgeLeft *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vAgeLeft *)instance; }
- template <> AIVehicleList_vAgeLeft &GetParam(ForceType<AIVehicleList_vAgeLeft &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vAgeLeft *)instance; }
- template <> const AIVehicleList_vAgeLeft *GetParam(ForceType<const AIVehicleList_vAgeLeft *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vAgeLeft *)instance; }
- template <> const AIVehicleList_vAgeLeft &GetParam(ForceType<const AIVehicleList_vAgeLeft &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vAgeLeft *)instance; }
- template <> int Return<AIVehicleList_vAgeLeft *>(HSQUIRRELVM vm, AIVehicleList_vAgeLeft *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vAgeLeft", res, NULL, DefSQDestructorCallback<AIVehicleList_vAgeLeft>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vAgeLeft_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vAgeLeft> SQAIVehicleList_vAgeLeft("AIVehicleList_vAgeLeft");
- SQAIVehicleList_vAgeLeft.PreRegister(engine);
- SQAIVehicleList_vAgeLeft.AddConstructor<void (AIVehicleList_vAgeLeft::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vAgeLeft.DefSQStaticMethod(engine, &AIVehicleList_vAgeLeft::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vAgeLeft.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIVehicleList_vRunningCost to be used as Squirrel parameter */
- template <> AIVehicleList_vRunningCost *GetParam(ForceType<AIVehicleList_vRunningCost *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vRunningCost *)instance; }
- template <> AIVehicleList_vRunningCost &GetParam(ForceType<AIVehicleList_vRunningCost &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vRunningCost *)instance; }
- template <> const AIVehicleList_vRunningCost *GetParam(ForceType<const AIVehicleList_vRunningCost *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vRunningCost *)instance; }
- template <> const AIVehicleList_vRunningCost &GetParam(ForceType<const AIVehicleList_vRunningCost &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vRunningCost *)instance; }
- template <> int Return<AIVehicleList_vRunningCost *>(HSQUIRRELVM vm, AIVehicleList_vRunningCost *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vRunningCost", res, NULL, DefSQDestructorCallback<AIVehicleList_vRunningCost>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vRunningCost_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vRunningCost> SQAIVehicleList_vRunningCost("AIVehicleList_vRunningCost");
- SQAIVehicleList_vRunningCost.PreRegister(engine);
- SQAIVehicleList_vRunningCost.AddConstructor<void (AIVehicleList_vRunningCost::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vRunningCost.DefSQStaticMethod(engine, &AIVehicleList_vRunningCost::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vRunningCost.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIVehicleList_vProfitThisYear to be used as Squirrel parameter */
- template <> AIVehicleList_vProfitThisYear *GetParam(ForceType<AIVehicleList_vProfitThisYear *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vProfitThisYear *)instance; }
- template <> AIVehicleList_vProfitThisYear &GetParam(ForceType<AIVehicleList_vProfitThisYear &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vProfitThisYear *)instance; }
- template <> const AIVehicleList_vProfitThisYear *GetParam(ForceType<const AIVehicleList_vProfitThisYear *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vProfitThisYear *)instance; }
- template <> const AIVehicleList_vProfitThisYear &GetParam(ForceType<const AIVehicleList_vProfitThisYear &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vProfitThisYear *)instance; }
- template <> int Return<AIVehicleList_vProfitThisYear *>(HSQUIRRELVM vm, AIVehicleList_vProfitThisYear *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vProfitThisYear", res, NULL, DefSQDestructorCallback<AIVehicleList_vProfitThisYear>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vProfitThisYear_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vProfitThisYear> SQAIVehicleList_vProfitThisYear("AIVehicleList_vProfitThisYear");
- SQAIVehicleList_vProfitThisYear.PreRegister(engine);
- SQAIVehicleList_vProfitThisYear.AddConstructor<void (AIVehicleList_vProfitThisYear::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vProfitThisYear.DefSQStaticMethod(engine, &AIVehicleList_vProfitThisYear::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vProfitThisYear.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIVehicleList_vProfitLastYear to be used as Squirrel parameter */
- template <> AIVehicleList_vProfitLastYear *GetParam(ForceType<AIVehicleList_vProfitLastYear *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vProfitLastYear *)instance; }
- template <> AIVehicleList_vProfitLastYear &GetParam(ForceType<AIVehicleList_vProfitLastYear &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vProfitLastYear *)instance; }
- template <> const AIVehicleList_vProfitLastYear *GetParam(ForceType<const AIVehicleList_vProfitLastYear *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vProfitLastYear *)instance; }
- template <> const AIVehicleList_vProfitLastYear &GetParam(ForceType<const AIVehicleList_vProfitLastYear &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vProfitLastYear *)instance; }
- template <> int Return<AIVehicleList_vProfitLastYear *>(HSQUIRRELVM vm, AIVehicleList_vProfitLastYear *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vProfitLastYear", res, NULL, DefSQDestructorCallback<AIVehicleList_vProfitLastYear>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vProfitLastYear_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vProfitLastYear> SQAIVehicleList_vProfitLastYear("AIVehicleList_vProfitLastYear");
- SQAIVehicleList_vProfitLastYear.PreRegister(engine);
- SQAIVehicleList_vProfitLastYear.AddConstructor<void (AIVehicleList_vProfitLastYear::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vProfitLastYear.DefSQStaticMethod(engine, &AIVehicleList_vProfitLastYear::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vProfitLastYear.PostRegister(engine);
-}
-
-namespace SQConvert {
- /* Allow AIVehicleList_vVehicleType to be used as Squirrel parameter */
- template <> AIVehicleList_vVehicleType *GetParam(ForceType<AIVehicleList_vVehicleType *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vVehicleType *)instance; }
- template <> AIVehicleList_vVehicleType &GetParam(ForceType<AIVehicleList_vVehicleType &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vVehicleType *)instance; }
- template <> const AIVehicleList_vVehicleType *GetParam(ForceType<const AIVehicleList_vVehicleType *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicleList_vVehicleType *)instance; }
- template <> const AIVehicleList_vVehicleType &GetParam(ForceType<const AIVehicleList_vVehicleType &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicleList_vVehicleType *)instance; }
- template <> int Return<AIVehicleList_vVehicleType *>(HSQUIRRELVM vm, AIVehicleList_vVehicleType *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIVehicleList_vVehicleType", res, NULL, DefSQDestructorCallback<AIVehicleList_vVehicleType>); return 1; }
-}; // namespace SQConvert
-
-void SQAIVehicleList_vVehicleType_Register(Squirrel *engine) {
- DefSQClass <AIVehicleList_vVehicleType> SQAIVehicleList_vVehicleType("AIVehicleList_vVehicleType");
- SQAIVehicleList_vVehicleType.PreRegister(engine);
- SQAIVehicleList_vVehicleType.AddConstructor<void (AIVehicleList_vVehicleType::*)(), 1>(engine, "x");
-
- SQAIVehicleList_vVehicleType.DefSQStaticMethod(engine, &AIVehicleList_vVehicleType::GetClassName, "GetClassName", 1, "x");
-
- SQAIVehicleList_vVehicleType.PostRegister(engine);
-}
--- a/src/ai/api/squirrel_export.awk Tue Mar 25 12:09:42 2008 +0000
+++ b/src/ai/api/squirrel_export.awk Tue Mar 25 12:12:45 2008 +0000
@@ -203,7 +203,11 @@
if (mlen <= length(methods[i, 0])) mlen = length(methods[i, 0])
}
for (i = 1; i <= method_size; i++) {
- print " SQ" cls ".DefSQMethod(engine, &" cls "::" methods[i, 0] ", " substr(spaces, 1, mlen - length(methods[i, 0])) "\"" methods[i, 0] "\", " substr(spaces, 1, mlen - length(methods[i, 0])) "" methods[i, 1] ", \"" methods[i, 2] "\");"
+ if (methods[i, 2] == "v") {
+ print " SQ" cls ".DefSQAdvancedMethod(engine, &" cls "::" methods[i, 0] ", " substr(spaces, 1, mlen - length(methods[i, 0]) - 8) "\"" methods[i, 0] "\");"
+ } else {
+ print " SQ" cls ".DefSQMethod(engine, &" cls "::" methods[i, 0] ", " substr(spaces, 1, mlen - length(methods[i, 0])) "\"" methods[i, 0] "\", " substr(spaces, 1, mlen - length(methods[i, 0])) "" methods[i, 1] ", \"" methods[i, 2] "\");"
+ }
delete methods[i]
}
if (method_size != 0) print ""
@@ -274,6 +278,8 @@
}
} else if (match(params[len], "^bool")) {
types = types "b"
+ } else if (match(params[len], "^HSQUIRRELVM")) {
+ types = "v"
} else {
types = types "i"
}