author | peter1138 |
Sun, 03 Aug 2008 17:35:08 +0000 | |
changeset 9834 | 7474149531c1 |
parent 9807 | 6c47b0584f51 |
child 9937 | 7badd14899f9 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
8784
c2e9d649a9ce
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
8771
diff
changeset
|
3 |
/** @file order_func.h Functions related to orders. */ |
2214
056bbc3c8236
(svn r2732) -Codechange: Cleaned the order flags some more. Hit some inconsistencies while trying to locate bug 1244167
celestar
parents:
2186
diff
changeset
|
4 |
|
8784
c2e9d649a9ce
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
8771
diff
changeset
|
5 |
#ifndef ORDER_FUNC_H |
c2e9d649a9ce
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
8771
diff
changeset
|
6 |
#define ORDER_FUNC_H |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
7 |
|
8771
cab6fdd47703
(svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents:
8770
diff
changeset
|
8 |
#include "order_type.h" |
8119
52b48108425a
(svn r11680) -Codechange: refactor more out of openttd.h and functions.h.
rubidium
parents:
8113
diff
changeset
|
9 |
#include "vehicle_type.h" |
8138
dbfdc08fa6b9
(svn r11700) -Codechange: reduce the amount of unnecessary includes.
rubidium
parents:
8119
diff
changeset
|
10 |
#include "tile_type.h" |
8770
ea070bc7bdad
(svn r12469) -Codechange: split type related stuff from group.h (and openttd.h) to group_type.h.
rubidium
parents:
8767
diff
changeset
|
11 |
#include "group_type.h" |
8784
c2e9d649a9ce
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
8771
diff
changeset
|
12 |
#include "date_type.h" |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
13 |
|
7653
dd252420d9c2
(svn r11184) -Codechange: cleanup the code related to backup orders.
rubidium
parents:
7496
diff
changeset
|
14 |
struct BackuppedOrders { |
8322
916ef2361569
(svn r11887) -Fix [FS#1658]: segmentation faults/wrong frees due uninitialized memory in the AI.
rubidium
parents:
8302
diff
changeset
|
15 |
BackuppedOrders() : order(NULL), name(NULL) { } |
916ef2361569
(svn r11887) -Fix [FS#1658]: segmentation faults/wrong frees due uninitialized memory in the AI.
rubidium
parents:
8302
diff
changeset
|
16 |
~BackuppedOrders() { free(order); free(name); } |
2433
7e826fbf74d3
(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
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
18 |
VehicleID clone; |
4391
40c1c7dd05f3
(svn r6144) -Codechange: renamed OrderID to VehicleOrderID, because it had nothing to do
truelight
parents:
4389
diff
changeset
|
19 |
VehicleOrderID orderindex; |
8650
9a9c905deaa5
(svn r12296) -Fix [FS#1549]: restore timetable from backupped orders and add group ID to the backup
glx
parents:
8469
diff
changeset
|
20 |
GroupID group; |
7653
dd252420d9c2
(svn r11184) -Codechange: cleanup the code related to backup orders.
rubidium
parents:
7496
diff
changeset
|
21 |
Order *order; |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
22 |
uint16 service_interval; |
8258
9fa31acb07bc
(svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138
parents:
8211
diff
changeset
|
23 |
char *name; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
24 |
}; |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
25 |
|
8268
5027ad5e70a0
(svn r11832) -Codechange: get rid of (quite) some VARDEFs.
rubidium
parents:
8258
diff
changeset
|
26 |
extern TileIndex _backup_orders_tile; |
5027ad5e70a0
(svn r11832) -Codechange: get rid of (quite) some VARDEFs.
rubidium
parents:
8258
diff
changeset
|
27 |
extern BackuppedOrders _backup_orders_data; |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
28 |
|
8784
c2e9d649a9ce
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
8771
diff
changeset
|
29 |
void BackupVehicleOrders(const Vehicle *v, BackuppedOrders *order = &_backup_orders_data); |
c2e9d649a9ce
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
8771
diff
changeset
|
30 |
void RestoreVehicleOrders(const Vehicle *v, const BackuppedOrders *order = &_backup_orders_data); |
9061
8ebd40e86171
(svn r12913) -Add: ability to backup and restore a player's economic data and data for a vehicle (or chain of vehicles)
bjarni
parents:
8929
diff
changeset
|
31 |
void RestoreVehicleOrdersBruteForce(Vehicle *v, const BackuppedOrders *bak); |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
32 |
|
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
33 |
/* Functions */ |
4389
18d6ccfb5335
(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
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
35 |
void InvalidateVehicleOrder(const Vehicle *v); |
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
36 |
bool VehicleHasDepotOrders(const Vehicle *v); |
3140
5555cc95043a
(svn r3758) Remove the news validation callback. It is superseded by r3757.
tron
parents:
2817
diff
changeset
|
37 |
void CheckOrders(const Vehicle*); |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
38 |
void DeleteVehicleOrders(Vehicle *v); |
8827
730524764a69
(svn r12575) -Codechange: unduplicate Process*Orders for trains, ships and road vehicles.
rubidium
parents:
8784
diff
changeset
|
39 |
bool ProcessOrders(Vehicle *v); |
9807
6c47b0584f51
(svn r13949) -Codechange [YAPP]: Declare the functions for processing conditional orders as non-static. (michi_cc)
rubidium
parents:
9639
diff
changeset
|
40 |
bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth = 0); |
6c47b0584f51
(svn r13949) -Codechange [YAPP]: Declare the functions for processing conditional orders as non-static. (michi_cc)
rubidium
parents:
9639
diff
changeset
|
41 |
VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle *v); |
1024
5e446b5b3ec5
(svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff
changeset
|
42 |
|
9639
58530f2b5fdc
(svn r13702) -Fix: do not overflow the order/timetable window when 'long' orders are displayed.
rubidium
parents:
9061
diff
changeset
|
43 |
void DrawOrderString(const Vehicle *v, const Order *order, int order_index, int y, bool selected, bool timetable, int width); |
8929
ebb6e864b545
(svn r12699) -Codechange: Unify the order drawing code for orders and timetables.
maedhros
parents:
8830
diff
changeset
|
44 |
|
8211
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
45 |
#define MIN_SERVINT_PERCENT 5 |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
46 |
#define MAX_SERVINT_PERCENT 90 |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
47 |
#define MIN_SERVINT_DAYS 30 |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
48 |
#define MAX_SERVINT_DAYS 800 |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
49 |
|
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
50 |
/** |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
51 |
* Get the service interval domain. |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
52 |
* Get the new proposed service interval for the vehicle is indeed, clamped |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
53 |
* within the given bounds. @see MIN_SERVINT_PERCENT ,etc. |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
54 |
* @param index proposed service interval |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
55 |
* @return service interval |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
56 |
*/ |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
57 |
Date GetServiceIntervalClamped(uint index); |
29a8510dfd62
(svn r11774) -Change: do not include variables.h in a header when it is not needed.
rubidium
parents:
8138
diff
changeset
|
58 |
|
8784
c2e9d649a9ce
(svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents:
8771
diff
changeset
|
59 |
#endif /* ORDER_FUNC_H */ |