--- a/src/order_gui.cpp Sun Apr 06 14:12:19 2008 +0000
+++ b/src/order_gui.cpp Sun Apr 06 23:07:42 2008 +0000
@@ -91,22 +91,22 @@
return (sel <= v->num_orders && sel >= 0) ? sel : INVALID_ORDER;
}
-static StringID StationOrderStrings[] = {
- STR_8806_GO_TO,
- STR_GO_TO_TRANSFER,
- STR_8807_GO_TO_UNLOAD,
- STR_GO_TO_TRANSFER_UNLOAD,
- STR_8808_GO_TO_LOAD,
- STR_GO_TO_TRANSFER_LOAD,
- STR_NULL,
- STR_NULL,
- STR_880A_GO_NON_STOP_TO,
- STR_GO_TO_NON_STOP_TRANSFER,
- STR_880B_GO_NON_STOP_TO_UNLOAD,
- STR_GO_TO_NON_STOP_TRANSFER_UNLOAD,
- STR_880C_GO_NON_STOP_TO_LOAD,
- STR_GO_TO_NON_STOP_TRANSFER_LOAD,
- STR_NULL
+static StringID _station_order_strings[][7] = {
+ {
+ STR_8806_GO_TO,
+ STR_GO_TO_TRANSFER,
+ STR_8807_GO_TO_UNLOAD,
+ STR_GO_TO_TRANSFER_UNLOAD,
+ STR_8808_GO_TO_LOAD,
+ STR_GO_TO_TRANSFER_LOAD
+ }, {
+ STR_880A_GO_NON_STOP_TO,
+ STR_GO_TO_NON_STOP_TRANSFER,
+ STR_880B_GO_NON_STOP_TO_UNLOAD,
+ STR_GO_TO_NON_STOP_TRANSFER_UNLOAD,
+ STR_880C_GO_NON_STOP_TO_LOAD,
+ STR_GO_TO_NON_STOP_TRANSFER_LOAD
+ }
};
static void DrawOrdersWindow(Window *w)
@@ -153,9 +153,9 @@
w->ShowWidget(ORDER_WIDGET_UNLOAD); // Unload
if (order != NULL) {
- switch (order->type) {
+ switch (order->GetType()) {
case OT_GOTO_STATION:
- if (!GetStation(order->dest)->IsBuoy()) break;
+ if (!GetStation(order->GetDestination())->IsBuoy()) break;
/* Fall-through */
case OT_GOTO_WAYPOINT:
@@ -194,15 +194,15 @@
if (i - w->vscroll.pos < w->vscroll.cap) {
SetDParam(1, 6);
- switch (order->type) {
+ switch (order->GetType()) {
case OT_DUMMY:
SetDParam(1, STR_INVALID_ORDER);
- SetDParam(2, order->dest);
+ SetDParam(2, order->GetDestination());
break;
case OT_GOTO_STATION:
- SetDParam(1, StationOrderStrings[order->flags]);
- SetDParam(2, order->dest);
+ SetDParam(1, _station_order_strings[!!order->GetNonStopType()][order->GetLoadType() | order->GetUnloadType()]);
+ SetDParam(2, order->GetDestination());
break;
case OT_GOTO_DEPOT: {
@@ -210,24 +210,24 @@
if (v->type == VEH_AIRCRAFT) {
s = STR_GO_TO_AIRPORT_HANGAR;
- SetDParam(2, order->dest);
+ SetDParam(2, order->GetDestination());
} else {
- SetDParam(2, GetDepot(order->dest)->town_index);
+ SetDParam(2, GetDepot(order->GetDestination())->town_index);
switch (v->type) {
- case VEH_TRAIN: s = (order->flags & OFB_NON_STOP) ? STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT : STR_GO_TO_TRAIN_DEPOT; break;
+ case VEH_TRAIN: s = (order->GetNonStopType() & OFB_NON_STOP) ? STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT : STR_GO_TO_TRAIN_DEPOT; break;
case VEH_ROAD: s = STR_GO_TO_ROADVEH_DEPOT; break;
case VEH_SHIP: s = STR_GO_TO_SHIP_DEPOT; break;
default: break;
}
}
- if (order->flags & OFB_FULL_LOAD) s++; /* service at */
+ if (order->GetDepotOrderType() & OFB_SERVICE_IF_NEEDED) s++; /* service at */
SetDParam(1, s);
- if (order->refit_cargo < NUM_CARGO) {
+ if (order->IsRefit()) {
SetDParam(3, STR_REFIT_ORDER);
- SetDParam(4, GetCargo(order->refit_cargo)->name);
+ SetDParam(4, GetCargo(order->GetRefitCargo())->name);
} else {
SetDParam(3, STR_EMPTY);
}
@@ -235,8 +235,8 @@
}
case OT_GOTO_WAYPOINT:
- SetDParam(1, (order->flags & OFB_NON_STOP) ? STR_GO_NON_STOP_TO_WAYPOINT : STR_GO_TO_WAYPOINT);
- SetDParam(2, order->dest);
+ SetDParam(1, (order->GetNonStopType() & OFB_NON_STOP) ? STR_GO_NON_STOP_TO_WAYPOINT : STR_GO_TO_WAYPOINT);
+ SetDParam(2, order->GetDestination());
break;
default: break;
@@ -263,8 +263,6 @@
Order order;
order.next = NULL;
order.index = 0;
- order.refit_cargo = CT_INVALID;
- order.refit_subtype = 0;
// check depot first
if (_patches.gotodepot) {
@@ -272,9 +270,7 @@
case MP_RAILWAY:
if (v->type == VEH_TRAIN && IsTileOwner(tile, _local_player)) {
if (IsRailDepot(tile)) {
- order.type = OT_GOTO_DEPOT;
- order.flags = OFB_PART_OF_ORDERS;
- order.dest = GetDepotByTile(tile)->index;
+ order.MakeGoToDepot(GetDepotByTile(tile)->index, true);
return order;
}
}
@@ -282,9 +278,7 @@
case MP_ROAD:
if (IsRoadDepot(tile) && v->type == VEH_ROAD && IsTileOwner(tile, _local_player)) {
- order.type = OT_GOTO_DEPOT;
- order.flags = OFB_PART_OF_ORDERS;
- order.dest = GetDepotByTile(tile)->index;
+ order.MakeGoToDepot(GetDepotByTile(tile)->index, true);
return order;
}
break;
@@ -292,9 +286,7 @@
case MP_STATION:
if (v->type != VEH_AIRCRAFT) break;
if (IsHangar(tile) && IsTileOwner(tile, _local_player)) {
- order.type = OT_GOTO_DEPOT;
- order.flags = OFB_PART_OF_ORDERS;
- order.dest = GetStationIndex(tile);
+ order.MakeGoToDepot(GetStationIndex(tile), true);
return order;
}
break;
@@ -305,9 +297,7 @@
IsTileOwner(tile, _local_player)) {
TileIndex tile2 = GetOtherShipDepotTile(tile);
- order.type = OT_GOTO_DEPOT;
- order.flags = OFB_PART_OF_ORDERS;
- order.dest = GetDepotByTile(tile < tile2 ? tile : tile2)->index;
+ order.MakeGoToDepot(GetDepotByTile(tile < tile2 ? tile : tile2)->index, true);
return order;
}
@@ -321,9 +311,7 @@
v->type == VEH_TRAIN &&
IsTileOwner(tile, _local_player) &&
IsRailWaypoint(tile)) {
- order.type = OT_GOTO_WAYPOINT;
- order.flags = 0;
- order.dest = GetWaypointByTile(tile)->index;
+ order.MakeGoToWaypoint(GetWaypointByTile(tile)->index);
return order;
}
@@ -339,9 +327,7 @@
(facil=FACIL_BUS_STOP, v->type == VEH_ROAD && IsCargoInClass(v->cargo_type, CC_PASSENGERS)) ||
(facil=FACIL_TRUCK_STOP, 1);
if (st->facilities & facil) {
- order.type = OT_GOTO_STATION;
- order.flags = 0;
- order.dest = st_index;
+ order.MakeGoToStation(st_index);
return order;
}
}
@@ -349,7 +335,6 @@
// not found
order.Free();
- order.dest = INVALID_STATION;
return order;
}
@@ -387,7 +372,7 @@
cmd = GetOrderCmdFromTile(v, tile);
if (!cmd.IsValid()) return;
- if (DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), PackOrder(&cmd), NULL, CMD_INSERT_ORDER | CMD_MSG(STR_8833_CAN_T_INSERT_NEW_ORDER))) {
+ if (DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), cmd.Pack(), NULL, CMD_INSERT_ORDER | CMD_MSG(STR_8833_CAN_T_INSERT_NEW_ORDER))) {
if (WP(w, order_d).sel != -1) WP(w,order_d).sel++;
ResetObjectToPlace();
}
@@ -576,10 +561,10 @@
const Order *ord = GetVehicleOrder(v, sel);
TileIndex xy;
- switch (ord->type) {
- case OT_GOTO_STATION: xy = GetStation(ord->dest)->xy ; break;
- case OT_GOTO_DEPOT: xy = (v->type == VEH_AIRCRAFT) ? GetStation(ord->dest)->xy : GetDepot(ord->dest)->xy; break;
- case OT_GOTO_WAYPOINT: xy = GetWaypoint(ord->dest)->xy; break;
+ switch (ord->GetType()) {
+ case OT_GOTO_STATION: xy = GetStation(ord->GetDestination())->xy ; break;
+ case OT_GOTO_DEPOT: xy = (v->type == VEH_AIRCRAFT) ? GetStation(ord->GetDestination())->xy : GetDepot(ord->GetDestination())->xy; break;
+ case OT_GOTO_WAYPOINT: xy = GetWaypoint(ord->GetDestination())->xy; break;
default: xy = 0; break;
}
@@ -691,7 +676,7 @@
int s = OrderGetSel(w);
if (e->we.click.widget != ORDER_WIDGET_FULL_LOAD) break;
- if (s == v->num_orders || GetVehicleOrder(v, s)->type != OT_GOTO_DEPOT) {
+ if (s == v->num_orders || !GetVehicleOrder(v, s)->IsType(OT_GOTO_DEPOT)) {
GuiShowTooltips(STR_8857_MAKE_THE_HIGHLIGHTED_ORDER);
} else {
GuiShowTooltips(STR_SERVICE_HINT);