(svn r10569) [NoAI] -Add: added AIListRandomize as Valuator for all lists to attach a random value to all items
class Regression extends AIController {
stop = false;
function Start();
function Stop();
constructor() { }
}
function Regression::TestInit()
{
local settings = AISettings();
print("");
print("--TestInit--");
print(" TickTest: " + this.GetTick());
this.Sleep(1);
print(" TickTest: " + this.GetTick());
print(" SetCommandDelay: " + settings.SetCommandDelay(1));
}
function Regression::Std()
{
print("");
print("--Std--");
print(" abs(-21): " + abs(-21));
print(" abs( 21): " + abs(21));
}
function Regression::Base()
{
local base = AIBase();
print("");
print("--AIBase--");
print(" Rand(): " + base.Rand());
print(" Rand(): " + base.Rand());
print(" Rand(): " + base.Rand());
print(" RandRange(0): " + base.RandRange(0));
print(" RandRange(0): " + base.RandRange(0));
print(" RandRange(0): " + base.RandRange(0));
print(" RandRange(1): " + base.RandRange(1));
print(" RandRange(1): " + base.RandRange(1));
print(" RandRange(1): " + base.RandRange(1));
print(" RandRange(2): " + base.RandRange(2));
print(" RandRange(2): " + base.RandRange(2));
print(" RandRange(2): " + base.RandRange(2));
print(" RandRange(9): " + base.RandRange(9));
print(" RandRange(9): " + base.RandRange(9));
print(" RandRange(9): " + base.RandRange(9));
print(" Chance(1, 2): " + base.Chance(1, 2));
print(" Chance(1, 2): " + base.Chance(1, 2));
print(" Chance(1, 2): " + base.Chance(1, 2));
}
function Regression::Airport()
{
local airport = AIAirport();
local company = AICompany();
print("");
print("--AIAirport--");
print(" IsHangarTile(): " + airport.IsHangarTile(32116));
print(" IsAirportTile(): " + airport.IsAirportTile(32116));
print(" GetHangarOfAirport(): " + airport.GetHangarOfAirport(32116));
for (local i = -1; i < 10; i++) {
print(" AiportAvailable(" + i + "): " + airport.AiportAvailable(i));
}
print(" GetBankBalance(): " + company.GetBankBalance());
print(" BuildAirport(): " + airport.BuildAirport(32116, 0));
print(" IsHangarTile(): " + airport.IsHangarTile(32116));
print(" IsAirportTile(): " + airport.IsAirportTile(32116));
print(" GetHangarOfAirport(): " + airport.GetHangarOfAirport(32116));
print(" IsHangarTile(): " + airport.IsHangarTile(32119));
print(" IsAirportTile(): " + airport.IsAirportTile(32119));
print(" GetBankBalance(): " + company.GetBankBalance());
print(" RemoveAirport(): " + airport.RemoveAirport(32118));
print(" IsHangarTile(): " + airport.IsHangarTile(32119));
print(" IsAirportTile(): " + airport.IsAirportTile(32119));
print(" GetBankBalance(): " + company.GetBankBalance());
print(" BuildAirport(): " + airport.BuildAirport(32116, 0));
}
function Regression::Cargo()
{
local cargo = AICargo();
print("");
print("--AICargo--");
for (local i = -1; i < 15; i++) {
print(" Cargo " + i);
print(" IsValidCargo(): " + cargo.IsValidCargo(i));
print(" GetCargoLabel(): '" + cargo.GetCargoLabel(i)+ "'");
print(" IsFreight(): " + cargo.IsFreight(i));
print(" GetCargoIncome(0, 0): " + cargo.GetCargoIncome(0, 0, i));
print(" GetCargoIncome(10, 10): " + cargo.GetCargoIncome(10, 10, i));
print(" GetCargoIncome(100, 10): " + cargo.GetCargoIncome(100, 10, i));
print(" GetCargoIncome(10, 100): " + cargo.GetCargoIncome(10, 100, i));
}
}
function Regression::Company()
{
local company = AICompany();
print("");
print("--Company--");
/* Test AIXXXMode() in scopes */
{
local test = AITestMode();
print(" SetCompanyName(): " + company.SetCompanyName("Regression"));
print(" SetCompanyName(): " + company.SetCompanyName("Regression"));
{
local exec = AIExecMode();
print(" SetCompanyName(): " + company.SetCompanyName("Regression"));
print(" SetCompanyName(): " + company.SetCompanyName("Regression"));
}
}
print(" GetCompanyName(): " + company.GetCompanyName());
print(" GetPresidentName(): " + company.GetPresidentName());
print(" SetPresidentName(): " + company.SetPresidentName("Regression AI"));
print(" GetPresidentName(): " + company.GetPresidentName());
print(" GetCompanyValue(): " + company.GetCompanyValue());
print(" GetBankBalance(): " + company.GetBankBalance());
print(" GetLoanAmount(): " + company.GetLoanAmount());
print(" GetMaxLoanAmount(): " + company.GetMaxLoanAmount());
print(" GetLoanInterval(): " + company.GetLoanInterval());
print(" SetLoanAmount(1): " + company.SetLoanAmount(1));
print(" SetLoanAmount(100): " + company.SetLoanAmount(100));
print(" SetLoanAmount(10000): " + company.SetLoanAmount(10000));
print(" GetBankBalance(): " + company.GetBankBalance());
print(" GetLoanAmount(): " + company.GetLoanAmount());
print(" SetLoanAmount(10000): " + company.SetLoanAmount(company.GetMaxLoanAmount()));
print(" GetBankBalance(): " + company.GetBankBalance());
print(" GetLoanAmount(): " + company.GetLoanAmount());
}
function Regression::Industry()
{
local industry = AIIndustry();
local j = 0;
print("");
print("--Industry--");
print(" GetMaxIndustryID(): " + industry.GetMaxIndustryID());
print(" GetIndustryCount(): " + industry.GetIndustryCount());
for (local i = -1; i < industry.GetMaxIndustryID() + 1; i++) {
if (industry.IsValidIndustry(i)) j++;
print(" Industry " + i);
print(" IsValidIndustry(): " + industry.IsValidIndustry(i));
print(" GetName(): " + industry.GetName(i));
print(" GetLocation(): " + industry.GetLocation(i));
}
print(" Valid Industries: " + j);
print(" GetIndustryCount(): " + industry.GetIndustryCount());
}
function Regression::IndustryList()
{
local list = AIIndustryList();
print("");
print("--IndustryList--");
print(" Count(): " + list.Count());
list.Valuate(AIIndustryListLocation());
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIIndustryListDistanceManhattanToTile(30000));
print(" DistanceManhattanToTile(30000) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIIndustryListDistanceSquareToTile(30000));
print(" DistanceSquareToTile(30000) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIIndustryListProduction(1));
list.KeepAboveValue(50);
print(" KeepAboveValue(50): done");
print(" Count(): " + list.Count());
print(" Production ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
function Regression::List()
{
local list = AIList();
print("");
print("--List--");
print(" IsEmpty(): " + list.IsEmpty());
list.AddItem(1);
list.AddItem(2);
for (local i = 1000; i < 1100; i++) {
list.AddItem(i);
}
list.RemoveItem(1050);
list.RemoveItem(1150);
print(" Count(): " + list.Count());
print(" HasItem(1050): " + list.HasItem(1050));
print(" HasItem(1051): " + list.HasItem(1051));
print(" IsEmpty(): " + list.IsEmpty());
list.SortByItem(true);
print(" List Dump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIListRandomize());
print(" Randomize ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Clear();
print(" IsEmpty(): " + list.IsEmpty());
}
function Regression::Map()
{
local map = AIMap();
print("");
print("--Map--");
print(" GetMapSize(): " + map.GetMapSize());
print(" GetMapSizeX(): " + map.GetMapSizeX());
print(" GetMapSizeY(): " + map.GetMapSizeY());
print(" GetTileX(123): " + map.GetTileX(123));
print(" GetTileY(123): " + map.GetTileY(123));
print(" GetTileIndex(): " + map.GetTileIndex(123, 0));
print(" GetTileIndex(): " + map.GetTileIndex(0, 123));
print(" GetTileIndex(): " + map.GetTileIndex(0, 0));
print(" GetTileIndex(): " + map.GetTileIndex(-1, -1));
print(" GetTileIndex(): " + map.GetTileIndex(10000, 10000));
print(" IsValidTile(123): " + map.IsValidTile(123));
print(" GetTileX(124): " + map.GetTileX(124));
print(" GetTileY(124): " + map.GetTileY(124));
print(" IsValidTile(124): " + map.IsValidTile(124));
print(" IsValidTile(0): " + map.IsValidTile(0));
print(" IsValidTile(-1): " + map.IsValidTile(-1));
print(" IsValidTile(): " + map.IsValidTile(map.GetMapSize()));
print(" IsValidTile(): " + map.IsValidTile(map.GetMapSize() - 1));
print(" DemolishTile(): " + map.DemolishTile(19592));
print(" DemolishTile(): " + map.DemolishTile(19335));
print(" Distance");
print(" DistanceManhattan(): " + map.DistanceManhattan(1, 10000));
print(" DistanceMax(): " + map.DistanceMax(1, 10000));
print(" DistanceSquare(): " + map.DistanceSquare(1, 10000));
print(" DistanceFromEdge(): " + map.DistanceFromEdge(10000));
}
function Regression::Order()
{
local order = AIOrder();
print("");
print("--Order--");
print(" GetNumberOfOrders(): " + order.GetNumberOfOrders(1024));
print(" GetOrderDestination(): " + order.GetOrderDestination(1024, 1));
print(" AreOrderFlagsValid(): " + order.AreOrderFlagsValid(33416, AIOrder.AIOF_TRANSFER));
print(" IsValidVehicleOrder(): " + order.IsValidVehicleOrder(1024, 1));
print(" GetOrderFlags(): " + order.GetOrderFlags(1024, 1));
print(" AppendOrder(): " + order.AppendOrder(1024, 33416, AIOrder.AIOF_TRANSFER));
print(" InsertOrder(): " + order.InsertOrder(1024, 0, 33416, AIOrder.AIOF_TRANSFER));
print(" GetNumberOfOrders(): " + order.GetNumberOfOrders(1024));
print(" IsValidVehicleOrder(): " + order.IsValidVehicleOrder(1024, 1));
print(" RemoveOrder(): " + order.RemoveOrder(1024, 0));
print(" ChangeOrder(): " + order.ChangeOrder(1024, 0, AIOrder.AIOF_FULL_LOAD));
print(" GetOrderDestination(): " + order.GetOrderDestination(1024, 0));
print(" CopyOrders(): " + order.CopyOrders(1025, 1));
print(" CopyOrders(): " + order.CopyOrders(1025, 1024));
print(" ShareOrders(): " + order.ShareOrders(1025, 1));
print(" ShareOrders(): " + order.ShareOrders(1025, 1024));
print(" UnshareOrders(): " + order.UnshareOrders(1025));
print(" AppendOrder(): " + order.AppendOrder(1024, 33421, AIOrder.AIOF_NONE));
local list = AIVehicleStationList(1024);
print("");
print("--VehicleStationList--");
print(" Count(): " + list.Count());
list.Valuate(AIStationListLocation());
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStationListCargoWaiting(0));
print(" CargoWaiting(0) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStationListCargoWaiting(1));
print(" CargoWaiting(1) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStationListCargoRating(1));
print(" CargoRating(1) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStationListDistanceManhattanToTile(30000));
print(" DistanceManhattanToTile(30000) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStationListDistanceSquareToTile(30000));
print(" DistanceSquareToTile(30000) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list = AIStationVehicleList(1);
print("");
print("--StationVehicleList--");
print(" Count(): " + list.Count());
list.Valuate(AIVehicleListLocation());
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
function Regression::PathFinder()
{
local pf = AIPathFinderStupid(AIPathFinder.PATHFINDER_ROAD);
local start = AITileList();
local end = AITileList();
start.AddTile(33421);
end.AddTile(33480 + 256 * 10);
print("");
print("--PathFinderStupid--");
local ret = pf.FindRoute(start, end);
print(" FindRoute(): " + (ret ? "Route Array" : "Nil"));
print(" BuildRoute(): " + pf.BuildRoute(ret));
pf.FreeRoute(ret);
local road = AIRoad();
print(" IsRoadTile(): " + road.IsRoadTile(33425));
print(" IsRoadTile(): " + road.IsRoadTile(33480 + 256 * 5));
}
function Regression::Road()
{
local road = AIRoad();
print("");
print("--Road--");
print(" Road");
print(" IsRoadTile(): " + road.IsRoadTile(33411));
print(" BuildRoad(): " + road.BuildRoad(0, 1));
print(" BuildRoad(): " + road.BuildRoad(33411, 33411));
print(" BuildRoad(): " + road.BuildRoad(33411, 33414));
print(" AreRoadTilesConnected(): " + road.AreRoadTilesConnected(33412, 33413));
print(" IsRoadTile(): " + road.IsRoadTile(33411));
print(" GetNeighbourRoadCount(): " + road.GetNeighbourRoadCount(33412));
print(" RemoveRoad(): " + road.RemoveRoad(33411, 33411));
print(" RemoveRoad(): " + road.RemoveRoad(33411, 33412));
print(" RemoveRoad(): " + road.RemoveRoad(19590, 19590));
print(" Depot");
print(" IsRoadTile(): " + road.IsRoadTile(33411));
print(" BuildRoadDepot(): " + road.BuildRoadDepot(0, 1));
print(" BuildRoadDepot(): " + road.BuildRoadDepot(33411, 33411));
print(" BuildRoadDepot(): " + road.BuildRoadDepot(33411, 33414));
print(" BuildRoadDepot(): " + road.BuildRoadDepot(33411, 33412));
print(" IsRoadTile(): " + road.IsRoadTile(33411));
print(" GetRoadDepotFrontTile(): " + road.GetRoadDepotFrontTile(33411));
print(" IsRoadDepotTile(): " + road.IsRoadDepotTile(33411));
print(" RemoveRoadDepot(): " + road.RemoveRoadDepot(33411));
print(" RemoveRoadDepot(): " + road.RemoveRoadDepot(33411));
print(" Station");
print(" IsRoadTile(): " + road.IsRoadTile(33411));
print(" BuildRoadStation(): " + road.BuildRoadStation(0, 1, false, false));
print(" BuildRoadStation(): " + road.BuildRoadStation(33411, 33411, false, false));
print(" BuildRoadStation(): " + road.BuildRoadStation(33411, 33414, false, false));
print(" BuildRoadStation(): " + road.BuildRoadStation(33411, 33412, false, false));
print(" IsRoadTile(): " + road.IsRoadTile(33411));
print(" GetDriveThroughBackTile(): " + road.GetDriveThroughBackTile(33411));
print(" GetRoadStationFrontTile(): " + road.GetRoadStationFrontTile(33411));
print(" IsRoadStationTile(): " + road.IsRoadStationTile(33411));
print(" IsDriveThroughRoadStationTile: " + road.IsDriveThroughRoadStationTile(33411));
print(" RemoveRoadStation(): " + road.RemoveRoadStation(33411));
print(" RemoveRoadStation(): " + road.RemoveRoadStation(33411));
print(" Station Types");
print(" BuildRoadStation(bus): " + road.BuildRoadStation(33411, 33410, false, false));
print(" BuildRoadStation(truck): " + road.BuildRoadStation(33421, 33422, true, false));
print(" BuildRoadStation(truck): " + road.BuildRoadStation(33412, 33413, true, false));
print(" BuildRoadStation(bus): " + road.BuildRoadStation(33411 + 256, 33411, false, false));
print(" BuildRoadStation(truck): " + road.BuildRoadStation(33412 + 256, 33412 + 256 + 256, true, false));
print(" BuildRoadStation(bus-drive): " + road.BuildRoadStation(33413, 33412, false, true));
print(" BuildRoadStation(truck-drive): " + road.BuildRoadStation(33414, 33413, true, true));
print(" BuildRoadStation(bus-drive): " + road.BuildRoadStation(33415, 33414, false, true));
print(" BuildRoadStation(truck-drive): " + road.BuildRoadStation(33416, 33415, true, true));
print(" BuildRoadDepot(): " + road.BuildRoadDepot(33417, 33418));
print(" GetRoadStationFrontTile(): " + road.GetRoadStationFrontTile(33411 + 256));
print(" GetRoadStationFrontTile(): " + road.GetRoadStationFrontTile(33412 + 256));
print(" IsDriveThroughRoadStationTile: " + road.IsDriveThroughRoadStationTile(33415));
print(" GetDriveThroughBackTile(): " + road.GetDriveThroughBackTile(33415));
print(" GetRoadStationFrontTile(): " + road.GetRoadStationFrontTile(33415));
print(" IsRoadTile(): " + road.IsRoadTile(33415));
}
function Regression::Sign()
{
local sign = AISign();
local j = 0;
print("");
print("--Sign--");
print(" BuildSign(33410, 'Some Sign'): " + sign.BuildSign(33410, "Some Sign"));
local sign_id = sign.BuildSign(33409, "Some other Sign");
print(" BuildSign(33409, 'Some other Sign'): " + sign_id);
print(" RemoveSign(" + sign_id + "): " + sign.RemoveSign(sign_id));
print("");
print(" GetMaxSignID(): " + sign.GetMaxSignID());
print(" GetSignCount(): " + sign.GetSignCount());
for (local i = -1; i < sign.GetMaxSignID() + 1; i++) {
if (sign.IsValidSign(i)) j++;
print(" Sign " + i);
print(" IsValidSign(): " + sign.IsValidSign(i));
print(" GetText(): " + sign.GetText(i));
print(" GetLocation(): " + sign.GetLocation(i));
}
print(" Valid Signs: " + j);
print(" GetSignCount(): " + sign.GetSignCount());
}
function Regression::Station()
{
local station = AIStation();
print("");
print("--Station--");
print(" IsValidStation(0): " + station.IsValidStation(0));
print(" IsValidStation(1000): " + station.IsValidStation(1000));
print(" GetLocation(1): " + station.GetLocation(1));
print(" GetLocation(1000): " + station.GetLocation(1000));
print(" GetCargoWaiting(0, 0): " + station.GetCargoWaiting(0, 0));
print(" GetCargoWaiting(1000, 0): " + station.GetCargoWaiting(1000, 0));
print(" GetCargoWaiting(0, 1000): " + station.GetCargoWaiting(0, 1000));
local list = AIStationList(AIStationList.STATION_BUS_STOP + AIStationList.STATION_TRUCK_STOP);
print("");
print("--StationList--");
print(" Count(): " + list.Count());
list.Valuate(AIStationListLocation());
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStationListCargoWaiting(0));
print(" CargoWaiting(0) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIStationListCargoWaiting(1));
print(" CargoWaiting(1) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
function Regression::TileList()
{
local list = AITileList();
print("");
print("--TileList--");
print(" Count(): " + list.Count());
list.AddRectangle(41895 - 256 * 2, 256 * 2 + 41895 + 8);
print(" Count(): " + list.Count());
list.Valuate(AITileListSlope());
list.KeepValue(0);
print(" Slope(): done");
print(" KeepValue(0): done");
print(" Count(): " + list.Count());
print(" ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AITileListBuildable());
list.KeepValue(1);
print(" Buildable(): done");
print(" KeepValue(1): done");
print(" Count(): " + list.Count());
list.Valuate(AITileListBuildableRectangle(3, 3));
print(" BuildableRectangle(3, 3) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AITileListDistanceManhattanToTile(30000));
print(" DistanceManhattanToTile(30000) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AITileListDistanceSquareToTile(30000));
print(" DistanceSquareToTile(30000) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AITileListCargoAcceptance(0, 1, 1, 3));
list.KeepAboveValue(10);
print(" CargoAcceptance(): done");
print(" KeepAboveValue(10): done");
print(" Count(): " + list.Count());
print(" ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AITileListRoadTile());
list.KeepValue(1);
print(" RoadTile(): done");
print(" KeepValue(1): done");
print(" Count(): " + list.Count());
print(" ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AITileListNeighbourRoadCount());
list.KeepValue(1);
print(" NeighbourRoadCount():done");
print(" KeepValue(1): done");
print(" Count(): " + list.Count());
print(" ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
function Regression::Town()
{
local town = AITown();
local j = 0;
print("");
print("--Town--");
print(" GetMaxTownID(): " + town.GetMaxTownID());
print(" GetTownCount(): " + town.GetTownCount());
for (local i = -1; i < town.GetMaxTownID() + 1; i++) {
if (town.IsValidTown(i)) j++;
print(" Town " + i);
print(" IsValidTown(): " + town.IsValidTown(i));
print(" GetName(): " + town.GetName(i));
print(" GetPopulation(): " + town.GetPopulation(i));
print(" GetLocation(): " + town.GetLocation(i));
}
print(" Valid Towns: " + j);
print(" GetTownCount(): " + town.GetTownCount());
}
function Regression::TownList()
{
local list = AITownList();
print("");
print("--TownList--");
print(" Count(): " + list.Count());
list.Valuate(AITownListLocation());
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AITownListDistanceManhattanToTile(30000));
print(" DistanceManhattanToTile(30000) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AITownListDistanceSquareToTile(30000));
print(" DistanceSquareToTile(30000) ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AITownListPopulation());
list.KeepAboveValue(500);
print(" KeepAboveValue(500): done");
print(" Count(): " + list.Count());
print(" Population ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
function Regression::Vehicle()
{
local accounting = AIAccounting();
local company = AICompany();
local vehicle = AIVehicle();
local j = 0;
print("");
print("--Vehicle--");
for (local i = -1; i < 257; i++) {
if (vehicle.IsValidEngine(i)) j++;
print(" Engine " + i);
print(" IsValidEngine(): " + vehicle.IsValidEngine(i));
}
print(" Valid Engines: " + j);
print(" IsValidVehicle(-1): " + vehicle.IsValidVehicle(-1));
print(" IsValidVehicle(0): " + vehicle.IsValidVehicle(0));
print(" IsValidVehicle(1024): " + vehicle.IsValidVehicle(1024));
print(" ISValidVehicle(9999): " + vehicle.IsValidVehicle(9999));
for (local i = -1; i < 15; i++) {
print(" FindBestRoadVehicle Cargo " + i);
print(" Reliability 0: " + vehicle.FindBestRoadVehicle(i, 0));
print(" Reliability 50: " + vehicle.FindBestRoadVehicle(i, 50));
print(" Reliability 100: " + vehicle.FindBestRoadVehicle(i, 100));
}
for (local i = -1; i < 15; i++) {
print(" FindBestAircraftVehicle Cargo " + i);
print(" Reliability 0: " + vehicle.FindBestAircraftVehicle(i, 0));
print(" Reliability 50: " + vehicle.FindBestAircraftVehicle(i, 50));
print(" Reliability 100: " + vehicle.FindBestAircraftVehicle(i, 100));
}
local bank = company.GetBankBalance();
{
local transaction = AITransactionMode();
print(" BuildVehicle(): " + vehicle.BuildVehicle(33417, 153));
print(" IsValidVehicle(1024): " + vehicle.IsValidVehicle(1024));
print(" --Transaction--");
print(" GetCosts(): " + transaction.GetCosts());
print(" Execute(): " + transaction.Execute());
print(" IsValidVehicle(1024): " + vehicle.IsValidVehicle(1024));
}
print(" CloneVehicle(): " + vehicle.CloneVehicle(33417, 1024, true));
local bank_after = company.GetBankBalance();
print(" --Accounting--");
print(" GetCosts(): " + accounting.GetCosts());
print(" Should be: " + (bank - bank_after));
print(" ResetCosts(): " + accounting.ResetCosts());
bank = company.GetBankBalance();
print(" SellVehicle(1025): " + vehicle.SellVehicle(1025));
print(" StartStopVehicle(): " + vehicle.StartStopVehicle(1024));
print(" SendVehicleToDepot(): " + vehicle.SendVehicleToDepot(1024));
bank_after = company.GetBankBalance();
print(" --Accounting--");
print(" GetCosts(): " + accounting.GetCosts());
print(" Should be: " + (bank - bank_after));
print(" CloneVehicle(): " + vehicle.CloneVehicle(33417, 1024, true));
print(" --VehicleData--");
print(" GetLocation(): " + vehicle.GetLocation(1024));
print(" GetEngineType(): " + vehicle.GetEngineType(1024));
print(" GetUnitNumber(): " + vehicle.GetUnitNumber(1024));
print(" GetAge(): " + vehicle.GetAge(1024));
print(" GetMaxAge(): " + vehicle.GetMaxAge(1024));
print(" GetAgeLeft(): " + vehicle.GetAgeLeft(1024));
print(" GetProfitThisYear(): " + vehicle.GetProfitThisYear(1024));
print(" GetProfitLastYear(): " + vehicle.GetProfitLastYear(1024));
print(" BuildVehicle(): " + vehicle.BuildVehicle(32119, 219));
print(" IsValidVehicle(1026): " + vehicle.IsValidVehicle(1026));
local list = AIVehicleList();
print("");
print("--VehicleList--");
print(" Count(): " + list.Count());
list.Valuate(AIVehicleListLocation());
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIVehicleListEngineType());
print(" EngineType ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIVehicleListUnitNumber());
print(" UnitNumber ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIVehicleListAge());
print(" Age ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIVehicleListMaxAge());
print(" MaxAge ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIVehicleListAgeLeft());
print(" AgeLeft ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIVehicleListProfitThisYear());
print(" ProfitThisYear ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIVehicleListProfitLastYear());
print(" ProfitLastYear ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
}
function Regression::Start()
{
this.TestInit();
this.Std();
this.Base();
this.Airport();
this.Cargo();
this.Company();
this.Industry();
this.IndustryList();
this.Map();
this.List();
this.PathFinder();
this.Road();
this.Sign();
this.Station();
this.TileList();
this.Town();
this.TownList();
this.Vehicle();
/* Order has to be after Vehicle */
this.Order();
}
function Regression::Stop()
{
this.stop = true;
}
class FRegression extends AIFactory {
function GetAuthor() { return "OpenTTD Dev Team"; }
function GetName() { return "Regression"; }
function GetDescription() { return "This runs regression-tests on all commands. On the same map the result should always be the same."; }
function GetVersion() { return 1; }
function GetDate() { return "2007-03-18"; }
function CreateInstance() { return "Regression"; }
}
/* Only enable this if you want to run the regression test.
* The best way to do it is to disable all other AIs, so you are sure thisone
* kicks in, and use a pre-made savegame of which you already know the result.
* You can compare the output from this AI with the pre-made one, and it should
* match. If not, something went wrong. */
iFRegression <-FRegression();