|
@@ -191,25 +191,25 @@ struct TimetableWindow : Window {
|
|
|
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;
|
|
@@ -359,25 +359,25 @@ struct TimetableWindow : Window {
|
|
|
{
|
|
|
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++;
|