(svn r11289) [NoAI] -Add [FS#1346]: added AIVehicle::Is(Stopped)InDepot() (dihedral)
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(" GetAirportWidth(" + i + "): " + airport.GetAirportWidth(i));
print(" GetAirportHeight(" + i + "): " + airport.GetAirportHeight(i));
print(" GetAirportCoverageRadius(" + i + "): " + airport.GetAirportCoverageRadius(i));
}
print(" GetBankBalance(): " + company.GetBankBalance(AICompany.MY_COMPANY));
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(AICompany.MY_COMPANY));
print(" RemoveAirport(): " + airport.RemoveAirport(32118));
print(" IsHangarTile(): " + airport.IsHangarTile(32119));
print(" IsAirportTile(): " + airport.IsAirportTile(32119));
print(" GetBankBalance(): " + company.GetBankBalance(AICompany.MY_COMPANY));
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(AICompany.MY_COMPANY));
print(" GetPresidentName(): " + company.GetPresidentName(AICompany.MY_COMPANY));
print(" SetPresidentName(): " + company.SetPresidentName("Regression AI"));
print(" GetPresidentName(): " + company.GetPresidentName(AICompany.MY_COMPANY));
print(" GetCompanyValue(): " + company.GetCompanyValue(AICompany.MY_COMPANY));
print(" GetBankBalance(): " + company.GetBankBalance(AICompany.MY_COMPANY));
print(" GetCompanyName(): " + company.GetCompanyName(240));
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(AICompany.MY_COMPANY));
print(" GetLoanAmount(): " + company.GetLoanAmount());
print(" SetMinimumLoanAmount(31337): " + company.SetMinimumLoanAmount(31337));
print(" GetBankBalance(): " + company.GetBankBalance(AICompany.MY_COMPANY));
print(" GetLoanAmount(): " + company.GetLoanAmount());
print(" SetLoanAmount(10000): " + company.SetLoanAmount(company.GetMaxLoanAmount()));
print(" GetBankBalance(): " + company.GetBankBalance(AICompany.MY_COMPANY));
print(" GetLoanAmount(): " + company.GetLoanAmount());
}
function Regression::Event()
{
print("");
print("--Event--");
AIEventController.Test();
local e = AIEventController.GetNextEvent();
print(" GetNextEvent: " + (e == null ? "null" : "instance"));
print(" GetEventType: " + e.GetEventType());
local c = AIEventTest.Convert(e);
print(" Convert: " + (c == null ? "null" : "instance"));
print(" GetTest: " + c.GetTest());
print(" DisableEvent(1): done");
AIEventController.DisableEvent(1);
AIEventController.Test();
e = AIEventController.GetNextEvent();
print(" GetNextEvent: " + (e == null ? "null" : "instance"));
print(" EnableEvent(1): done");
AIEventController.EnableEvent(1);
AIEventController.Test();
e = AIEventController.GetNextEvent();
print(" GetNextEvent: " + (e == null ? "null" : "instance"));
{
print(" DisableAllEvents():done");
AIEventController.DisableAllEvents();
AIEventController.Test();
e = AIEventController.GetNextEvent();
print(" GetNextEvent: " + (e == null ? "null" : "instance"));
}
print(" EnableEvent(1): done");
AIEventController.EnableEvent(1);
AIEventController.Test();
e = AIEventController.GetNextEvent();
print(" GetNextEvent: " + (e == null ? "null" : "instance"));
e = AIEventController.GetNextEvent();
print(" GetNextEvent: " + (e == null ? "null" : "instance"));
}
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, 1);
list.AddItem(2, 2);
for (local i = 1000; i < 1100; i++) {
list.AddItem(i, i);
}
list.RemoveItem(1050);
list.RemoveItem(1150);
list.ChangeItem(1051, 12);
print(" Count(): " + list.Count());
print(" HasItem(1050): " + list.HasItem(1050));
print(" HasItem(1051): " + list.HasItem(1051));
print(" IsEmpty(): " + list.IsEmpty());
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
print(" List Dump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(AIListRandomize());
print(" Randomize ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.KeepTop(10);
print(" KeepTop(10):");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.KeepBottom(8);
print(" KeepBottom(8):");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.RemoveBottom(2);
print(" RemoveBottom(2):");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.RemoveTop(2);
print(" RemoveTop(2):");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
local list2 = AIList();
list2.AddItem(1003, 0);
list2.AddItem(1004, 0);
list.RemoveList(list2);
print(" RemoveList({1003, 1004}):");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list2.AddItem(1005, 0);
list.KeepList(list2);
print(" KeepList({1003, 1004, 1005}):");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
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::Marine()
{
local marine = AIMarine();
local company = AICompany();
print("");
print("--AIMarine--");
print(" IsWaterDepotTile(): " + marine.IsWaterDepotTile(32116));
print(" IsDockTile(): " + marine.IsDockTile(32116));
print(" IsBuoyTile(): " + marine.IsBuoyTile(32116));
print(" IsLockTile(): " + marine.IsLockTile(32116));
print(" IsCanalTile(): " + marine.IsCanalTile(32116));
print(" GetBankBalance(): " + company.GetBankBalance(AICompany.MY_COMPANY));
print(" BuildWaterDepot(): " + marine.BuildWaterDepot(28479, false));
print(" BuildDock(): " + marine.BuildDock(29253));
print(" BuildBuoy(): " + marine.BuildBuoy(28481));
print(" BuildLock(): " + marine.BuildLock(28487));
print(" BuildCanal(): " + marine.BuildCanal(32127));
print(" IsWaterDepotTile(): " + marine.IsWaterDepotTile(28479));
print(" IsDockTile(): " + marine.IsDockTile(29253));
print(" IsBuoyTile(): " + marine.IsBuoyTile(28481));
print(" IsLockTile(): " + marine.IsLockTile(28487));
print(" IsCanalTile(): " + marine.IsCanalTile(32127));
print(" GetBankBalance(): " + company.GetBankBalance(AICompany.MY_COMPANY));
print(" RemoveWaterDepot(): " + marine.RemoveWaterDepot(28479));
print(" RemoveDock(): " + marine.RemoveDock(29253));
print(" RemoveBuoy(): " + marine.RemoveBuoy(28481));
print(" RemoveLock(): " + marine.RemoveLock(28487));
print(" RemoveCanal(): " + marine.RemoveCanal(32127));
print(" IsWaterDepotTile(): " + marine.IsWaterDepotTile(28479));
print(" IsDockTile(): " + marine.IsDockTile(29253));
print(" IsBuoyTile(): " + marine.IsBuoyTile(28481));
print(" IsLockTile(): " + marine.IsLockTile(28487));
print(" IsCanalTile(): " + marine.IsCanalTile(32127));
print(" GetBankBalance(): " + company.GetBankBalance(AICompany.MY_COMPANY));
print(" BuildWaterDepot(): " + marine.BuildWaterDepot(28479, false));
print(" BuildDock(): " + marine.BuildDock(29253));
}
function Regression::Order()
{
local order = AIOrder();
print("");
print("--Order--");
print(" GetNumberOfOrders(): " + order.GetNumberOfOrders(11));
print(" GetOrderDestination(): " + order.GetOrderDestination(11, 1));
print(" AreOrderFlagsValid(): " + order.AreOrderFlagsValid(33416, AIOrder.AIOF_TRANSFER));
print(" IsValidVehicleOrder(): " + order.IsValidVehicleOrder(11, 1));
print(" GetOrderFlags(): " + order.GetOrderFlags(11, 1));
print(" AppendOrder(): " + order.AppendOrder(11, 33416, AIOrder.AIOF_TRANSFER));
print(" InsertOrder(): " + order.InsertOrder(11, 0, 33416, AIOrder.AIOF_TRANSFER));
print(" GetNumberOfOrders(): " + order.GetNumberOfOrders(11));
print(" IsValidVehicleOrder(): " + order.IsValidVehicleOrder(11, 1));
print(" RemoveOrder(): " + order.RemoveOrder(11, 0));
print(" ChangeOrder(): " + order.ChangeOrder(11, 0, AIOrder.AIOF_FULL_LOAD));
print(" GetOrderDestination(): " + order.GetOrderDestination(11, 0));
print(" CopyOrders(): " + order.CopyOrders(11, 1));
print(" CopyOrders(): " + order.CopyOrders(12, 11));
print(" ShareOrders(): " + order.ShareOrders(12, 1));
print(" ShareOrders(): " + order.ShareOrders(12, 11));
print(" UnshareOrders(): " + order.UnshareOrders(12));
print(" AppendOrder(): " + order.AppendOrder(11, 33421, AIOrder.AIOF_NONE));
local list = AIVehicleStationList(11);
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(3);
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(" GetName(0): " + station.GetName(0));
print(" GetLocation(1): " + station.GetLocation(1));
print(" GetLocation(1000): " + station.GetLocation(1000));
print(" GetStationID(33411): " + station.GetStationID(33411));
print(" GetStationID(34411): " + station.GetStationID(34411));
print(" GetCargoWaiting(0, 0): " + station.GetCargoWaiting(0, 0));
print(" GetCargoWaiting(1000, 0): " + station.GetCargoWaiting(1000, 0));
print(" GetCargoWaiting(0, 1000): " + station.GetCargoWaiting(0, 1000));
print(" GetCoverageRadius(bus): " + station.GetCoverageRadius(AIStation.STATION_BUS_STOP));
print(" GetCoverageRadius(truck): " + station.GetCoverageRadius(AIStation.STATION_TRUCK_STOP));
print(" GetCoverageRadius(train): " + station.GetCoverageRadius(AIStation.STATION_TRAIN));
local list = AIStationList(AIStation.STATION_BUS_STOP + AIStation.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(AITileListHeight());
print(" Height(): done");
print(" Count(): " + list.Count());
print(" ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i + " => " + list.GetValue(i));
}
list.Valuate(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));
}
list.AddRectangle(54421 - 256 * 2, 256 * 2 + 54421 + 8);
list.Valuate(AITileListWater());
print(" Water(): 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(11): " + vehicle.IsValidVehicle(11));
print(" ISValidVehicle(9999): " + vehicle.IsValidVehicle(9999));
for (local i = -1; i < 15; i++) {
print(" FindBestRoadVehicle Cargo " + i);
print(" Cost 0: " + vehicle.FindBestRoadVehicle(i, 0, 0));
print(" Cost 10000: " + vehicle.FindBestRoadVehicle(i, 0, 10000));
print(" Cost 50000: " + vehicle.FindBestRoadVehicle(i, 0, 50000));
print(" Reliability 0: " + vehicle.FindBestRoadVehicle(i, 0, 1000000));
print(" Reliability 50: " + vehicle.FindBestRoadVehicle(i, 50, 1000000));
print(" Reliability 100: " + vehicle.FindBestRoadVehicle(i, 100, 1000000));
}
for (local i = -1; i < 15; i++) {
print(" FindBestAirVehicle Cargo " + i);
print(" Reliability 0: " + vehicle.FindBestAirVehicle(i, 0, 1000000));
print(" Reliability 50: " + vehicle.FindBestAirVehicle(i, 50, 1000000));
print(" Reliability 100: " + vehicle.FindBestAirVehicle(i, 100, 1000000));
}
for (local i = -1; i < 15; i++) {
print(" FindBestWaterVehicle Cargo " + i);
print(" Reliability 0: " + vehicle.FindBestWaterVehicle(i, 0, 1000000));
print(" Reliability 50: " + vehicle.FindBestWaterVehicle(i, 50, 1000000));
print(" Reliability 100: " + vehicle.FindBestWaterVehicle(i, 100, 1000000));
}
local bank = company.GetBankBalance(AICompany.MY_COMPANY);
{
local transaction = AITransactionMode();
print(" BuildVehicle(): " + vehicle.BuildVehicle(33417, 153));
print(" IsValidVehicle(11): " + vehicle.IsValidVehicle(11));
print(" --Transaction--");
print(" GetCosts(): " + transaction.GetCosts());
print(" Execute(): " + transaction.Execute());
print(" IsValidVehicle(11): " + vehicle.IsValidVehicle(11));
}
print(" CloneVehicle(): " + vehicle.CloneVehicle(33417, 11, true));
local bank_after = company.GetBankBalance(AICompany.MY_COMPANY);
print(" --Accounting--");
print(" GetCosts(): " + accounting.GetCosts());
print(" Should be: " + (bank - bank_after));
print(" ResetCosts(): " + accounting.ResetCosts());
bank = company.GetBankBalance(AICompany.MY_COMPANY);
print(" SellVehicle(12): " + vehicle.SellVehicle(12));
print(" IsInDepot(): " + vehicle.IsInDepot(11));
print(" IsStoppedInDepot(): " + vehicle.IsStoppedInDepot(11));
print(" StartStopVehicle(): " + vehicle.StartStopVehicle(11));
print(" IsInDepot(): " + vehicle.IsInDepot(11));
print(" IsStoppedInDepot(): " + vehicle.IsStoppedInDepot(11));
print(" SendVehicleToDepot(): " + vehicle.SendVehicleToDepot(11));
print(" IsInDepot(): " + vehicle.IsInDepot(11));
print(" IsStoppedInDepot(): " + vehicle.IsStoppedInDepot(11));
bank_after = company.GetBankBalance(AICompany.MY_COMPANY);
print(" --Accounting--");
print(" GetCosts(): " + accounting.GetCosts());
print(" Should be: " + (bank - bank_after));
print(" GetName(): " + vehicle.GetName(11));
print(" SetName(): " + vehicle.SetName(11, "MyVehicleName"));
print(" GetName(): " + vehicle.GetName(11));
print(" CloneVehicle(): " + vehicle.CloneVehicle(33417, 11, true));
print(" --VehicleData--");
print(" GetLocation(): " + vehicle.GetLocation(11));
print(" GetEngineType(): " + vehicle.GetEngineType(11));
print(" GetUnitNumber(): " + vehicle.GetUnitNumber(11));
print(" GetAge(): " + vehicle.GetAge(11));
print(" GetMaxAge(): " + vehicle.GetMaxAge(11));
print(" GetAgeLeft(): " + vehicle.GetAgeLeft(11));
print(" GetProfitThisYear(): " + vehicle.GetProfitThisYear(11));
print(" GetProfitLastYear(): " + vehicle.GetProfitLastYear(11));
print(" GetVehicleType(): " + vehicle.GetVehicleType(11));
print(" IsInDepot(): " + vehicle.IsInDepot(11));
print(" IsStoppedInDepot(): " + vehicle.IsStoppedInDepot(11));
print(" BuildVehicle(): " + vehicle.BuildVehicle(32119, 219));
print(" IsValidVehicle(13): " + vehicle.IsValidVehicle(13));
print(" IsInDepot(13): " + vehicle.IsInDepot(13));
print(" IsStoppedInDepot(13): " + vehicle.IsStoppedInDepot(13));
print(" IsValidVehicle(14): " + vehicle.IsValidVehicle(14));
print(" IsInDepot(14): " + vehicle.IsInDepot(14));
print(" IsStoppedInDepot(14): " + vehicle.IsStoppedInDepot(14));
print(" BuildVehicle(): " + vehicle.BuildVehicle(28479, 204));
print(" IsValidVehicle(15): " + vehicle.IsValidVehicle(15));
print(" IsInDepot(15): " + vehicle.IsInDepot(15));
print(" IsStoppedInDepot(15): " + vehicle.IsStoppedInDepot(15));
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));
}
list.Valuate(AIVehicleListVehicleType());
print(" VehicleType 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.List();
this.Airport();
this.Cargo();
this.Company();
this.Event();
this.Industry();
this.IndustryList();
this.Map();
this.Marine();
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();