Merge branch 'master' into jgrpp
# Conflicts: # src/build_vehicle_gui.cpp # src/cheat_gui.cpp # src/company_gui.cpp # src/error_gui.cpp # src/fios_gui.cpp # src/gfx_func.h # src/graph_gui.cpp # src/group_gui.cpp # src/misc_gui.cpp # src/newgrf_debug_gui.cpp # src/order_gui.cpp # src/road_gui.cpp # src/roadveh_gui.cpp # src/settings_gui.cpp # src/ship_gui.cpp # src/station_gui.cpp # src/statusbar_gui.cpp # src/subsidy_gui.cpp # src/timetable_gui.cpp # src/town_gui.cpp # src/train_gui.cpp # src/tree_gui.cpp # src/vehicle_gui.cpp # src/widget.cpp # src/widgets/dropdown.cpp # src/window_gui.h
This commit is contained in:
@@ -670,7 +670,7 @@ struct TimetableWindow : GeneralVehicleWindow {
|
||||
|
||||
switch (widget) {
|
||||
case WID_VT_TIMETABLE_PANEL: {
|
||||
int y = r.top + WD_FRAMERECT_TOP;
|
||||
Rect tr = r.Shrink(WD_FRAMERECT_LEFT, WD_FRAMERECT_TOP, WD_FRAMERECT_RIGHT, WD_FRAMERECT_BOTTOM);
|
||||
int i = this->vscroll->GetPosition();
|
||||
Dimension lock_d = GetSpriteSize(SPR_LOCK);
|
||||
int line_height = std::max<int>(FONT_HEIGHT_NORMAL, lock_d.height);
|
||||
@@ -680,7 +680,7 @@ struct TimetableWindow : GeneralVehicleWindow {
|
||||
bool rtl = _current_text_dir == TD_RTL;
|
||||
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;
|
||||
int middle = rtl ? tr.right - index_column_width : tr.left + index_column_width;
|
||||
|
||||
const Order *order = v->GetOrder(order_id);
|
||||
while (order != nullptr) {
|
||||
@@ -688,7 +688,7 @@ struct TimetableWindow : GeneralVehicleWindow {
|
||||
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);
|
||||
DrawOrderString(v, order, order_id, tr.top, i == selected, true, tr.left, middle, tr.right);
|
||||
|
||||
order_id++;
|
||||
|
||||
@@ -724,16 +724,16 @@ struct TimetableWindow : GeneralVehicleWindow {
|
||||
}
|
||||
SetDParam(string == STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED ? 2 : 4, order->GetMaxSpeed());
|
||||
|
||||
int edge = DrawString(rtl ? r.left + WD_FRAMERECT_LEFT : middle, rtl ? middle : r.right - WD_FRAMERECT_LEFT, y, string, colour);
|
||||
int edge = DrawString(rtl ? tr.left : middle, rtl ? middle : tr.right, tr.top, string, colour);
|
||||
|
||||
if (order->IsTravelFixed()) {
|
||||
Dimension lock_d = GetSpriteSize(SPR_LOCK);
|
||||
DrawPixelInfo tmp_dpi;
|
||||
if (FillDrawPixelInfo(&tmp_dpi, rtl ? r.left + WD_FRAMERECT_LEFT : middle, y, rtl ? middle : r.right - WD_FRAMERECT_LEFT, lock_d.height)) {
|
||||
if (FillDrawPixelInfo(&tmp_dpi, rtl ? tr.left : middle, tr.top, rtl ? middle : tr.right, lock_d.height)) {
|
||||
DrawPixelInfo *old_dpi = _cur_dpi;
|
||||
_cur_dpi = &tmp_dpi;
|
||||
|
||||
DrawSprite(SPR_LOCK, PAL_NONE, rtl ? edge - 3 - lock_d.width - (r.left + WD_FRAMERECT_LEFT) : edge + 3 - middle, 0);
|
||||
DrawSprite(SPR_LOCK, PAL_NONE, rtl ? edge - 3 - lock_d.width - tr.left : edge + 3 - middle, 0);
|
||||
|
||||
_cur_dpi = old_dpi;
|
||||
}
|
||||
@@ -743,7 +743,7 @@ struct TimetableWindow : GeneralVehicleWindow {
|
||||
}
|
||||
|
||||
i++;
|
||||
y += line_height;
|
||||
tr.top += line_height;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -761,7 +761,7 @@ struct TimetableWindow : GeneralVehicleWindow {
|
||||
|
||||
VehicleOrderID earlyID = BuildArrivalDepartureList(v, arr_dep) ? cur_order : (VehicleOrderID)INVALID_VEH_ORDER_ID;
|
||||
|
||||
int y = r.top + WD_FRAMERECT_TOP;
|
||||
Rect tr = r.Shrink(WD_FRAMERECT_LEFT, WD_FRAMERECT_TOP, WD_FRAMERECT_RIGHT, WD_FRAMERECT_BOTTOM);
|
||||
Dimension lock_d = GetSpriteSize(SPR_LOCK);
|
||||
int line_height = std::max<int>(FONT_HEIGHT_NORMAL, lock_d.height);
|
||||
|
||||
@@ -769,10 +769,8 @@ struct TimetableWindow : GeneralVehicleWindow {
|
||||
Ticks offset = show_late ? 0 : -v->lateness_counter;
|
||||
|
||||
bool rtl = _current_text_dir == TD_RTL;
|
||||
int abbr_left = rtl ? r.right - WD_FRAMERECT_RIGHT - this->deparr_abbr_width : r.left + WD_FRAMERECT_LEFT;
|
||||
int abbr_right = rtl ? r.right - WD_FRAMERECT_RIGHT : r.left + WD_FRAMERECT_LEFT + this->deparr_abbr_width;
|
||||
int time_left = rtl ? r.left + WD_FRAMERECT_LEFT : r.right - WD_FRAMERECT_RIGHT - this->deparr_time_width;
|
||||
int time_right = rtl ? r.left + WD_FRAMERECT_LEFT + this->deparr_time_width : r.right - WD_FRAMERECT_RIGHT;
|
||||
Rect abbr = tr.WithWidth(this->deparr_abbr_width, rtl);
|
||||
Rect time = tr.WithWidth(this->deparr_time_width, !rtl);
|
||||
|
||||
for (int i = this->vscroll->GetPosition(); i / 2 < v->GetNumOrders(); ++i) { // note: i is also incremented in the loop
|
||||
/* Don't draw anything if it extends past the end of the window. */
|
||||
@@ -780,56 +778,56 @@ struct TimetableWindow : GeneralVehicleWindow {
|
||||
|
||||
if (i % 2 == 0) {
|
||||
if (arr_dep[i / 2].arrival != INVALID_TICKS) {
|
||||
DrawString(abbr_left, abbr_right, y, STR_TIMETABLE_ARRIVAL_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK);
|
||||
DrawString(abbr.left, abbr.right, tr.top, STR_TIMETABLE_ARRIVAL_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK);
|
||||
if (this->show_expected && i / 2 == earlyID) {
|
||||
SetDParam(0, _scaled_date_ticks + arr_dep[i / 2].arrival);
|
||||
DrawString(time_left, time_right, y, STR_JUST_DATE_WALLCLOCK_TINY, TC_GREEN);
|
||||
DrawString(time.left, time.right, tr.top, STR_JUST_DATE_WALLCLOCK_TINY, TC_GREEN);
|
||||
} else {
|
||||
SetDParam(0, _scaled_date_ticks + arr_dep[i / 2].arrival + (HasBit(arr_dep[i / 2].flags, TADF_ARRIVAL_NO_OFFSET) ? 0 : offset));
|
||||
DrawString(time_left, time_right, y, STR_JUST_DATE_WALLCLOCK_TINY,
|
||||
DrawString(time.left, time.right, tr.top, STR_JUST_DATE_WALLCLOCK_TINY,
|
||||
HasBit(arr_dep[i / 2].flags, TADF_ARRIVAL_PREDICTED) ? (TextColour)(TC_IS_PALETTE_COLOUR | TC_NO_SHADE | 4) : (show_late ? TC_RED : i == selected ? TC_WHITE : TC_BLACK));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (arr_dep[i / 2].departure != INVALID_TICKS) {
|
||||
DrawString(abbr_left, abbr_right, y, STR_TIMETABLE_DEPARTURE_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK);
|
||||
DrawString(abbr.left, abbr.right, tr.top, STR_TIMETABLE_DEPARTURE_ABBREVIATION, i == selected ? TC_WHITE : TC_BLACK);
|
||||
SetDParam(0, _scaled_date_ticks + arr_dep[i/2].departure + (HasBit(arr_dep[i / 2].flags, TADF_DEPARTURE_NO_OFFSET) ? 0 : offset));
|
||||
DrawString(time_left, time_right, y, STR_JUST_DATE_WALLCLOCK_TINY,
|
||||
DrawString(time.left, time.right, tr.top, STR_JUST_DATE_WALLCLOCK_TINY,
|
||||
HasBit(arr_dep[i / 2].flags, TADF_DEPARTURE_PREDICTED) ? (TextColour)(TC_IS_PALETTE_COLOUR | TC_NO_SHADE | 4) : (show_late ? TC_RED : i == selected ? TC_WHITE : TC_BLACK));
|
||||
}
|
||||
}
|
||||
y += line_height;
|
||||
tr.top += line_height;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_VT_SUMMARY_PANEL: {
|
||||
int y = r.top + WD_FRAMERECT_TOP;
|
||||
Rect tr = r.Shrink(WD_FRAMERECT_LEFT, WD_FRAMERECT_TOP, WD_FRAMERECT_RIGHT, WD_FRAMERECT_BOTTOM);
|
||||
|
||||
Ticks total_time = v->orders != nullptr ? v->orders->GetTimetableDurationIncomplete() : 0;
|
||||
if (total_time != 0) {
|
||||
SetTimetableParams(0, total_time);
|
||||
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, v->orders->IsCompleteTimetable() ? STR_TIMETABLE_TOTAL_TIME : STR_TIMETABLE_TOTAL_TIME_INCOMPLETE);
|
||||
DrawString(tr, v->orders->IsCompleteTimetable() ? STR_TIMETABLE_TOTAL_TIME : STR_TIMETABLE_TOTAL_TIME_INCOMPLETE);
|
||||
}
|
||||
y += FONT_HEIGHT_NORMAL;
|
||||
tr.top += FONT_HEIGHT_NORMAL;
|
||||
|
||||
if (v->timetable_start != 0) {
|
||||
/* We are running towards the first station so we can start the
|
||||
* timetable at the given time. */
|
||||
SetDParam(0, STR_JUST_DATE_WALLCLOCK_TINY);
|
||||
SetDParam(1, (((DateTicksScaled) v->timetable_start) * _settings_game.economy.day_length_factor) + v->timetable_start_subticks);
|
||||
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_TIMETABLE_STATUS_START_AT);
|
||||
DrawString(tr, STR_TIMETABLE_STATUS_START_AT);
|
||||
} else if (!HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED)) {
|
||||
/* We aren't running on a timetable yet, so how can we be "on time"
|
||||
* when we aren't even "on service"/"on duty"? */
|
||||
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_TIMETABLE_STATUS_NOT_STARTED);
|
||||
DrawString(tr, STR_TIMETABLE_STATUS_NOT_STARTED);
|
||||
} else if (v->lateness_counter == 0 || (!_settings_client.gui.timetable_in_ticks && v->lateness_counter / DATE_UNIT_SIZE == 0)) {
|
||||
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_TIMETABLE_STATUS_ON_TIME);
|
||||
DrawString(tr, STR_TIMETABLE_STATUS_ON_TIME);
|
||||
} else {
|
||||
SetTimetableParams(0, abs(v->lateness_counter));
|
||||
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, v->lateness_counter < 0 ? STR_TIMETABLE_STATUS_EARLY : STR_TIMETABLE_STATUS_LATE);
|
||||
DrawString(tr, v->lateness_counter < 0 ? STR_TIMETABLE_STATUS_EARLY : STR_TIMETABLE_STATUS_LATE);
|
||||
}
|
||||
y += FONT_HEIGHT_NORMAL;
|
||||
tr.top += FONT_HEIGHT_NORMAL;
|
||||
|
||||
{
|
||||
const Dimension warning_dimensions = GetSpriteSize(SPR_WARNING_SIGN);
|
||||
@@ -839,18 +837,18 @@ struct TimetableWindow : GeneralVehicleWindow {
|
||||
const bool rtl = _current_text_dir == TD_RTL;
|
||||
|
||||
auto draw_warning = [&](StringID text, bool warning) {
|
||||
int left = r.left + WD_FRAMERECT_LEFT;
|
||||
int right = r.right - WD_FRAMERECT_RIGHT;
|
||||
int left = tr.left;
|
||||
int right = tr.right;
|
||||
if (warning) {
|
||||
DrawSprite(SPR_WARNING_SIGN, 0, rtl ? right - warning_dimensions.width - 5 : left + 5, y + warning_offset_y);
|
||||
DrawSprite(SPR_WARNING_SIGN, 0, rtl ? right - warning_dimensions.width - 5 : left + 5, tr.top + warning_offset_y);
|
||||
if (rtl) {
|
||||
right -= (warning_dimensions.width + 10);
|
||||
} else {
|
||||
left += (warning_dimensions.width + 10);
|
||||
}
|
||||
}
|
||||
DrawString(left, right, y + text_offset_y, text);
|
||||
y += step_height;
|
||||
DrawString(left, right, tr.top + text_offset_y, text);
|
||||
tr.top += step_height;
|
||||
};
|
||||
|
||||
int warning_count = 0;
|
||||
|
Reference in New Issue
Block a user