Cargo payment rate graph: Use minutes for x-axis if in minutes mode

See: #541
pull/556/head
Jonathan G Rennison 1 year ago
parent b080433394
commit 2b897e6694

@ -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<uint, uint> 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),

@ -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

@ -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();
}

Loading…
Cancel
Save