author | truelight |
Tue, 24 Jul 2007 20:50:49 +0000 | |
branch | noai |
changeset 9689 | f31ff36ca54c |
parent 9684 | 623970482fb2 |
child 9690 | ac2ee072cebf |
permissions | -rw-r--r-- |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
1 |
/* $Id$ */ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
2 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
3 |
/** @file ai_vehicle.cpp handles the functions of the AIVehicle class */ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
4 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
5 |
#include "ai_vehicle.hpp" |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
6 |
#include "ai_cargo.hpp" |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
7 |
#include "../../command.h" |
9624 | 8 |
#include "../../vehicle.h" |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
9 |
#include "../../depot.h" |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
10 |
#include "../../engine.h" |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
11 |
#include "../../player.h" |
9662
67a558a1aeb8
(svn r10574) [NoAI] -Fix: make a better BestVehicle detection for aircrafts
truelight
parents:
9654
diff
changeset
|
12 |
#include "../../aircraft.h" |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
13 |
|
9497
f6678533ccba
(svn r9369) [NoAI] -Codechange: make some IsValidXXX() function static, so they can be used by the other classes without the need for an instance.
rubidium
parents:
9496
diff
changeset
|
14 |
/* static */ bool AIVehicle::IsValidEngine(EngineID engine_id) |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
15 |
{ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
16 |
return ::IsEngineIndex(engine_id); // TODO: implement 'can I build this engine check' |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
17 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
18 |
|
9497
f6678533ccba
(svn r9369) [NoAI] -Codechange: make some IsValidXXX() function static, so they can be used by the other classes without the need for an instance.
rubidium
parents:
9496
diff
changeset
|
19 |
/* static */ bool AIVehicle::IsValidVehicle(VehicleID vehicle_id) |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
20 |
{ |
9689
f31ff36ca54c
(svn r10677) [NoAI] -Fix: shadows aren't valid vehicles, so don't return true on them
truelight
parents:
9684
diff
changeset
|
21 |
return ::IsValidVehicleID(vehicle_id) && ::GetVehicle(vehicle_id)->owner == _current_player && (GetVehicle(vehicle_id)->vehstatus & VS_SHADOW) == 0; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
22 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
23 |
|
9684
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
24 |
EngineID AIVehicle::FindBestVehicle(CargoID cargo, uint8 min_reliability, AIVehicle::VehicleType veh_type, uint max_cost) |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
25 |
{ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
26 |
if (!AICargo::IsValidCargo(cargo) || min_reliability > 100) return INVALID_ENGINE; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
27 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
28 |
EngineID best_engine = INVALID_ENGINE; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
29 |
EngineID engine_id; |
9662
67a558a1aeb8
(svn r10574) [NoAI] -Fix: make a better BestVehicle detection for aircrafts
truelight
parents:
9654
diff
changeset
|
30 |
uint best_cargo = 0; |
9672
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
31 |
uint best_speed = 0; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
32 |
|
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
33 |
FOR_ALL_ENGINEIDS_OF_TYPE(engine_id, veh_type) { |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
34 |
/* Is the vehicle available for this player */ |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
35 |
if (IsEngineBuildable(engine_id, veh_type, _current_player) && |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
36 |
GetEngine(engine_id)->reliability * 100 >= min_reliability << 16) { |
9672
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
37 |
uint cspeed, ccargo; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
38 |
/* Can this vehicle handle the cargo requested? */ |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
39 |
switch (veh_type) { |
9684
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
40 |
case VEHICLE_ROAD: { |
9672
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
41 |
const RoadVehicleInfo *vi = RoadVehInfo(engine_id); |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
42 |
if (vi->cargo_type != cargo && !CanRefitTo(engine_id, cargo)) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
43 |
if ((_price.roadveh_base >> 3) * vi->base_cost >> 5 > max_cost) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
44 |
ccargo = vi->capacity; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
45 |
cspeed = vi->max_speed; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
46 |
} break; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
47 |
|
9684
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
48 |
case VEHICLE_RAIL: { |
9672
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
49 |
const RailVehicleInfo *vi = RailVehInfo(engine_id); |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
50 |
if (vi->cargo_type != cargo && !CanRefitTo(engine_id, cargo)) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
51 |
if ((_price.build_railvehicle >> 3) * vi->base_cost >> 5 > max_cost) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
52 |
ccargo = vi->capacity; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
53 |
cspeed = vi->max_speed; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
54 |
} break; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
55 |
|
9684
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
56 |
case VEHICLE_WATER: { |
9672
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
57 |
const ShipVehicleInfo *vi = ShipVehInfo(engine_id); |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
58 |
if (vi->cargo_type != cargo && !CanRefitTo(engine_id, cargo)) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
59 |
if ((_price.ship_base >> 3) * vi->base_cost >> 5 > max_cost) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
60 |
ccargo = vi->capacity; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
61 |
cspeed = vi->max_speed; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
62 |
} break; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
63 |
|
9684
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
64 |
case VEHICLE_AIR: { |
9672
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
65 |
const AircraftVehicleInfo *vi = AircraftVehInfo(engine_id); |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
66 |
if (CT_PASSENGERS != cargo && CT_MAIL != cargo && !CanRefitTo(engine_id, cargo)) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
67 |
if ((_price.aircraft_base >> 3) * vi->base_cost >> 5 > max_cost) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
68 |
ccargo = vi->passenger_capacity; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
69 |
cspeed = vi->max_speed; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
70 |
} break; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
71 |
|
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
72 |
default: NOT_REACHED(); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
73 |
} |
9672
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
74 |
|
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
75 |
/* Sort on speed, than on cargo, than on order of engine-array */ |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
76 |
if (best_speed > cspeed) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
77 |
if (best_cargo > ccargo) continue; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
78 |
best_engine = engine_id; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
79 |
best_speed = cspeed; |
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
80 |
best_cargo = ccargo; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
81 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
82 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
83 |
|
9516
defc90b7898a
(svn r9428) [NoAI] -Fix: FindBestRoadVehicle returned always INVALID_ENGINE. It is more useful to return best_engine ;)
truelight
parents:
9497
diff
changeset
|
84 |
return best_engine; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
85 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
86 |
|
9672
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
87 |
EngineID AIVehicle::FindBestRoadVehicle(CargoID cargo, uint8 min_reliability, uint max_cost) |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
88 |
{ |
9684
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
89 |
return this->FindBestVehicle(cargo, min_reliability, VEHICLE_ROAD, max_cost); |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
90 |
} |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
91 |
|
9672
18c71ca987e4
(svn r10611) [NoAI] -Fix: improved FindBestXXX, it now finds the fastest, biggest vehicle available
truelight
parents:
9662
diff
changeset
|
92 |
EngineID AIVehicle::FindBestAircraftVehicle(CargoID cargo, uint8 min_reliability, uint max_cost) |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
93 |
{ |
9684
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
94 |
return this->FindBestVehicle(cargo, min_reliability, VEHICLE_AIR, max_cost); |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
95 |
} |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
96 |
|
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
97 |
VehicleID AIVehicle::BuildVehicle(TileIndex depot, EngineID engine_id) |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
98 |
{ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
99 |
if (!this->IsValidEngine(engine_id)) return false; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
100 |
|
9560
ff2dde050a4c
(svn r9498) [NoAI] -Add: added regression for AITransactionMode()
truelight
parents:
9516
diff
changeset
|
101 |
/* Reset the internal NewVehicleID in case we are in TestMode */ |
ff2dde050a4c
(svn r9498) [NoAI] -Add: added regression for AITransactionMode()
truelight
parents:
9516
diff
changeset
|
102 |
AIObject::SetNewVehicleID(0); |
ff2dde050a4c
(svn r9498) [NoAI] -Add: added regression for AITransactionMode()
truelight
parents:
9516
diff
changeset
|
103 |
|
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
104 |
bool ret; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
105 |
switch (::GetEngine(engine_id)->type) { |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
106 |
case VEH_ROAD: ret = this->DoCommand(depot, engine_id, 0, CMD_BUILD_ROAD_VEH); break; |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
107 |
case VEH_TRAIN: ret = this->DoCommand(depot, engine_id, 0, CMD_BUILD_RAIL_VEHICLE); break; |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
108 |
case VEH_SHIP: ret = this->DoCommand(depot, engine_id, 0, CMD_BUILD_SHIP); break; |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
109 |
case VEH_AIRCRAFT: ret = this->DoCommand(depot, engine_id, 0, CMD_BUILD_AIRCRAFT); break; |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
110 |
default: NOT_REACHED(); return INVALID_VEHICLE; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
111 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
112 |
|
9496
05ebee9884b3
(svn r9368) [NoAI] -Fix: store _new_vehicle_id directly after successful handling the command in a per-AI-player-safe piece of memory, so we can restore the value when ever we want later in the process
truelight
parents:
9491
diff
changeset
|
113 |
return ret ? AIObject::GetNewVehicleID() : INVALID_VEHICLE; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
114 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
115 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
116 |
VehicleID AIVehicle::CloneVehicle(TileIndex depot, VehicleID vehicle_id, bool share_orders) |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
117 |
{ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
118 |
if (!this->IsValidVehicle(vehicle_id)) return false; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
119 |
|
9560
ff2dde050a4c
(svn r9498) [NoAI] -Add: added regression for AITransactionMode()
truelight
parents:
9516
diff
changeset
|
120 |
/* Reset the internal NewVehicleID in case we are in TestMode */ |
ff2dde050a4c
(svn r9498) [NoAI] -Add: added regression for AITransactionMode()
truelight
parents:
9516
diff
changeset
|
121 |
AIObject::SetNewVehicleID(0); |
ff2dde050a4c
(svn r9498) [NoAI] -Add: added regression for AITransactionMode()
truelight
parents:
9516
diff
changeset
|
122 |
|
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
123 |
bool ret = this->DoCommand(depot, vehicle_id, share_orders, CMD_CLONE_VEHICLE); |
9496
05ebee9884b3
(svn r9368) [NoAI] -Fix: store _new_vehicle_id directly after successful handling the command in a per-AI-player-safe piece of memory, so we can restore the value when ever we want later in the process
truelight
parents:
9491
diff
changeset
|
124 |
return ret ? AIObject::GetNewVehicleID() : INVALID_VEHICLE; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
125 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
126 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
127 |
bool AIVehicle::RefitVehicle(VehicleID vehicle_id, CargoID cargo) |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
128 |
{ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
129 |
if (!this->IsValidVehicle(vehicle_id) || !AICargo::IsValidCargo(cargo)) return false; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
130 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
131 |
switch (::GetVehicle(vehicle_id)->type) { |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
132 |
case VEH_ROAD: return this->DoCommand(0, vehicle_id, cargo, CMD_REFIT_ROAD_VEH); |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
133 |
case VEH_TRAIN: return this->DoCommand(0, vehicle_id, cargo, CMD_REFIT_RAIL_VEHICLE); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
134 |
case VEH_SHIP: return this->DoCommand(0, vehicle_id, cargo, CMD_REFIT_SHIP); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
135 |
case VEH_AIRCRAFT: return this->DoCommand(0, vehicle_id, cargo, CMD_REFIT_AIRCRAFT); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
136 |
default: return false; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
137 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
138 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
139 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
140 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
141 |
bool AIVehicle::SellVehicle(VehicleID vehicle_id) |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
142 |
{ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
143 |
if (!this->IsValidVehicle(vehicle_id)) return false; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
144 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
145 |
switch (::GetVehicle(vehicle_id)->type) { |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
146 |
case VEH_ROAD: return this->DoCommand(0, vehicle_id, 0, CMD_SELL_ROAD_VEH); |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
147 |
case VEH_TRAIN: return this->DoCommand(0, vehicle_id, 0, CMD_SELL_RAIL_WAGON); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
148 |
case VEH_SHIP: return this->DoCommand(0, vehicle_id, 0, CMD_SELL_SHIP); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
149 |
case VEH_AIRCRAFT: return this->DoCommand(0, vehicle_id, 0, CMD_SELL_AIRCRAFT); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
150 |
default: return false; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
151 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
152 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
153 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
154 |
bool AIVehicle::SendVehicleToDepot(VehicleID vehicle_id) |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
155 |
{ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
156 |
if (!this->IsValidVehicle(vehicle_id)) return false; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
157 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
158 |
switch (::GetVehicle(vehicle_id)->type) { |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
159 |
case VEH_ROAD: return this->DoCommand(0, vehicle_id, 0, CMD_SEND_ROADVEH_TO_DEPOT); |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
160 |
case VEH_TRAIN: return this->DoCommand(0, vehicle_id, 0, CMD_SEND_TRAIN_TO_DEPOT); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
161 |
case VEH_SHIP: return this->DoCommand(0, vehicle_id, 0, CMD_SEND_SHIP_TO_DEPOT); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
162 |
case VEH_AIRCRAFT: return this->DoCommand(0, vehicle_id, 0, CMD_SEND_AIRCRAFT_TO_HANGAR); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
163 |
default: return false; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
164 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
165 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
166 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
167 |
bool AIVehicle::StartStopVehicle(VehicleID vehicle_id) |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
168 |
{ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
169 |
if (!this->IsValidVehicle(vehicle_id)) return false; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
170 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
171 |
switch (::GetVehicle(vehicle_id)->type) { |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
172 |
case VEH_ROAD: return this->DoCommand(0, vehicle_id, 0, CMD_START_STOP_ROADVEH); |
9654
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
173 |
case VEH_TRAIN: return this->DoCommand(0, vehicle_id, 0, CMD_START_STOP_TRAIN); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
174 |
case VEH_SHIP: return this->DoCommand(0, vehicle_id, 0, CMD_START_STOP_SHIP); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
175 |
case VEH_AIRCRAFT: return this->DoCommand(0, vehicle_id, 0, CMD_START_STOP_AIRCRAFT); |
b836eb5c521f
(svn r10556) [NoAI] -Add: added AIAirport, which can build an airport
truelight
parents:
9637
diff
changeset
|
176 |
default: return false; |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
177 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
178 |
} |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
179 |
|
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
180 |
bool AIVehicle::SkipVehicleOrder(VehicleID vehicle_id) |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
181 |
{ |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
182 |
if (!this->IsValidVehicle(vehicle_id)) return false; |
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
183 |
|
9626 | 184 |
return this->DoCommand(0, vehicle_id, 0, CMD_SKIP_TO_ORDER); |
9491
351239ad524c
(svn r9361) [NoAI] -Add: some function to find, build and sell road vehicles.
rubidium
parents:
diff
changeset
|
185 |
} |
9615
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
186 |
|
9637
9f78a12a4f53
(svn r10528) [NoAI] -Codechange: mark in comment static members as such in .cpp files
truelight
parents:
9626
diff
changeset
|
187 |
/* static */ TileIndex AIVehicle::GetLocation(VehicleID vehicle_id) |
9615
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
188 |
{ |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
189 |
if (!AIVehicle::IsValidVehicle(vehicle_id)) return INVALID_TILE; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
190 |
|
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
191 |
return ::GetVehicle(vehicle_id)->tile; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
192 |
} |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
193 |
|
9637
9f78a12a4f53
(svn r10528) [NoAI] -Codechange: mark in comment static members as such in .cpp files
truelight
parents:
9626
diff
changeset
|
194 |
/* static */ EngineID AIVehicle::GetEngineType(VehicleID vehicle_id) |
9615
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
195 |
{ |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
196 |
if (!AIVehicle::IsValidVehicle(vehicle_id)) return INVALID_ENGINE; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
197 |
|
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
198 |
return ::GetVehicle(vehicle_id)->engine_type; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
199 |
} |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
200 |
|
9637
9f78a12a4f53
(svn r10528) [NoAI] -Codechange: mark in comment static members as such in .cpp files
truelight
parents:
9626
diff
changeset
|
201 |
/* static */ int32 AIVehicle::GetUnitNumber(VehicleID vehicle_id) |
9615
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
202 |
{ |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
203 |
if (!AIVehicle::IsValidVehicle(vehicle_id)) return -1; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
204 |
|
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
205 |
return ::GetVehicle(vehicle_id)->unitnumber; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
206 |
} |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
207 |
|
9637
9f78a12a4f53
(svn r10528) [NoAI] -Codechange: mark in comment static members as such in .cpp files
truelight
parents:
9626
diff
changeset
|
208 |
/* static */ int32 AIVehicle::GetAge(VehicleID vehicle_id) |
9615
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
209 |
{ |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
210 |
if (!AIVehicle::IsValidVehicle(vehicle_id)) return -1; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
211 |
|
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
212 |
return ::GetVehicle(vehicle_id)->age; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
213 |
} |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
214 |
|
9637
9f78a12a4f53
(svn r10528) [NoAI] -Codechange: mark in comment static members as such in .cpp files
truelight
parents:
9626
diff
changeset
|
215 |
/* static */ int32 AIVehicle::GetMaxAge(VehicleID vehicle_id) |
9615
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
216 |
{ |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
217 |
if (!AIVehicle::IsValidVehicle(vehicle_id)) return -1; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
218 |
|
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
219 |
return ::GetVehicle(vehicle_id)->max_age; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
220 |
} |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
221 |
|
9637
9f78a12a4f53
(svn r10528) [NoAI] -Codechange: mark in comment static members as such in .cpp files
truelight
parents:
9626
diff
changeset
|
222 |
/* static */ int32 AIVehicle::GetAgeLeft(VehicleID vehicle_id) |
9615
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
223 |
{ |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
224 |
if (!AIVehicle::IsValidVehicle(vehicle_id)) return -1; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
225 |
|
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
226 |
return ::GetVehicle(vehicle_id)->max_age - ::GetVehicle(vehicle_id)->age; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
227 |
} |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
228 |
|
9637
9f78a12a4f53
(svn r10528) [NoAI] -Codechange: mark in comment static members as such in .cpp files
truelight
parents:
9626
diff
changeset
|
229 |
/* static */ int32 AIVehicle::GetProfitThisYear(VehicleID vehicle_id) |
9615
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
230 |
{ |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
231 |
if (!AIVehicle::IsValidVehicle(vehicle_id)) return -1; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
232 |
|
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
233 |
return ::GetVehicle(vehicle_id)->profit_this_year; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
234 |
} |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
235 |
|
9637
9f78a12a4f53
(svn r10528) [NoAI] -Codechange: mark in comment static members as such in .cpp files
truelight
parents:
9626
diff
changeset
|
236 |
/* static */ int32 AIVehicle::GetProfitLastYear(VehicleID vehicle_id) |
9615
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
237 |
{ |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
238 |
if (!AIVehicle::IsValidVehicle(vehicle_id)) return -1; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
239 |
|
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
240 |
return ::GetVehicle(vehicle_id)->profit_last_year; |
f809cdc8e360
(svn r9782) [NoAI] -Add: add information functions to AIVehicle, like the valuators of AIVehicleList
truelight
parents:
9560
diff
changeset
|
241 |
} |
9684
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
242 |
|
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
243 |
/* static */ AIVehicle::VehicleType AIVehicle::GetVehicleType(VehicleID vehicle_id) |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
244 |
{ |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
245 |
if (!AIVehicle::IsValidVehicle(vehicle_id)) return VEHICLE_INVALID; |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
246 |
|
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
247 |
switch (GetVehicle(vehicle_id)->type) { |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
248 |
case VEH_ROAD: return VEHICLE_ROAD; |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
249 |
case VEH_TRAIN: return VEHICLE_RAIL; |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
250 |
case VEH_SHIP: return VEHICLE_WATER; |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
251 |
case VEH_AIRCRAFT: return VEHICLE_AIR; |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
252 |
default: return VEHICLE_INVALID; |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
253 |
} |
623970482fb2
(svn r10633) [NoAI] -Add: added GetVehicleType and AIVehicle::VehicleType
truelight
parents:
9672
diff
changeset
|
254 |
} |