File diff r8839:479975d442dd → r8840:f5c2213cf909
src/order_gui.cpp
Show inline comments
 
@@ -146,25 +146,25 @@ static void DrawOrdersWindow(Window *w)
 
		w->SetWidgetDisabledState(ORDER_WIDGET_SHARED_ORDER_LIST, !shared_orders || v->orders == NULL);
 
		w->SetWidgetDisabledState(ORDER_WIDGET_REFIT,     order == NULL); // Refit
 
		w->HideWidget(ORDER_WIDGET_REFIT); // Refit
 
	} else {
 
		w->DisableWidget(ORDER_WIDGET_TRANSFER);
 
	}
 

	
 
	w->ShowWidget(ORDER_WIDGET_UNLOAD); // Unload
 

	
 
	if (order != NULL) {
 
		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:
 
				w->DisableWidget(ORDER_WIDGET_FULL_LOAD);
 
				w->DisableWidget(ORDER_WIDGET_UNLOAD);
 
				w->DisableWidget(ORDER_WIDGET_TRANSFER);
 
				break;
 

	
 
			case OT_GOTO_DEPOT:
 
				w->DisableWidget(ORDER_WIDGET_TRANSFER);
 

	
 
				/* Remove unload and replace it with refit */
 
@@ -188,64 +188,64 @@ static void DrawOrdersWindow(Window *w)
 
	i = w->vscroll.pos;
 
	order = GetVehicleOrder(v, i);
 
	while (order != NULL) {
 
		str = (v->cur_order_index == i) ? STR_8805 : STR_8804;
 
		SetDParam(3, STR_EMPTY);
 

	
 
		if (i - w->vscroll.pos < w->vscroll.cap) {
 
			SetDParam(1, 6);
 

	
 
			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(2, order->GetDestination());
 
					break;
 

	
 
				case OT_GOTO_DEPOT: {
 
					StringID s = STR_NULL;
 

	
 
					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_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 */
 

	
 
					SetDParam(1, s);
 
					if (order->IsRefit()) {
 
						SetDParam(3, STR_REFIT_ORDER);
 
						SetDParam(4, GetCargo(order->GetRefitCargo())->name);
 
					} else {
 
						SetDParam(3, STR_EMPTY);
 
					}
 
					break;
 
				}
 

	
 
				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(2, order->GetDestination());
 
					break;
 

	
 
				default: break;
 
			}
 

	
 
			SetDParam(0, i + 1);
 
			DrawString(2, y, str, (i == WP(w, order_d).sel) ? TC_WHITE : TC_BLACK);
 

	
 
			y += 10;
 
		}
 

	
 
		i++;
 
@@ -326,25 +326,24 @@ static Order GetOrderCmdFromTile(const V
 
			(facil=FACIL_AIRPORT, v->type == VEH_AIRCRAFT) ||
 
			(facil=FACIL_BUS_STOP, v->type == VEH_ROAD && IsCargoInClass(v->cargo_type, CC_PASSENGERS)) ||
 
			(facil=FACIL_TRUCK_STOP, 1);
 
			if (st->facilities & facil) {
 
				order.MakeGoToStation(st_index);
 
				return order;
 
			}
 
		}
 
	}
 

	
 
	// not found
 
	order.Free();
 
	order.dest = INVALID_STATION;
 
	return order;
 
}
 

	
 
static bool HandleOrderVehClick(const Vehicle *v, const Vehicle *u, Window *w)
 
{
 
	if (u->type != v->type) return false;
 

	
 
	if (!u->IsPrimaryVehicle()) {
 
		u = u->First();
 
		if (!u->IsPrimaryVehicle()) return false;
 
	}
 

	
 
@@ -554,27 +553,27 @@ static void OrdersWndProc(Window *w, Win
 
				/* This was a click on an empty part of the orders window, so
 
				 * deselect the currently selected order. */
 
				WP(w, order_d).sel = -1;
 
				SetWindowDirty(w);
 
				return;
 
			}
 

	
 
			if (_ctrl_pressed && sel < v->num_orders) {
 
				const Order *ord = GetVehicleOrder(v, sel);
 
				TileIndex xy;
 

	
 
				switch (ord->GetType()) {
 
					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;
 
					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;
 
				}
 

	
 
				if (xy != 0) ScrollMainWindowToTile(xy);
 
				return;
 
			} else {
 
				if (sel == WP(w, order_d).sel) {
 
					/* Deselect clicked order */
 
					WP(w, order_d).sel = -1;
 
				} else {
 
					/* Select clicked order */
 
					WP(w, order_d).sel = sel;