(svn r14801) -Codechange: don't reference Vehicle::num_orders directly but through a method GetNumOrders() (PhilSophus)

This commit is contained in:
rubidium 2009-01-03 13:20:32 +00:00
parent 18b27692aa
commit d428da5a35
7 changed files with 50 additions and 44 deletions

View File

@ -655,7 +655,7 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
case 0x05: return GB(v->index, 8, 8);
case 0x0A: return v->current_order.Pack();
case 0x0B: return GB(v->current_order.Pack(), 8, 8);
case 0x0C: return v->num_orders;
case 0x0C: return v->GetNumOrders();
case 0x0D: return v->cur_order_index;
case 0x10: return v->load_unload_time_rem;
case 0x11: return GB(v->load_unload_time_rem, 8, 8);

View File

@ -310,7 +310,7 @@ static TileIndex GetOrderLocation(const Order& o)
static uint GetOrderDistance(const Order *prev, const Order *cur, const Vehicle *v, int conditional_depth = 0)
{
if (cur->IsType(OT_CONDITIONAL)) {
if (conditional_depth > v->num_orders) return 0;
if (conditional_depth > v->GetNumOrders()) return 0;
conditional_depth++;
@ -464,7 +464,7 @@ CommandCost CmdInsertOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, c
case OT_CONDITIONAL: {
VehicleOrderID skip_to = new_order.GetConditionSkipToOrder();
if (skip_to != 0 && skip_to >= v->num_orders) return CMD_ERROR; // Always allow jumping to the first (even when there is no order).
if (skip_to != 0 && skip_to >= v->GetNumOrders()) return CMD_ERROR; // Always allow jumping to the first (even when there is no order).
if (new_order.GetConditionVariable() > OCV_END) return CMD_ERROR;
OrderConditionComparator occ = new_order.GetConditionComparator();
@ -492,7 +492,7 @@ CommandCost CmdInsertOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, c
default: return CMD_ERROR;
}
if (sel_ord > v->num_orders) return CMD_ERROR;
if (sel_ord > v->GetNumOrders()) return CMD_ERROR;
if (!Order::CanAllocateItem()) return_cmd_error(STR_8831_NO_MORE_SPACE_FOR_ORDERS);
@ -563,7 +563,7 @@ CommandCost CmdInsertOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, c
if (sel_ord <= u->cur_order_index) {
uint cur = u->cur_order_index + 1;
/* Check if we don't go out of bound */
if (cur < u->num_orders)
if (cur < u->GetNumOrders())
u->cur_order_index = cur;
}
/* Update any possible open window of the vehicle */
@ -580,7 +580,7 @@ CommandCost CmdInsertOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, c
order->SetConditionSkipToOrder(order_id + 1);
}
if (order_id == cur_order_id) {
order->SetConditionSkipToOrder((order_id + 1) % v->num_orders);
order->SetConditionSkipToOrder((order_id + 1) % v->GetNumOrders());
}
}
cur_order_id++;
@ -627,7 +627,7 @@ CommandCost CmdDeleteOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, c
if (!CheckOwnership(v->owner)) return CMD_ERROR;
/* If we did not select an order, we maybe want to de-clone the orders */
if (sel_ord >= v->num_orders)
if (sel_ord >= v->GetNumOrders())
return DecloneOrder(v, flags);
order = GetVehicleOrder(v, sel_ord);
@ -685,7 +685,7 @@ CommandCost CmdDeleteOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, c
order->SetConditionSkipToOrder(max(order_id - 1, 0));
}
if (order_id == cur_order_id) {
order->SetConditionSkipToOrder((order_id + 1) % v->num_orders);
order->SetConditionSkipToOrder((order_id + 1) % v->GetNumOrders());
}
}
cur_order_id++;
@ -714,7 +714,7 @@ CommandCost CmdSkipToOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, c
v = GetVehicle(veh_id);
if (!CheckOwnership(v->owner) || sel_ord == v->cur_order_index ||
sel_ord >= v->num_orders || v->num_orders < 2) return CMD_ERROR;
sel_ord >= v->GetNumOrders() || v->GetNumOrders() < 2) return CMD_ERROR;
if (flags & DC_EXEC) {
v->cur_order_index = sel_ord;
@ -755,8 +755,8 @@ CommandCost CmdMoveOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, con
if (!CheckOwnership(v->owner)) return CMD_ERROR;
/* Don't make senseless movements */
if (moving_order >= v->num_orders || target_order >= v->num_orders ||
moving_order == target_order || v->num_orders <= 1)
if (moving_order >= v->GetNumOrders() || target_order >= v->GetNumOrders() ||
moving_order == target_order || v->GetNumOrders() <= 1)
return CMD_ERROR;
Order *moving_one = GetVehicleOrder(v, moving_order);
@ -861,7 +861,7 @@ CommandCost CmdModifyOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, c
if (!CheckOwnership(v->owner)) return CMD_ERROR;
/* Is it a valid order? */
if (sel_ord >= v->num_orders) return CMD_ERROR;
if (sel_ord >= v->GetNumOrders()) return CMD_ERROR;
Order *order = GetVehicleOrder(v, sel_ord);
switch (order->GetType()) {
@ -945,7 +945,7 @@ CommandCost CmdModifyOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, c
break;
case MOF_COND_DESTINATION:
if (data >= v->num_orders) return CMD_ERROR;
if (data >= v->GetNumOrders()) return CMD_ERROR;
break;
}
@ -1102,7 +1102,7 @@ CommandCost CmdCloneOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, co
DeleteVehicleOrders(dst);
dst->orders = src->orders;
dst->num_orders = src->num_orders;
dst->num_orders = src->GetNumOrders();
/* Link this vehicle in the shared-list */
dst->AddToShared(src);
@ -1147,7 +1147,7 @@ CommandCost CmdCloneOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, co
}
/* make sure there are orders available */
delta = dst->IsOrderListShared() ? src->num_orders + 1 : src->num_orders - dst->num_orders;
delta = dst->IsOrderListShared() ? src->GetNumOrders() + 1 : src->GetNumOrders() - dst->GetNumOrders();
if (!Order::CanAllocateItem(delta)) {
return_cmd_error(STR_8831_NO_MORE_SPACE_FOR_ORDERS);
}
@ -1166,7 +1166,7 @@ CommandCost CmdCloneOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2, co
order_dst = &(*order_dst)->next;
}
dst->num_orders = src->num_orders;
dst->num_orders = src->GetNumOrders();
InvalidateVehicleOrder(dst, -1);
@ -1358,7 +1358,7 @@ CommandCost CmdRestoreOrderIndex(TileIndex tile, uint32 flags, uint32 p1, uint32
/* Check the vehicle type and ownership, and if the service interval and order are in range */
if (!CheckOwnership(v->owner)) return CMD_ERROR;
if (serv_int != GetServiceIntervalClamped(serv_int) || cur_ord >= v->num_orders) return CMD_ERROR;
if (serv_int != GetServiceIntervalClamped(serv_int) || cur_ord >= v->GetNumOrders()) return CMD_ERROR;
if (flags & DC_EXEC) {
v->cur_order_index = cur_ord;
@ -1432,7 +1432,7 @@ void CheckOrders(const Vehicle* v)
}
/* Check if the last and the first order are the same */
if (v->num_orders > 1) {
if (v->GetNumOrders() > 1) {
const Order* last = GetLastVehicleOrder(v);
if (v->orders->Equals(*last)) {
@ -1657,7 +1657,7 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth)
break;
case OT_CONDITIONAL: {
if (conditional_depth > v->num_orders) return false;
if (conditional_depth > v->GetNumOrders()) return false;
VehicleOrderID next_order = ProcessConditionalOrder(order, v);
if (next_order != INVALID_VEH_ORDER_ID) {
@ -1670,7 +1670,7 @@ bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth)
}
/* Get the current order */
if (v->cur_order_index >= v->num_orders) v->cur_order_index = 0;
if (v->cur_order_index >= v->GetNumOrders()) v->cur_order_index = 0;
const Order *order = GetVehicleOrder(v, v->cur_order_index);
v->current_order = *order;
@ -1739,7 +1739,7 @@ bool ProcessOrders(Vehicle *v)
}
/* Get the current order */
if (v->cur_order_index >= v->num_orders) v->cur_order_index = 0;
if (v->cur_order_index >= v->GetNumOrders()) v->cur_order_index = 0;
const Order *order = GetVehicleOrder(v, v->cur_order_index);

View File

@ -393,7 +393,7 @@ private:
int OrderGetSel()
{
int num = this->selected_order;
return (num >= 0 && num < vehicle->num_orders) ? num : vehicle->num_orders;
return (num >= 0 && num < vehicle->GetNumOrders()) ? num : vehicle->GetNumOrders();
}
/**
@ -419,7 +419,7 @@ private:
sel += this->vscroll.pos;
return (sel <= vehicle->num_orders && sel >= 0) ? sel : INVALID_ORDER;
return (sel <= vehicle->GetNumOrders() && sel >= 0) ? sel : INVALID_ORDER;
}
bool HandleOrderVehClick(const Vehicle *u)
@ -433,7 +433,7 @@ private:
/* v is vehicle getting orders. Only copy/clone orders if vehicle doesn't have any orders yet
* obviously if you press CTRL on a non-empty orders vehicle you know what you are doing */
if (this->vehicle->num_orders != 0 && _ctrl_pressed == 0) return false;
if (this->vehicle->GetNumOrders() != 0 && _ctrl_pressed == 0) return false;
if (DoCommandP(this->vehicle->tile, this->vehicle->index | (u->index << 16), _ctrl_pressed ? CO_SHARE : CO_COPY,
_ctrl_pressed ? CMD_CLONE_ORDER | CMD_MSG(STR_CANT_SHARE_ORDER_LIST) : CMD_CLONE_ORDER | CMD_MSG(STR_CANT_COPY_ORDER_LIST))) {
@ -579,9 +579,9 @@ private:
{
/* Don't skip when there's nothing to skip */
if (_ctrl_pressed && w->vehicle->cur_order_index == w->OrderGetSel()) return;
if (w->vehicle->num_orders <= 1) return;
if (w->vehicle->GetNumOrders() <= 1) return;
DoCommandP(w->vehicle->tile, w->vehicle->index, _ctrl_pressed ? w->OrderGetSel() : ((w->vehicle->cur_order_index + 1) % w->vehicle->num_orders),
DoCommandP(w->vehicle->tile, w->vehicle->index, _ctrl_pressed ? w->OrderGetSel() : ((w->vehicle->cur_order_index + 1) % w->vehicle->GetNumOrders()),
CMD_SKIP_TO_ORDER | CMD_MSG(_ctrl_pressed ? STR_CAN_T_SKIP_TO_ORDER : STR_CAN_T_SKIP_ORDER));
}
@ -596,7 +596,7 @@ private:
int selected = w->selected_order + (int)_networking;
if (DoCommandP(w->vehicle->tile, w->vehicle->index, w->OrderGetSel(), CMD_DELETE_ORDER | CMD_MSG(STR_8834_CAN_T_DELETE_THIS_ORDER))) {
w->selected_order = selected >= w->vehicle->num_orders ? -1 : selected;
w->selected_order = selected >= w->vehicle->GetNumOrders() ? -1 : selected;
}
}
@ -692,7 +692,7 @@ public:
{
bool shared_orders = this->vehicle->IsOrderListShared();
SetVScrollCount(this, this->vehicle->num_orders + 1);
SetVScrollCount(this, this->vehicle->GetNumOrders() + 1);
int sel = OrderGetSel();
const Order *order = GetVehicleOrder(this->vehicle, sel);
@ -703,11 +703,11 @@ public:
this->widget[ORDER_WIDGET_COND_COMPARATOR].data = _order_conditional_condition[order == NULL ? 0 : order->GetConditionComparator()];
/* skip */
this->SetWidgetDisabledState(ORDER_WIDGET_SKIP, this->vehicle->num_orders <= 1);
this->SetWidgetDisabledState(ORDER_WIDGET_SKIP, this->vehicle->GetNumOrders() <= 1);
/* delete */
this->SetWidgetDisabledState(ORDER_WIDGET_DELETE,
(uint)this->vehicle->num_orders + ((shared_orders || this->vehicle->num_orders != 0) ? 1 : 0) <= (uint)this->selected_order);
(uint)this->vehicle->GetNumOrders() + ((shared_orders || this->vehicle->GetNumOrders() != 0) ? 1 : 0) <= (uint)this->selected_order);
/* non-stop only for trains */
this->SetWidgetDisabledState(ORDER_WIDGET_NON_STOP, (this->vehicle->type != VEH_TRAIN && this->vehicle->type != VEH_ROAD) || order == NULL);
@ -836,7 +836,7 @@ public:
int sel = this->GetOrderFromPt(pt.y);
if (_ctrl_pressed && sel < this->vehicle->num_orders) {
if (_ctrl_pressed && sel < this->vehicle->GetNumOrders()) {
const Order *ord = GetVehicleOrder(this->vehicle, sel);
TileIndex xy = 0;
@ -1022,7 +1022,7 @@ public:
int from_order = this->OrderGetSel();
int to_order = this->GetOrderFromPt(pt.y);
if (!(from_order == to_order || from_order == INVALID_ORDER || from_order > this->vehicle->num_orders || to_order == INVALID_ORDER || to_order > this->vehicle->num_orders) &&
if (!(from_order == to_order || from_order == INVALID_ORDER || from_order > this->vehicle->GetNumOrders() || to_order == INVALID_ORDER || to_order > this->vehicle->GetNumOrders()) &&
DoCommandP(this->vehicle->tile, this->vehicle->index, from_order | (to_order << 16), CMD_MOVE_ORDER | CMD_MSG(STR_CAN_T_MOVE_THIS_ORDER))) {
this->selected_order = -1;
}

View File

@ -75,7 +75,7 @@ struct TimetableWindow : Window {
sel += this->vscroll.pos;
return (sel < v->num_orders * 2 && sel >= 0) ? sel : INVALID_ORDER;
return (sel < v->GetNumOrders() * 2 && sel >= 0) ? sel : INVALID_ORDER;
}
virtual void OnInvalidateData(int data)
@ -105,7 +105,7 @@ struct TimetableWindow : Window {
if (from == to) break; // no need to change anything
/* if from == INVALID_VEH_ORDER_ID, one order was added; if to == INVALID_VEH_ORDER_ID, one order was removed */
uint old_num_orders = this->vehicle->num_orders - (uint)(from == INVALID_VEH_ORDER_ID) + (uint)(to == INVALID_VEH_ORDER_ID);
uint old_num_orders = this->vehicle->GetNumOrders() - (uint)(from == INVALID_VEH_ORDER_ID) + (uint)(to == INVALID_VEH_ORDER_ID);
VehicleOrderID selected_order = (this->sel_index + 1) / 2;
if (selected_order == old_num_orders) selected_order = 0; // when last travel time is selected, it belongs to order 0
@ -133,7 +133,7 @@ struct TimetableWindow : Window {
/* recompute new sel_index */
this->sel_index = 2 * selected_order - (int)travel;
/* travel time of first order needs special handling */
if (this->sel_index == -1) this->sel_index = this->vehicle->num_orders * 2 - 1;
if (this->sel_index == -1) this->sel_index = this->vehicle->GetNumOrders() * 2 - 1;
} break;
}
}
@ -144,12 +144,12 @@ struct TimetableWindow : Window {
const Vehicle *v = this->vehicle;
int selected = this->sel_index;
SetVScrollCount(this, v->num_orders * 2);
SetVScrollCount(this, v->GetNumOrders() * 2);
if (v->owner == _local_company) {
bool disable = true;
if (selected != -1) {
const Order *order = GetVehicleOrder(v, ((selected + 1) / 2) % v->num_orders);
const Order *order = GetVehicleOrder(v, ((selected + 1) / 2) % v->GetNumOrders());
if (selected % 2 == 1) {
disable = order != NULL && order->IsType(OT_CONDITIONAL);
} else {
@ -190,7 +190,7 @@ struct TimetableWindow : Window {
order_id++;
if (order_id >= v->num_orders) {
if (order_id >= v->GetNumOrders()) {
order = GetVehicleOrder(v, 0);
final_order = true;
} else {
@ -249,7 +249,7 @@ struct TimetableWindow : Window {
uint order_number = (selected + 1) / 2;
uint is_journey = (selected % 2 == 1) ? 1 : 0;
if (order_number >= v->num_orders) order_number = 0;
if (order_number >= v->GetNumOrders()) order_number = 0;
return v->index | (order_number << 16) | (is_journey << 24);
}
@ -274,7 +274,7 @@ struct TimetableWindow : Window {
int selected = this->sel_index;
VehicleOrderID real = (selected + 1) / 2;
if (real >= v->num_orders) real = 0;
if (real >= v->GetNumOrders()) real = 0;
const Order *order = GetVehicleOrder(v, real);
StringID current = STR_EMPTY;

View File

@ -1454,7 +1454,7 @@ CommandCost CmdSellRailWagon(TileIndex tile, uint32 flags, uint32 p1, uint32 p2,
/* Copy orders (by sharing) */
new_f->orders = first->orders;
new_f->num_orders = first->num_orders;
new_f->num_orders = first->GetNumOrders();
new_f->AddToShared(first);
DeleteVehicleOrders(first);
@ -2360,7 +2360,7 @@ static void CheckNextTrainTile(Vehicle *v)
/* Exit if we are on a station tile and are going to stop. */
if (IsRailwayStationTile(v->tile) && v->current_order.ShouldStopAtStation(v, GetStationIndex(v->tile))) return;
/* Exit if the current order doesn't have a destination, but the train has orders. */
if ((v->current_order.IsType(OT_NOTHING) || v->current_order.IsType(OT_LEAVESTATION)) && v->num_orders > 0) return;
if ((v->current_order.IsType(OT_NOTHING) || v->current_order.IsType(OT_LEAVESTATION)) && v->GetNumOrders() > 0) return;
Trackdir td = GetVehicleTrackdir(v);
@ -2853,7 +2853,7 @@ public:
do {
/* Wrap around. */
if (this->index >= this->v->num_orders) this->index = 0;
if (this->index >= this->v->GetNumOrders()) this->index = 0;
Order *order = GetVehicleOrder(this->v, this->index);
assert(order != NULL);

View File

@ -512,6 +512,12 @@ public:
*/
inline bool IsOrderListShared() const { return this->previous_shared != NULL || this->next_shared != NULL; };
/**
* Get the number of orders this vehicle has.
* @return the number of orders this vehicle has.
*/
inline VehicleOrderID GetNumOrders() const { return this->num_orders; }
/**
* Copy certain configurations and statistics of a vehicle after successful autoreplace/renew
* The function shall copy everything that cannot be copied by a command (like orders / group etc),

View File

@ -1926,7 +1926,7 @@ struct VehicleViewWindow : Window {
/* fall-through if aircraft. Does this even happen? */
default:
if (v->num_orders == 0) {
if (v->GetNumOrders() == 0) {
str = STR_NO_ORDERS + _settings_client.gui.vehicle_speed;
SetDParam(0, v->GetDisplaySpeed());
} else {