Loading

Revision differences

Old revision #pizkc23g9New revision #pkii1nhhh
1/* Original code */  1class MoneyTest {
2(…)  2    function DoMoneyTest() {
3//    local price = AIEngine.GetPrice(engine);  3        local price = GetPrice();
4//    if (HasMoney(price)) GetMoney(price);  4        if (WrightAI.HasMoney(price)) {
5//    local vehicle = AIVehicle.BuildVehicle(best_hangar, engine);  5            WrightAI.GetMoney(price);
6//    RepayLoan();  6        }
7//    if (!AIVehicle.IsValidVehicle(vehicle)) {  7        if (DoBuild()) {
8//        if (!silent_mode) AILog.Error("Couldn't build the aircraft");  8            WrightAI.RepayLoan();
9//        return -1;  9            return true;
10//    }  10        }
11(…)  11        WrightAI.RepayLoan();
   12        return false;
   13    }
   14}
12  15  
  16class TestBuildAirport extends MoneyTest {  
  17    loc = null;  
  18    tp = null;  
  19    id = null;  
13  20  
14/* Modified code */  21    function DoBuild() {
15class BuildVehicleMoneyTest {  22        return AIExecMode() && AIAirport.BuildAirport(loc, tp, id);
16    function DoMoneyTest(engine) {  23    }
17        local price = AIEngine.GetPrice(engine);  24   
18        if (WrightAI.HasMoney(price)) WrightAI.GetMoney(price);  25    function GetPrice() {
19        local vehicle = DoBuildVehicle();  26        local last_cost = AIAccounting();
20        WrightAI.RepayLoan();  27        AITestMode() && AIAirport.BuildAirport(loc, tp, id);
21        if (!AIVehicle.IsValidVehicle(vehicle)) {  28        return last_cost.GetCosts();
22//            if (!silent_mode) AILog.Error("Couldn't build the aircraft");  29    }
23            return null;  30   
24        }  31    function TryBuild(location, type, theid) {
25        return vehicle;  32        loc = location;
   33        tp = type;
   34        id = theid;
   35        if (DoMoneyTest()) {
   36            return true;
   37        } else {
   38            assert(AIError.GetLastError() != AIError.ERR_STATION_TOO_SPREAD_OUT);
   39            return false;
   40        }
26    }  41    }  
27}  42}  
28  43  
29class TestBuildVehicle extends BuildVehicleMoneyTest {  29class TestBuildVehicle extends MoneyTest {
30    h = null;  45    h = null;  
31    e = null;  46    e = null;  
  47    v = null;  
32     48     
33    function DoBuildVehicle() {  49    function DoBuild() {
34        return AIVehicle.BuildVehicle(h, e);  50        v = AIVehicle.BuildVehicle(h, e);
   51        if (!AIVehicle.IsValidVehicle(v)) {
   52            return false;
   53        }
   54        return true;
   55    }
   56   
   57    function GetPrice() {
   58        return AIEngine.GetPrice(e);
35    }  59    }  
36     60     
37    function TryBuild(best_hangar, engine) {  61    function TryBuild(best_hangar, engine) {  
38        h = best_hangar;  62        h = best_hangar;  
39        e = engine;  63        e = engine;  
40        return DoMoneyTest(e);  64        if (DoMoneyTest()) {
   65            return v;
   66        }
   67        return null;
41    }  68    }  
42}  42}
43    
44/* Somewhere else */    
45(…)    
46    local tvb = TestBuildVehicle();    
47    local vehicle = tvb.TryBuild(best_hangar, engine);    
48    if (vehicle == null) {    
49        if (!silent_mode) AILog.Error("Couldn't build the aircraft");    
50        return -1;    
51    }    
52(…)