author | Tero Marttila <terom@fixme.fi> |
Fri, 18 Jul 2008 21:28:42 +0300 | |
changeset 11175 | 020c61e39c94 |
parent 11144 | 7eff560780d2 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
9280
9c03416d26b1
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
9267
diff
changeset
|
3 |
/** @file order_func.h Functions related to orders. */ |
2214
75d037f8dcc4
(svn r2732) -Codechange: Cleaned the order flags some more. Hit some inconsistencies while trying to locate bug 1244167
celestar
parents:
2186
diff
changeset
|
4 |
|
9280
9c03416d26b1
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
9267
diff
changeset
|
5 |
#ifndef ORDER_FUNC_H |
9c03416d26b1
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
9267
diff
changeset
|
6 |
#define ORDER_FUNC_H |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
7 |
|
9267
71cf88230dc1
(svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents:
9266
diff
changeset
|
8 |
#include "order_type.h" |
8615
6b91ca653bad
(svn r11680) -Codechange: refactor more out of openttd.h and functions.h.
rubidium
parents:
8609
diff
changeset
|
9 |
#include "vehicle_type.h" |
8634
5ffca02f9115
(svn r11700) -Codechange: reduce the amount of unnecessary includes.
rubidium
parents:
8615
diff
changeset
|
10 |
#include "tile_type.h" |
9266
416385a64dcb
(svn r12469) -Codechange: split type related stuff from group.h (and openttd.h) to group_type.h.
rubidium
parents:
9263
diff
changeset
|
11 |
#include "group_type.h" |
9280
9c03416d26b1
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
9267
diff
changeset
|
12 |
#include "date_type.h" |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
13 |
|
8149
eb78fb69096f
(svn r11184) -Codechange: cleanup the code related to backup orders.
rubidium
parents:
7992
diff
changeset
|
14 |
struct BackuppedOrders { |
8818
d8d3812f8f35
(svn r11887) -Fix [FS#1658]: segmentation faults/wrong frees due uninitialized memory in the AI.
rubidium
parents:
8798
diff
changeset
|
15 |
BackuppedOrders() : order(NULL), name(NULL) { } |
d8d3812f8f35
(svn r11887) -Fix [FS#1658]: segmentation faults/wrong frees due uninitialized memory in the AI.
rubidium
parents:
8798
diff
changeset
|
16 |
~BackuppedOrders() { free(order); free(name); } |
2433
5f55c796b85b
(svn r2959) - Fix: [ 1266036 ] Fix [ 1236317 ] Vehicles with and TRANSFER order don't have that order restored (i_dachev). Also disallow non-train type vehicles to have non-stop orders.
Darkvater
parents:
2214
diff
changeset
|
17 |
|
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
18 |
VehicleID clone; |
4391
7bfd170bfdf5
(svn r6144) -Codechange: renamed OrderID to VehicleOrderID, because it had nothing to do
truelight
parents:
4389
diff
changeset
|
19 |
VehicleOrderID orderindex; |
9146
2c8c94a75544
(svn r12296) -Fix [FS#1549]: restore timetable from backupped orders and add group ID to the backup
glx
parents:
8965
diff
changeset
|
20 |
GroupID group; |
8149
eb78fb69096f
(svn r11184) -Codechange: cleanup the code related to backup orders.
rubidium
parents:
7992
diff
changeset
|
21 |
Order *order; |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
22 |
uint16 service_interval; |
8754
5dae65402806
(svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138
parents:
8707
diff
changeset
|
23 |
char *name; |
6574
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6573
diff
changeset
|
24 |
}; |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
25 |
|
8764
65746a5248ec
(svn r11832) -Codechange: get rid of (quite) some VARDEFs.
rubidium
parents:
8754
diff
changeset
|
26 |
extern TileIndex _backup_orders_tile; |
65746a5248ec
(svn r11832) -Codechange: get rid of (quite) some VARDEFs.
rubidium
parents:
8754
diff
changeset
|
27 |
extern BackuppedOrders _backup_orders_data; |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
28 |
|
9280
9c03416d26b1
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
9267
diff
changeset
|
29 |
void BackupVehicleOrders(const Vehicle *v, BackuppedOrders *order = &_backup_orders_data); |
9c03416d26b1
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
9267
diff
changeset
|
30 |
void RestoreVehicleOrders(const Vehicle *v, const BackuppedOrders *order = &_backup_orders_data); |
10372
93844492fdd9
(svn r12913) -Add: ability to backup and restore a player's economic data and data for a vehicle (or chain of vehicles)
bjarni
parents:
10168
diff
changeset
|
31 |
void RestoreVehicleOrdersBruteForce(Vehicle *v, const BackuppedOrders *bak); |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
32 |
|
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
33 |
/* Functions */ |
4389
e4555522d257
(svn r6142) -Codechange: added WaypointID (sorry DV, couldn't splits it anymore)
truelight
parents:
4384
diff
changeset
|
34 |
void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination); |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
35 |
void InvalidateVehicleOrder(const Vehicle *v); |
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
36 |
bool VehicleHasDepotOrders(const Vehicle *v); |
3140
69cb681c6d86
(svn r3758) Remove the news validation callback. It is superseded by r3757.
tron
parents:
2817
diff
changeset
|
37 |
void CheckOrders(const Vehicle*); |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
38 |
void DeleteVehicleOrders(Vehicle *v); |
9323
9bc423363f6a
(svn r12575) -Codechange: unduplicate Process*Orders for trains, ships and road vehicles.
rubidium
parents:
9280
diff
changeset
|
39 |
bool ProcessOrders(Vehicle *v); |
1024
9b06b01490a4
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
40 |
|
11144
7eff560780d2
(svn r13702) -Fix: do not overflow the order/timetable window when 'long' orders are displayed.
rubidium
parents:
10372
diff
changeset
|
41 |
void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int y, bool selected, bool timetable, int width); |
10168
24907819f29b
(svn r12699) -Codechange: Unify the order drawing code for orders and timetables.
maedhros
parents:
9326
diff
changeset
|
42 |
|
8707
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
43 |
#define MIN_SERVINT_PERCENT 5 |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
44 |
#define MAX_SERVINT_PERCENT 90 |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
45 |
#define MIN_SERVINT_DAYS 30 |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
46 |
#define MAX_SERVINT_DAYS 800 |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
47 |
|
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
48 |
/** |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
49 |
* Get the service interval domain. |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
50 |
* Get the new proposed service interval for the vehicle is indeed, clamped |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
51 |
* within the given bounds. @see MIN_SERVINT_PERCENT ,etc. |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
52 |
* @param index proposed service interval |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
53 |
* @return service interval |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
54 |
*/ |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
55 |
Date GetServiceIntervalClamped(uint index); |
55835d8fbfcd
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8634
diff
changeset
|
56 |
|
9280
9c03416d26b1
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
9267
diff
changeset
|
57 |
#endif /* ORDER_FUNC_H */ |