diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp index c2535a05d0..0bfe56e874 100644 --- a/src/graph_gui.cpp +++ b/src/graph_gui.cpp @@ -1199,22 +1199,36 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { this->x_values_increment = x_scale; } - uint GetXAxisDecimals() const - { - if (_cargo_payment_x_mode) return 0; - if ((10 % _settings_game.economy.day_length_factor) == 0) return 0; - if (_settings_game.economy.day_length_factor > 50) return 2; - return 1; - } - std::pair ProcessXAxisValue(uint16 label) const { uint val = label; - uint decimals = this->GetXAxisDecimals(); - for (uint i = 0; i < decimals; i++) { - val *= 10; + uint decimals; + if (_cargo_payment_x_mode) { + decimals = 0; + } else if (_settings_time.time_in_minutes) { + if (_settings_time.ticks_per_minute <= 350 || 740 % _settings_time.ticks_per_minute == 0) { + decimals = 0; + } else if (_settings_time.ticks_per_minute > 7400) { + val *= 100; + decimals = 2; + } else { + val *= 10; + decimals = 1; + } + val *= 74; + val /= _settings_time.ticks_per_minute; + } else { + if ((10 % _settings_game.economy.day_length_factor) == 0) { + decimals = 0; + } else if (_settings_game.economy.day_length_factor > 50) { + decimals = 2; + val *= 100; + } else { + decimals = 1; + val *= 10; + } + val /= _settings_game.economy.day_length_factor; } - val /= _settings_game.economy.day_length_factor; return { val, decimals }; } @@ -1409,7 +1423,11 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { SetDParam(0, STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL_SPEED); SetDParam(1, STR_UNIT_NAME_VELOCITY_IMPERIAL + _settings_game.locale.units_velocity); } else { - SetDParam(0, STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL); + if (_settings_time.time_in_minutes) { + SetDParam(0, STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL_MINUTES); + } else { + SetDParam(0, STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL); + } } break; @@ -1420,6 +1438,14 @@ struct PaymentRatesGraphWindow : BaseGraphWindow { SetDParam(0, STR_GRAPH_CARGO_PAYMENT_RATES_TITLE); } break; + + case WID_CPR_DAYS: + if (_settings_time.time_in_minutes) { + SetDParam(0, STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL_MINUTES); + } else { + SetDParam(0, STR_GRAPH_CARGO_DAYS_MODE); + } + break; } } }; @@ -1440,7 +1466,7 @@ static const NWidgetPart _nested_cargo_payment_rates_widgets[] = { NWidget(WWT_EMPTY, COLOUR_BROWN, WID_CPR_GRAPH), SetMinimalSize(495, 0), SetFill(1, 1), SetResize(1, 1), NWidget(NWID_VERTICAL), NWidget(NWID_SPACER), SetMinimalSize(0, 4), - NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_CPR_DAYS), SetDataTip(STR_GRAPH_CARGO_DAYS_MODE, STR_GRAPH_CARGO_TOOLTIP_DAYS_MODE), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_CPR_DAYS), SetDataTip(STR_JUST_STRING, STR_GRAPH_CARGO_TOOLTIP_DAYS_MODE), SetFill(1, 0), NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_CPR_SPEED), SetDataTip(STR_GRAPH_CARGO_SPEED_MODE, STR_GRAPH_CARGO_TOOLTIP_SPEED_MODE), SetFill(1, 0), NWidget(NWID_SPACER), SetMinimalSize(0, 16), SetFill(0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CPR_ENABLE_CARGOES), SetDataTip(STR_GRAPH_CARGO_ENABLE_ALL, STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL), SetFill(1, 0), diff --git a/src/lang/extra/english.txt b/src/lang/extra/english.txt index c032e2d54a..12b956dbc8 100644 --- a/src/lang/extra/english.txt +++ b/src/lang/extra/english.txt @@ -118,6 +118,7 @@ STR_VEHICLE_TYPE_AIRCRAFT :Aircraft STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL_SPEED :{TINY_FONT}{BLACK}Average transit speed ({STRING}) STR_GRAPH_CARGO_PAYMENT_RATES_TITLE_AVG_SPEED :{TINY_FONT}{BLACK}Payment for delivering 1 unit (or 1,000 litres) of cargo a distance of 200 squares +STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL_MINUTES :{TINY_FONT}{BLACK}Minutes in transit STR_GRAPH_STATION_CARGO_CAPTION :{WHITE}{STATION} - Waiting Cargo History STR_GRAPH_STATION_CARGO_X_LABEL :{TINY_FONT}{BLACK}Development over the last {NUM} days STR_GRAPH_STATION_CARGO_TITLE :{TINY_FONT}{BLACK}Units of cargo waiting at the station diff --git a/src/settings.cpp b/src/settings.cpp index 6c023cac41..4d0cd845e0 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1275,6 +1275,7 @@ static void UpdateTimeSettings(int32 new_value) InvalidateWindowData(WC_STATUS_BAR, 0, SBI_REINIT); InvalidateWindowClassesData(WC_GAME_OPTIONS); InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); + InvalidateWindowClassesData(WC_PAYMENT_RATES); MarkWholeScreenDirty(); }