Changeset - r10544:3093e218ea50
[Not reviewed]
master
0 7 0
rubidium - 15 years ago 2009-01-03 13:20:32
rubidium@openttd.org
(svn r14801) -Codechange: don't reference Vehicle::num_orders directly but through a method GetNumOrders() (PhilSophus)
7 files changed with 50 insertions and 44 deletions:
0 comments (0 inline, 0 general)
src/newgrf_engine.cpp
Show inline comments
 
@@ -655,7 +655,7 @@ static uint32 VehicleGetVariable(const R
 
		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);
src/order_cmd.cpp
Show inline comments
 
@@ -310,7 +310,7 @@ static TileIndex GetOrderLocation(const 
 
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 til
 

	
 
		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 til
 
		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 til
 
			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 til
 
					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 til
 
	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 til
 
					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 til
 
	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,
 
	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 til
 
	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 til
 
			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
 
				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
 
			}
 

	
 
			/* 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
 
					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(TileInd
 

	
 
	/* 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 O
 
			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 O
 
			}
 

	
 
			/* 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);
 

	
src/order_gui.cpp
Show inline comments
 
@@ -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;
 
				}
src/timetable_gui.cpp
Show inline comments
 
@@ -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;
src/train_cmd.cpp
Show inline comments
 
@@ -1454,7 +1454,7 @@ CommandCost CmdSellRailWagon(TileIndex t
 

	
 
							/* 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 *
 
	/* 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);
src/vehicle_base.h
Show inline comments
 
@@ -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),
src/vehicle_gui.cpp
Show inline comments
 
@@ -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 {
0 comments (0 inline, 0 general)