File diff r19845:1a7e8f4e03df → r19846:75a27628493b
src/timetable_gui.cpp
Show inline comments
 
@@ -179,49 +179,49 @@ struct TimetableWindow : Window {
 
	}
 

	
 
	/**
 
	 * Build the arrival-departure list for a given vehicle
 
	 * @param v the vehicle to make the list for
 
	 * @param table the table to fill
 
	 * @return if next arrival will be early
 
	 */
 
	static bool BuildArrivalDepartureList(const Vehicle *v, TimetableArrivalDeparture *table)
 
	{
 
		assert(HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED));
 

	
 
		bool travelling = (!v->current_order.IsType(OT_LOADING) || v->current_order.GetNonStopType() == ONSF_STOP_EVERYWHERE);
 
		Ticks start_time = _date_fract - v->current_order_time;
 

	
 
		FillTimetableArrivalDepartureTable(v, v->cur_real_order_index % v->GetNumOrders(), travelling, table, start_time);
 

	
 
		return (travelling && v->lateness_counter < 0);
 
	}
 

	
 
	virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
 
	{
 
		switch (widget) {
 
			case WID_VT_ARRIVAL_DEPARTURE_PANEL:
 
				SetDParam(0, MAX_YEAR * DAYS_IN_YEAR);
 
				SetDParamMaxValue(0, MAX_YEAR * DAYS_IN_YEAR);
 
				this->deparr_time_width = GetStringBoundingBox(STR_JUST_DATE_TINY).width;
 
				this->deparr_abbr_width = max(GetStringBoundingBox(STR_TIMETABLE_ARRIVAL_ABBREVIATION).width, GetStringBoundingBox(STR_TIMETABLE_DEPARTURE_ABBREVIATION).width);
 
				size->width = WD_FRAMERECT_LEFT + this->deparr_abbr_width + 10 + this->deparr_time_width + WD_FRAMERECT_RIGHT;
 
				/* FALL THROUGH */
 
			case WID_VT_ARRIVAL_DEPARTURE_SELECTION:
 
			case WID_VT_TIMETABLE_PANEL:
 
				resize->height = FONT_HEIGHT_NORMAL;
 
				size->height = WD_FRAMERECT_TOP + 8 * resize->height + WD_FRAMERECT_BOTTOM;
 
				break;
 

	
 
			case WID_VT_SUMMARY_PANEL:
 
				size->height = WD_FRAMERECT_TOP + 2 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM;
 
				break;
 
		}
 
	}
 

	
 
	int GetOrderFromTimetableWndPt(int y, const Vehicle *v)
 
	{
 
		int sel = (y - this->GetWidget<NWidgetBase>(WID_VT_TIMETABLE_PANEL)->pos_y - WD_FRAMERECT_TOP) / FONT_HEIGHT_NORMAL;
 

	
 
		if ((uint)sel >= this->vscroll->GetCapacity()) return INVALID_ORDER;
 

	
 
		sel += this->vscroll->GetPosition();
 

	
 
@@ -347,49 +347,49 @@ struct TimetableWindow : Window {
 
		this->DrawWidgets();
 
	}
 

	
 
	virtual void SetStringParameters(int widget) const
 
	{
 
		switch (widget) {
 
			case WID_VT_CAPTION: SetDParam(0, this->vehicle->index); break;
 
			case WID_VT_EXPECTED: SetDParam(0, this->show_expected ? STR_TIMETABLE_EXPECTED : STR_TIMETABLE_SCHEDULED); break;
 
		}
 
	}
 

	
 
	virtual void DrawWidget(const Rect &r, int widget) const
 
	{
 
		const Vehicle *v = this->vehicle;
 
		int selected = this->sel_index;
 

	
 
		switch (widget) {
 
			case WID_VT_TIMETABLE_PANEL: {
 
				int y = r.top + WD_FRAMERECT_TOP;
 
				int i = this->vscroll->GetPosition();
 
				VehicleOrderID order_id = (i + 1) / 2;
 
				bool final_order = false;
 

	
 
				bool rtl = _current_text_dir == TD_RTL;
 
				SetDParam(0, 99);
 
				SetDParamMaxValue(0, v->GetNumOrders(), 2);
 
				int index_column_width = GetStringBoundingBox(STR_ORDER_INDEX).width + 2 * GetSpriteSize(rtl ? SPR_ARROW_RIGHT : SPR_ARROW_LEFT).width + 3;
 
				int middle = rtl ? r.right - WD_FRAMERECT_RIGHT - index_column_width : r.left + WD_FRAMERECT_LEFT + index_column_width;
 

	
 
				const Order *order = v->GetOrder(order_id);
 
				while (order != NULL) {
 
					/* Don't draw anything if it extends past the end of the window. */
 
					if (!this->vscroll->IsVisible(i)) break;
 

	
 
					if (i % 2 == 0) {
 
						DrawOrderString(v, order, order_id, y, i == selected, true, r.left + WD_FRAMERECT_LEFT, middle, r.right - WD_FRAMERECT_RIGHT);
 

	
 
						order_id++;
 

	
 
						if (order_id >= v->GetNumOrders()) {
 
							order = v->GetOrder(0);
 
							final_order = true;
 
						} else {
 
							order = order->next;
 
						}
 
					} else {
 
						StringID string;
 
						TextColour colour = (i == selected) ? TC_WHITE : TC_BLACK;
 
						if (order->IsType(OT_CONDITIONAL)) {
 
							string = STR_TIMETABLE_NO_TRAVEL;