Enable economy day length scaling in wallclock timekeeping mode
This commit is contained in:
@@ -788,10 +788,10 @@ static int DrawCargoCapacityInfo(int left, int right, int y, TestedEngineDetails
|
|||||||
|
|
||||||
static StringID GetRunningCostString()
|
static StringID GetRunningCostString()
|
||||||
{
|
{
|
||||||
if (EconTime::UsingWallclockUnits()) {
|
if (DayLengthFactor() > 1 && !_settings_client.gui.show_running_costs_calendar_year) {
|
||||||
return STR_PURCHASE_INFO_RUNNINGCOST_PERIOD;
|
|
||||||
} else if (DayLengthFactor() > 1 && !_settings_client.gui.show_running_costs_calendar_year) {
|
|
||||||
return STR_PURCHASE_INFO_RUNNINGCOST_ORIG_YEAR;
|
return STR_PURCHASE_INFO_RUNNINGCOST_ORIG_YEAR;
|
||||||
|
} else if (EconTime::UsingWallclockUnits()) {
|
||||||
|
return STR_PURCHASE_INFO_RUNNINGCOST_PERIOD;
|
||||||
} else {
|
} else {
|
||||||
return STR_PURCHASE_INFO_RUNNINGCOST_YEAR;
|
return STR_PURCHASE_INFO_RUNNINGCOST_YEAR;
|
||||||
}
|
}
|
||||||
|
@@ -467,7 +467,7 @@ static void OnNewEconomyDay()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void IncreaseCalendarDate()
|
void IncreaseCalendarDate()
|
||||||
{
|
{
|
||||||
/* If calendar day progress is frozen, don't try to advance time. */
|
/* If calendar day progress is frozen, don't try to advance time. */
|
||||||
if (CalTime::IsCalendarFrozen()) return;
|
if (CalTime::IsCalendarFrozen()) return;
|
||||||
|
@@ -204,10 +204,10 @@ static StringID ProcessEngineCapacityString(StringID str)
|
|||||||
|
|
||||||
static StringID GetRunningCostString()
|
static StringID GetRunningCostString()
|
||||||
{
|
{
|
||||||
if (EconTime::UsingWallclockUnits()) {
|
if (DayLengthFactor() > 1 && !_settings_client.gui.show_running_costs_calendar_year) {
|
||||||
return STR_ENGINE_PREVIEW_RUNCOST_PERIOD;
|
|
||||||
} else if (DayLengthFactor() > 1 && !_settings_client.gui.show_running_costs_calendar_year) {
|
|
||||||
return STR_ENGINE_PREVIEW_RUNCOST_ORIG_YEAR;
|
return STR_ENGINE_PREVIEW_RUNCOST_ORIG_YEAR;
|
||||||
|
} else if (EconTime::UsingWallclockUnits()) {
|
||||||
|
return STR_ENGINE_PREVIEW_RUNCOST_PERIOD;
|
||||||
} else {
|
} else {
|
||||||
return STR_ENGINE_PREVIEW_RUNCOST_YEAR;
|
return STR_ENGINE_PREVIEW_RUNCOST_YEAR;
|
||||||
}
|
}
|
||||||
|
@@ -525,7 +525,7 @@ protected:
|
|||||||
if (EconTime::UsingWallclockUnits()) {
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
auto *wid = this->GetWidget<NWidgetCore>(WID_GRAPH_FOOTER);
|
auto *wid = this->GetWidget<NWidgetCore>(WID_GRAPH_FOOTER);
|
||||||
if (wid != nullptr) {
|
if (wid != nullptr) {
|
||||||
wid->SetDataTip(STR_GRAPH_LAST_72_MINUTES_TIME_LABEL, STR_NULL);
|
wid->SetDataTip((DayLengthFactor() > 1) ? STR_GRAPH_LAST_72_PRODUCTION_INTERVALS_TIME_LABEL : STR_GRAPH_LAST_72_MINUTES_TIME_LABEL, STR_NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -929,7 +929,7 @@ struct DeliveredCargoGraphWindow : ExcludingCargoBaseGraphWindow {
|
|||||||
if (EconTime::UsingWallclockUnits()) {
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
auto *wid = this->GetWidget<NWidgetCore>(WID_GRAPH_FOOTER);
|
auto *wid = this->GetWidget<NWidgetCore>(WID_GRAPH_FOOTER);
|
||||||
if (wid != nullptr) {
|
if (wid != nullptr) {
|
||||||
wid->SetDataTip(STR_GRAPH_LAST_72_MINUTES_TIME_LABEL, STR_NULL);
|
wid->SetDataTip((DayLengthFactor() > 1) ? STR_GRAPH_LAST_72_PRODUCTION_INTERVALS_TIME_LABEL : STR_GRAPH_LAST_72_MINUTES_TIME_LABEL, STR_NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1301,6 +1301,8 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
|
|||||||
}
|
}
|
||||||
val *= 74;
|
val *= 74;
|
||||||
val /= _settings_time.ticks_per_minute;
|
val /= _settings_time.ticks_per_minute;
|
||||||
|
} else if (EconTime::UsingWallclockUnits()) {
|
||||||
|
decimals = 0;
|
||||||
} else {
|
} else {
|
||||||
if ((10 % DayLengthFactor()) == 0) {
|
if ((10 % DayLengthFactor()) == 0) {
|
||||||
decimals = 0;
|
decimals = 0;
|
||||||
@@ -1897,7 +1899,7 @@ struct StationCargoGraphWindow final : BaseGraphWindow {
|
|||||||
this->num_on_x_axis = MAX_STATION_CARGO_HISTORY_DAYS; // Four weeks
|
this->num_on_x_axis = MAX_STATION_CARGO_HISTORY_DAYS; // Four weeks
|
||||||
this->num_vert_lines = MAX_STATION_CARGO_HISTORY_DAYS;
|
this->num_vert_lines = MAX_STATION_CARGO_HISTORY_DAYS;
|
||||||
this->draw_dates = false;
|
this->draw_dates = false;
|
||||||
const uint16_t x_unit = EconTime::UsingWallclockUnits() ? 4 : 2;
|
const uint16_t x_unit = EconTime::UsingWallclockUnits() ? 4 * DayLengthFactor() : 2;
|
||||||
this->x_values_start = x_unit;
|
this->x_values_start = x_unit;
|
||||||
this->x_values_increment = x_unit;
|
this->x_values_increment = x_unit;
|
||||||
|
|
||||||
@@ -1924,7 +1926,7 @@ struct StationCargoGraphWindow final : BaseGraphWindow {
|
|||||||
}
|
}
|
||||||
if (widget == WID_GRAPH_FOOTER_CUSTOM) {
|
if (widget == WID_GRAPH_FOOTER_CUSTOM) {
|
||||||
SetDParam(0, EconTime::UsingWallclockUnits() ? STR_GRAPH_STATION_CARGO_X_LABEL_SECONDS : STR_GRAPH_STATION_CARGO_X_LABEL_DAYS);
|
SetDParam(0, EconTime::UsingWallclockUnits() ? STR_GRAPH_STATION_CARGO_X_LABEL_SECONDS : STR_GRAPH_STATION_CARGO_X_LABEL_DAYS);
|
||||||
SetDParam(1, EconTime::UsingWallclockUnits() ? 96 : 48);
|
SetDParam(1, EconTime::UsingWallclockUnits() ? 96 * DayLengthFactor() : 48);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -960,7 +960,11 @@ public:
|
|||||||
if (i->produced_cargo[j] == INVALID_CARGO) continue;
|
if (i->produced_cargo[j] == INVALID_CARGO) continue;
|
||||||
if (first) {
|
if (first) {
|
||||||
if (has_accept) ir.top += WidgetDimensions::scaled.vsep_wide;
|
if (has_accept) ir.top += WidgetDimensions::scaled.vsep_wide;
|
||||||
DrawString(ir, EconTime::UsingWallclockUnits() ? STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE : STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE);
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
|
DrawString(ir, (DayLengthFactor() > 1) ? STR_INDUSTRY_VIEW_PRODUCTION_LAST_PRODUCTION_INTERVAL_TITLE : STR_INDUSTRY_VIEW_PRODUCTION_LAST_MINUTE_TITLE);
|
||||||
|
} else {
|
||||||
|
DrawString(ir, STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE);
|
||||||
|
}
|
||||||
ir.top += GetCharacterHeight(FS_NORMAL);
|
ir.top += GetCharacterHeight(FS_NORMAL);
|
||||||
if (this->editable == EA_RATE) this->production_offset_y = ir.top;
|
if (this->editable == EA_RATE) this->production_offset_y = ir.top;
|
||||||
first = false;
|
first = false;
|
||||||
|
@@ -74,6 +74,12 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_MINUTES_CUSTOM :Every {COMMA}{N
|
|||||||
STR_RIVERS_VERY_MANY :{RED}Very many
|
STR_RIVERS_VERY_MANY :{RED}Very many
|
||||||
STR_RIVERS_EXTREMELY_MANY :{RED}Extremely many
|
STR_RIVERS_EXTREMELY_MANY :{RED}Extremely many
|
||||||
|
|
||||||
|
##after STR_CONFIG_SETTING_BRIBE_HELPTEXT_MINUTES
|
||||||
|
STR_CONFIG_SETTING_BRIBE_HELPTEXT_PERIODS :Allow companies to try bribing the local town authority. If the bribe is noticed by an inspector, the company will not be able to act in the town for half a period
|
||||||
|
|
||||||
|
##after STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_MINUTES
|
||||||
|
STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT_PERIODS :If a company buys exclusive transport rights for a town, opponents' stations (passenger and cargo) won't receive any cargo for one period
|
||||||
|
|
||||||
##end-after
|
##end-after
|
||||||
|
|
||||||
STR_COMMA_SEPARATOR :,{SP}
|
STR_COMMA_SEPARATOR :,{SP}
|
||||||
@@ -85,6 +91,7 @@ STR_UNIT_NAME_VELOCITY_GAMEUNITS :tiles/day
|
|||||||
STR_UNIT_NAME_VELOCITY_GAMEUNITS_WALLCLOCK :tiles/sec
|
STR_UNIT_NAME_VELOCITY_GAMEUNITS_WALLCLOCK :tiles/sec
|
||||||
|
|
||||||
STR_UNITS_SECONDS_SHORT :{COMMA}{NBSP}s
|
STR_UNITS_SECONDS_SHORT :{COMMA}{NBSP}s
|
||||||
|
STR_UNITS_PRODUCTION_INTERVALS :{NUM}{NBSP}production interval{P "" s}
|
||||||
|
|
||||||
STR_BUTTON_RENAME :{BLACK}Rename
|
STR_BUTTON_RENAME :{BLACK}Rename
|
||||||
|
|
||||||
@@ -128,11 +135,16 @@ STR_GRAPH_DELIVERED_CARGO_BY_CARGO_MODE :{TINY_FONT}{BLA
|
|||||||
STR_GRAPH_DELIVERED_CARGO_BY_COMPANY_MODE_TOOLTIP :{BLACK}Display one line for each selected company
|
STR_GRAPH_DELIVERED_CARGO_BY_COMPANY_MODE_TOOLTIP :{BLACK}Display one line for each selected company
|
||||||
STR_GRAPH_DELIVERED_CARGO_BY_CARGO_MODE_TOOLTIP :{BLACK}Display one line for each selected cargo
|
STR_GRAPH_DELIVERED_CARGO_BY_CARGO_MODE_TOOLTIP :{BLACK}Display one line for each selected cargo
|
||||||
|
|
||||||
|
STR_GRAPH_LAST_72_PRODUCTION_INTERVALS_TIME_LABEL :{TINY_FONT}{BLACK}Last 72 production intervals
|
||||||
|
|
||||||
STR_SMALLMAP_SCREENSHOT :{BLACK}Screenshot
|
STR_SMALLMAP_SCREENSHOT :{BLACK}Screenshot
|
||||||
|
|
||||||
STR_NEWS_VEHICLE_NO_DEPOT_ORDER :{WHITE}{VEHICLE} does not have a depot order in its schedule
|
STR_NEWS_VEHICLE_NO_DEPOT_ORDER :{WHITE}{VEHICLE} does not have a depot order in its schedule
|
||||||
STR_NEWS_TRAIN_OVERSHOT_STATION :{WHITE}{VEHICLE} failed to stop at {STRING1} due to excessive speed
|
STR_NEWS_TRAIN_OVERSHOT_STATION :{WHITE}{VEHICLE} failed to stop at {STRING1} due to excessive speed
|
||||||
|
|
||||||
|
STR_NEWS_ROAD_REBUILDING_PERIODS :{BIG_FONT}{BLACK}Traffic chaos in {TOWN}!{}{}Road rebuilding programme funded by {RAW_STRING} brings half a period of misery to motorists!
|
||||||
|
STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_PERIOD :{BIG_FONT}{BLACK}Local authority of {TOWN} signs contract with {RAW_STRING} for 1 period of exclusive transport rights!
|
||||||
|
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_MINUTES_CUSTOM_LABEL :Custom interval (real-time minutes)
|
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_MINUTES_CUSTOM_LABEL :Custom interval (real-time minutes)
|
||||||
STR_GAME_OPTIONS_AUTOSAVE_MINUTES_QUERY_CAPT :{WHITE}Autosave interval in real-time minutes
|
STR_GAME_OPTIONS_AUTOSAVE_MINUTES_QUERY_CAPT :{WHITE}Autosave interval in real-time minutes
|
||||||
|
|
||||||
@@ -571,15 +583,19 @@ STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_HELPTEXT_EXTRA :{STRING}{}This
|
|||||||
STR_CONFIG_SETTING_TOWN_CARGO_SCALE_MODE :Time interval for town cargo production scaling: {STRING2}
|
STR_CONFIG_SETTING_TOWN_CARGO_SCALE_MODE :Time interval for town cargo production scaling: {STRING2}
|
||||||
STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_MODE :Time interval for industry cargo production scaling: {STRING2}
|
STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_MODE :Time interval for industry cargo production scaling: {STRING2}
|
||||||
|
|
||||||
STR_CONFIG_SETTING_CARGO_SCALE_MODE_HELPTEXT :Monthly: The cargo production per month is scaled.{}{}Game-time: The cargo production per unit of game time is scaled, (the cargo production per month is also scaled by the day length factor). Very high scaling factors may not be achievable.
|
STR_CONFIG_SETTING_CARGO_SCALE_MODE_HELPTEXT :Monthly/per production interval: The cargo production per month or production interval is scaled.{}{}Game-time: The cargo production per unit of game time is scaled, (the cargo production per month or production interval is also scaled by the day length factor). Very high scaling factors may not be achievable.
|
||||||
STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_MODE_HELPTEXT_EXTRA :{STRING}{}Game-time mode is not guaranteed to be fully compatible with all industry NewGRFs.
|
STR_CONFIG_SETTING_INDUSTRY_CARGO_SCALE_MODE_HELPTEXT_EXTRA :{STRING}{}Game-time mode is not guaranteed to be fully compatible with all industry NewGRFs.
|
||||||
|
|
||||||
STR_CONFIG_SETTING_CARGO_SCALE_MODE_MONTHLY :Monthly
|
STR_CONFIG_SETTING_CARGO_SCALE_MODE_MONTHLY :Monthly
|
||||||
STR_CONFIG_SETTING_CARGO_SCALE_MODE_GAME_TIME :Game-time
|
STR_CONFIG_SETTING_CARGO_SCALE_MODE_GAME_TIME :Game-time
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_CARGO_SCALE_MODE_PER_PRODUCTION_INTERVAL :Per production interval
|
||||||
|
|
||||||
STR_CONFIG_SETTING_CARGO_SCALE_VALUE_MONTHLY :{NUM}% (monthly)
|
STR_CONFIG_SETTING_CARGO_SCALE_VALUE_MONTHLY :{NUM}% (monthly)
|
||||||
STR_CONFIG_SETTING_CARGO_SCALE_VALUE_REAL_TIME :{NUM}% (game-time)
|
STR_CONFIG_SETTING_CARGO_SCALE_VALUE_REAL_TIME :{NUM}% (game-time)
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_CARGO_SCALE_VALUE_PER_PRODUCTION_INTERVAL :{NUM}% (per production interval)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TOWN_ABOVE_HEIGHT :No towns above height level: {STRING2}
|
STR_CONFIG_SETTING_TOWN_ABOVE_HEIGHT :No towns above height level: {STRING2}
|
||||||
STR_CONFIG_SETTING_TOWN_ABOVE_HEIGHT_HELPTEXT :No towns above the specified height level are built during map creation.
|
STR_CONFIG_SETTING_TOWN_ABOVE_HEIGHT_HELPTEXT :No towns above the specified height level are built during map creation.
|
||||||
|
|
||||||
@@ -821,6 +837,8 @@ STR_LINKGRAPH_STATS_TOOLTIP_USAGE :{}Usage: {CARGO
|
|||||||
STR_LINKGRAPH_STATS_TOOLTIP_PLANNED :{}Planned: {CARGO_LONG}
|
STR_LINKGRAPH_STATS_TOOLTIP_PLANNED :{}Planned: {CARGO_LONG}
|
||||||
STR_LINKGRAPH_STATS_TOOLTIP_DISTANCE :Manhattan Distance: {COMMA} tile{P 0 "" s}{}Bird Fly Distance: {COMMA} tile{P 1 "" s}
|
STR_LINKGRAPH_STATS_TOOLTIP_DISTANCE :Manhattan Distance: {COMMA} tile{P 0 "" s}{}Bird Fly Distance: {COMMA} tile{P 1 "" s}
|
||||||
|
|
||||||
|
STR_LINKGRAPH_STATS_TOOLTIP_PRODUCTION_INTERVAL :{BLACK}{CARGO_LONG} to be transported per production interval from {STATION} to {STATION} ({COMMA}% of capacity){RAW_STRING}
|
||||||
|
|
||||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_POLYRAIL :{BLACK}Build railway track using the polyline mode. Ctrl toggles build/remove for railway construction. Shift toggles building/showing cost estimate
|
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_POLYRAIL :{BLACK}Build railway track using the polyline mode. Ctrl toggles build/remove for railway construction. Shift toggles building/showing cost estimate
|
||||||
|
|
||||||
STR_BUILD_SIGNAL_SEMAPHORE_PROG_TOOLTIP :{BLACK}Programmable Pre-Signal (semaphore){}The programmable pre-signal is a combo-signal which can be programmed to behave in complex ways.
|
STR_BUILD_SIGNAL_SEMAPHORE_PROG_TOOLTIP :{BLACK}Programmable Pre-Signal (semaphore){}The programmable pre-signal is a combo-signal which can be programmed to behave in complex ways.
|
||||||
@@ -1335,6 +1353,8 @@ STR_NEWGRF_TOO_MANY_STRINGS_DETAIL :{WHITE}Some nam
|
|||||||
|
|
||||||
STR_TOWN_VIEW_NOISE_IN_TOWN_NO_LIMIT :{BLACK}Noise limit in town: {ORANGE}{COMMA}
|
STR_TOWN_VIEW_NOISE_IN_TOWN_NO_LIMIT :{BLACK}Noise limit in town: {ORANGE}{COMMA}
|
||||||
|
|
||||||
|
STR_TOWN_VIEW_CARGO_LAST_PRODUCTION_INTERVAL_MAX :{BLACK}{CARGO_LIST} last interval: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
|
||||||
|
|
||||||
###length 6
|
###length 6
|
||||||
STR_LOCAL_AUTHORITY_SETTING_OVERRIDE_ALLOW_ROADS :Allowed to build roads
|
STR_LOCAL_AUTHORITY_SETTING_OVERRIDE_ALLOW_ROADS :Allowed to build roads
|
||||||
STR_LOCAL_AUTHORITY_SETTING_OVERRIDE_ALLOW_LEVEL_CROSSINGS :Allowed to build level crossings
|
STR_LOCAL_AUTHORITY_SETTING_OVERRIDE_ALLOW_LEVEL_CROSSINGS :Allowed to build level crossings
|
||||||
@@ -1473,6 +1493,8 @@ STR_INDUSTRY_VIEW_REQUIRED_TOOLTIP_NEXT :, {STRING}{RAW_
|
|||||||
STR_INDUSTRY_VIEW_STOCKPILED_TOOLTIP :{CARGO_LONG} waiting{RAW_STRING}
|
STR_INDUSTRY_VIEW_STOCKPILED_TOOLTIP :{CARGO_LONG} waiting{RAW_STRING}
|
||||||
STR_INDUSTRY_VIEW_TRANSPORTED_TOOLTIP_EXTENSION :{CARGO_LONG}{RAW_STRING} ({COMMA}%)
|
STR_INDUSTRY_VIEW_TRANSPORTED_TOOLTIP_EXTENSION :{CARGO_LONG}{RAW_STRING} ({COMMA}%)
|
||||||
|
|
||||||
|
STR_INDUSTRY_VIEW_PRODUCTION_LAST_PRODUCTION_INTERVAL_TITLE :{BLACK}Production last interval:
|
||||||
|
|
||||||
STR_DEPOT_VIEW_COUNT_TOOLTIP :{BLACK}{COMMA} vehicle{P "" s} inside
|
STR_DEPOT_VIEW_COUNT_TOOLTIP :{BLACK}{COMMA} vehicle{P "" s} inside
|
||||||
STR_DEPOT_VIEW_COUNT_STOPPED_TOOLTIP :{BLACK}{COMMA} stopped vehicle{P "" s} inside
|
STR_DEPOT_VIEW_COUNT_STOPPED_TOOLTIP :{BLACK}{COMMA} stopped vehicle{P "" s} inside
|
||||||
STR_DEPOT_VIEW_COUNT_WAITING_TOOLTIP :{BLACK}{COMMA} waiting vehicle{P "" s} inside
|
STR_DEPOT_VIEW_COUNT_WAITING_TOOLTIP :{BLACK}{COMMA} waiting vehicle{P "" s} inside
|
||||||
@@ -1485,6 +1507,8 @@ STR_DEPOT_VIEW_MIXED_CONTENTS_TOOLTIP :{BLACK}{STRING1
|
|||||||
STR_STATION_VIEW_NAME_TOOLTIP :{STATION}{NBSP}{STATION_FEATURES}
|
STR_STATION_VIEW_NAME_TOOLTIP :{STATION}{NBSP}{STATION_FEATURES}
|
||||||
STR_STATION_VIEW_CARGO_LINE_TOOLTIP :{STRING} ({COMMA}%): {CARGO_SHORT}
|
STR_STATION_VIEW_CARGO_LINE_TOOLTIP :{STRING} ({COMMA}%): {CARGO_SHORT}
|
||||||
|
|
||||||
|
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_PRODUCTION_INTERVAL :{BLACK}Supply per production interval and local rating:
|
||||||
|
|
||||||
STR_VEHICLE_LIST_AGE :{STRING2}, Age: {COMMA} year{P "" s} ({COMMA})
|
STR_VEHICLE_LIST_AGE :{STRING2}, Age: {COMMA} year{P "" s} ({COMMA})
|
||||||
STR_VEHICLE_LIST_AGE_RED :{STRING2}, Age: {RED}{COMMA} {BLACK}year{P "" s} ({COMMA})
|
STR_VEHICLE_LIST_AGE_RED :{STRING2}, Age: {RED}{COMMA} {BLACK}year{P "" s} ({COMMA})
|
||||||
STR_VEHICLE_LIST_CARGO_LIST :{STRING2}, Cargoes: {CARGO_LIST}
|
STR_VEHICLE_LIST_CARGO_LIST :{STRING2}, Cargoes: {CARGO_LIST}
|
||||||
@@ -1625,6 +1649,14 @@ STR_VEHICLE_DETAILS_REMOVE_SPEED_RESTRICTION :Remove speed re
|
|||||||
STR_VEHICLE_DETAILS_SET_SPEED_RESTRICTION :Set speed restriction
|
STR_VEHICLE_DETAILS_SET_SPEED_RESTRICTION :Set speed restriction
|
||||||
STR_VEHICLE_DETAILS_REMOVE_FROM_SLOT :Remove from slot:
|
STR_VEHICLE_DETAILS_REMOVE_FROM_SLOT :Remove from slot:
|
||||||
|
|
||||||
|
STR_VEHICLE_DETAILS_PRODUCTION_INTERVALS :Production intervals
|
||||||
|
|
||||||
|
STR_VEHICLE_DETAILS_LAST_SERVICE_PRODUCTION_INTERVALS_AGO :Last service: {LTBLUE}{NUM} interval{P "" s} ago
|
||||||
|
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PRODUCTION_INTERVALS :{BLACK}Servicing interval: {LTBLUE}{COMMA}{NBSP}interval{P "" s}{BLACK} {STRING1}
|
||||||
|
|
||||||
|
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PRODINT :{BLACK}Increase servicing interval by 5 production intervals. Ctrl+Click to increase servicing interval by 1 production interval
|
||||||
|
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PRODINT :{BLACK}Decrease servicing interval by 5 production intervals. Ctrl+Click to decrease servicing interval by 1 production interval
|
||||||
|
|
||||||
STR_ORDER_DROP_CARGO_TYPE_LOAD :Load by cargo type
|
STR_ORDER_DROP_CARGO_TYPE_LOAD :Load by cargo type
|
||||||
STR_ORDER_DROP_CARGO_TYPE_UNLOAD :Unload by cargo type
|
STR_ORDER_DROP_CARGO_TYPE_UNLOAD :Unload by cargo type
|
||||||
|
|
||||||
|
@@ -588,6 +588,10 @@ bool LinkGraphOverlay::ShowTooltip(Point pt, TooltipCloseCondition close_cond)
|
|||||||
SetDParam(0, STR_TIMETABLE_MINUTES);
|
SetDParam(0, STR_TIMETABLE_MINUTES);
|
||||||
SetDParam(1, time / _settings_time.ticks_per_minute);
|
SetDParam(1, time / _settings_time.ticks_per_minute);
|
||||||
GetString(builder, STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL);
|
GetString(builder, STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL);
|
||||||
|
} else if (EconTime::UsingWallclockUnits() && DayLengthFactor() > 1) {
|
||||||
|
SetDParam(0, STR_UNITS_SECONDS);
|
||||||
|
SetDParam(1, time / (DAY_TICKS / 2));
|
||||||
|
GetString(builder, STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL);
|
||||||
} else {
|
} else {
|
||||||
SetDParam(0, time / (DAY_TICKS * DayLengthFactor()));
|
SetDParam(0, time / (DAY_TICKS * DayLengthFactor()));
|
||||||
GetString(builder, STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION);
|
GetString(builder, STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION);
|
||||||
@@ -656,7 +660,13 @@ bool LinkGraphOverlay::ShowTooltip(Point pt, TooltipCloseCondition close_cond)
|
|||||||
SetDParam(3, i->to_id);
|
SetDParam(3, i->to_id);
|
||||||
SetDParam(4, link.Usage() * 100 / (link.capacity + 1));
|
SetDParam(4, link.Usage() * 100 / (link.capacity + 1));
|
||||||
SetDParamStr(5, std::move(buf));
|
SetDParamStr(5, std::move(buf));
|
||||||
GuiShowTooltips(this->window, EconTime::UsingWallclockUnits() ? STR_LINKGRAPH_STATS_TOOLTIP_MINUTE : STR_LINKGRAPH_STATS_TOOLTIP_MONTH, close_cond);
|
StringID msg;
|
||||||
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
|
msg = (DayLengthFactor() > 1) ? STR_LINKGRAPH_STATS_TOOLTIP_PRODUCTION_INTERVAL : STR_LINKGRAPH_STATS_TOOLTIP_MINUTE;
|
||||||
|
} else {
|
||||||
|
msg = STR_LINKGRAPH_STATS_TOOLTIP_MONTH;
|
||||||
|
}
|
||||||
|
GuiShowTooltips(this->window, msg, close_cond);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -117,6 +117,7 @@
|
|||||||
|
|
||||||
void CallLandscapeTick();
|
void CallLandscapeTick();
|
||||||
void IncreaseDate();
|
void IncreaseDate();
|
||||||
|
void IncreaseCalendarDate();
|
||||||
void DoPaletteAnimations();
|
void DoPaletteAnimations();
|
||||||
void MusicLoop();
|
void MusicLoop();
|
||||||
void CallWindowGameTickEvent();
|
void CallWindowGameTickEvent();
|
||||||
@@ -2245,6 +2246,9 @@ void StateGameLoop()
|
|||||||
|
|
||||||
RunAuxiliaryTileLoop();
|
RunAuxiliaryTileLoop();
|
||||||
if (DateDetail::_tick_skip_counter < DayLengthFactor()) {
|
if (DateDetail::_tick_skip_counter < DayLengthFactor()) {
|
||||||
|
if (_settings_game.economy.timekeeping_units == TKU_WALLCLOCK && !(_game_mode == GM_MENU || _game_mode == GM_BOOTSTRAP)) {
|
||||||
|
IncreaseCalendarDate();
|
||||||
|
}
|
||||||
AnimateAnimatedTiles();
|
AnimateAnimatedTiles();
|
||||||
RunTileLoop(true);
|
RunTileLoop(true);
|
||||||
CallVehicleTicks();
|
CallVehicleTicks();
|
||||||
|
@@ -682,6 +682,10 @@ bool AfterLoadGame()
|
|||||||
if (SlXvIsFeatureMissing(XSLFI_VARIABLE_DAY_LENGTH, 5) && IsSavegameVersionBefore(SLV_ECONOMY_MODE_TIMEKEEPING_UNITS)) {
|
if (SlXvIsFeatureMissing(XSLFI_VARIABLE_DAY_LENGTH, 5) && IsSavegameVersionBefore(SLV_ECONOMY_MODE_TIMEKEEPING_UNITS)) {
|
||||||
_settings_game.economy.timekeeping_units = TKU_CALENDAR;
|
_settings_game.economy.timekeeping_units = TKU_CALENDAR;
|
||||||
}
|
}
|
||||||
|
/* Wallclock unit games which previously ran at an effective day length of 1 should remain that way */
|
||||||
|
if (SlXvIsFeatureMissing(XSLFI_VARIABLE_DAY_LENGTH, 7) && _settings_game.economy.timekeeping_units == TKU_WALLCLOCK) {
|
||||||
|
_settings_game.economy.day_length_factor = 1;
|
||||||
|
}
|
||||||
UpdateEffectiveDayLengthFactor();
|
UpdateEffectiveDayLengthFactor();
|
||||||
|
|
||||||
SetupTickRate();
|
SetupTickRate();
|
||||||
|
@@ -1095,6 +1095,12 @@ static StringID SettingHelpWallclock(const IntSettingDesc &sd)
|
|||||||
return EconTime::UsingWallclockUnits(_game_mode == GM_MENU) ? sd.str_help + 1 : sd.str_help;
|
return EconTime::UsingWallclockUnits(_game_mode == GM_MENU) ? sd.str_help + 1 : sd.str_help;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Switch setting help depending on wallclock setting */
|
||||||
|
static StringID SettingHelpWallclockTriple(const IntSettingDesc &sd)
|
||||||
|
{
|
||||||
|
return EconTime::UsingWallclockUnits(_game_mode == GM_MENU) ? sd.str_help + ((GetGameSettings().economy.day_length_factor > 1) ? 2 : 1) : sd.str_help;
|
||||||
|
}
|
||||||
|
|
||||||
/** Setting values for velocity unit localisation */
|
/** Setting values for velocity unit localisation */
|
||||||
static void SettingsValueVelocityUnit(const IntSettingDesc &, uint first_param, int32_t value)
|
static void SettingsValueVelocityUnit(const IntSettingDesc &, uint first_param, int32_t value)
|
||||||
{
|
{
|
||||||
@@ -2288,7 +2294,13 @@ static bool TownCargoScaleGUI(SettingOnGuiCtrlData &data)
|
|||||||
{
|
{
|
||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
case SOGCT_VALUE_DPARAMS:
|
case SOGCT_VALUE_DPARAMS:
|
||||||
if (!EconTime::UsingWallclockUnits(_game_mode == GM_MENU)) SetDParam(data.offset, STR_CONFIG_SETTING_CARGO_SCALE_VALUE_MONTHLY + GetGameSettings().economy.town_cargo_scale_mode);
|
if (GetGameSettings().economy.day_length_factor > 1) {
|
||||||
|
if (GetGameSettings().economy.town_cargo_scale_mode) {
|
||||||
|
SetDParam(data.offset, STR_CONFIG_SETTING_CARGO_SCALE_VALUE_REAL_TIME);
|
||||||
|
} else {
|
||||||
|
SetDParam(data.offset, EconTime::UsingWallclockUnits(_game_mode == GM_MENU) ? STR_CONFIG_SETTING_CARGO_SCALE_VALUE_PER_PRODUCTION_INTERVAL : STR_CONFIG_SETTING_CARGO_SCALE_VALUE_MONTHLY);
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -2305,7 +2317,27 @@ static bool IndustryCargoScaleGUI(SettingOnGuiCtrlData &data)
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
case SOGCT_VALUE_DPARAMS:
|
case SOGCT_VALUE_DPARAMS:
|
||||||
if (!EconTime::UsingWallclockUnits(_game_mode == GM_MENU)) SetDParam(data.offset, STR_CONFIG_SETTING_CARGO_SCALE_VALUE_MONTHLY + GetGameSettings().economy.industry_cargo_scale_mode);
|
if (GetGameSettings().economy.day_length_factor > 1) {
|
||||||
|
if (GetGameSettings().economy.town_cargo_scale_mode) {
|
||||||
|
SetDParam(data.offset, STR_CONFIG_SETTING_CARGO_SCALE_VALUE_REAL_TIME);
|
||||||
|
} else {
|
||||||
|
SetDParam(data.offset, EconTime::UsingWallclockUnits(_game_mode == GM_MENU) ? STR_CONFIG_SETTING_CARGO_SCALE_VALUE_PER_PRODUCTION_INTERVAL : STR_CONFIG_SETTING_CARGO_SCALE_VALUE_MONTHLY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool TownCargoScaleModeGUI(SettingOnGuiCtrlData &data)
|
||||||
|
{
|
||||||
|
switch (data.type) {
|
||||||
|
case SOGCT_VALUE_DPARAMS:
|
||||||
|
if (data.text == STR_CONFIG_SETTING_CARGO_SCALE_MODE_MONTHLY && EconTime::UsingWallclockUnits(_game_mode == GM_MENU)) {
|
||||||
|
data.text = STR_CONFIG_SETTING_CARGO_SCALE_MODE_PER_PRODUCTION_INTERVAL;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -2322,7 +2354,7 @@ static bool IndustryCargoScaleModeGUI(SettingOnGuiCtrlData &data)
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return WallclockModeDisabledGUI(data);
|
return TownCargoScaleModeGUI(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2283,7 +2283,7 @@ static SettingsContainer &GetSettingsTree()
|
|||||||
vehicle_windows->Add(new SettingEntry("gui.show_order_number_vehicle_view"));
|
vehicle_windows->Add(new SettingEntry("gui.show_order_number_vehicle_view"));
|
||||||
vehicle_windows->Add(new SettingEntry("gui.show_speed_first_vehicle_view"));
|
vehicle_windows->Add(new SettingEntry("gui.show_speed_first_vehicle_view"));
|
||||||
vehicle_windows->Add(new SettingEntry("gui.hide_default_stop_location"));
|
vehicle_windows->Add(new SettingEntry("gui.hide_default_stop_location"));
|
||||||
vehicle_windows->Add(new ConditionallyHiddenSettingEntry("gui.show_running_costs_calendar_year", []() -> bool { return GetGameSettings().economy.timekeeping_units != TKU_CALENDAR; }));
|
vehicle_windows->Add(new SettingEntry("gui.show_running_costs_calendar_year"));
|
||||||
}
|
}
|
||||||
|
|
||||||
SettingsPage *departureboards = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_DEPARTUREBOARDS));
|
SettingsPage *departureboards = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_DEPARTUREBOARDS));
|
||||||
|
@@ -902,7 +902,7 @@ struct GameSettings {
|
|||||||
|
|
||||||
uint8_t EffectiveDayLengthFactor() const
|
uint8_t EffectiveDayLengthFactor() const
|
||||||
{
|
{
|
||||||
return this->economy.timekeeping_units == TKU_CALENDAR ? this->economy.day_length_factor : 1;
|
return this->economy.day_length_factor;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -103,7 +103,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
|||||||
{ XSLFI_VEHICLE_REPAIR_COST, XSCF_NULL, 2, 2, "vehicle_repair_cost", nullptr, nullptr, nullptr },
|
{ XSLFI_VEHICLE_REPAIR_COST, XSCF_NULL, 2, 2, "vehicle_repair_cost", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_ENH_VIEWPORT_PLANS, XSCF_IGNORABLE_ALL, 4, 4, "enh_viewport_plans", nullptr, nullptr, "PLAN" },
|
{ XSLFI_ENH_VIEWPORT_PLANS, XSCF_IGNORABLE_ALL, 4, 4, "enh_viewport_plans", nullptr, nullptr, "PLAN" },
|
||||||
{ XSLFI_INFRA_SHARING, XSCF_NULL, 2, 2, "infra_sharing", nullptr, nullptr, "CPDP" },
|
{ XSLFI_INFRA_SHARING, XSCF_NULL, 2, 2, "infra_sharing", nullptr, nullptr, "CPDP" },
|
||||||
{ XSLFI_VARIABLE_DAY_LENGTH, XSCF_NULL, 6, 6, "variable_day_length", nullptr, nullptr, nullptr },
|
{ XSLFI_VARIABLE_DAY_LENGTH, XSCF_NULL, 7, 7, "variable_day_length", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_ORDER_OCCUPANCY, XSCF_NULL, 2, 2, "order_occupancy", nullptr, nullptr, nullptr },
|
{ XSLFI_ORDER_OCCUPANCY, XSCF_NULL, 2, 2, "order_occupancy", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_MORE_COND_ORDERS, XSCF_NULL, 17, 17, "more_cond_orders", nullptr, nullptr, nullptr },
|
{ XSLFI_MORE_COND_ORDERS, XSCF_NULL, 17, 17, "more_cond_orders", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_EXTRA_LARGE_MAP, XSCF_NULL, 0, 1, "extra_large_map", nullptr, nullptr, nullptr },
|
{ XSLFI_EXTRA_LARGE_MAP, XSCF_NULL, 0, 1, "extra_large_map", nullptr, nullptr, nullptr },
|
||||||
|
@@ -2034,7 +2034,11 @@ struct StationViewWindow : public Window {
|
|||||||
tr.top += WidgetDimensions::scaled.vsep_wide;
|
tr.top += WidgetDimensions::scaled.vsep_wide;
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawString(tr, EconTime::UsingWallclockUnits() ? STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE : STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH);
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
|
DrawString(tr, (DayLengthFactor() > 1) ? STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_PRODUCTION_INTERVAL : STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MINUTE);
|
||||||
|
} else {
|
||||||
|
DrawString(tr, STR_STATION_VIEW_SUPPLY_RATINGS_TITLE_MONTH);
|
||||||
|
}
|
||||||
tr.top += GetCharacterHeight(FS_NORMAL);
|
tr.top += GetCharacterHeight(FS_NORMAL);
|
||||||
|
|
||||||
this->ratings_list_y = tr.top;
|
this->ratings_list_y = tr.top;
|
||||||
|
@@ -844,6 +844,7 @@ static const Units _units_time_days_or_seconds[] = {
|
|||||||
static const Units _units_time_months_or_minutes[] = {
|
static const Units _units_time_months_or_minutes[] = {
|
||||||
{ { 1 }, STR_UNITS_MONTHS, 0 },
|
{ { 1 }, STR_UNITS_MONTHS, 0 },
|
||||||
{ { 1 }, STR_UNITS_MINUTES, 0 },
|
{ { 1 }, STR_UNITS_MINUTES, 0 },
|
||||||
|
{ { 1 }, STR_UNITS_PRODUCTION_INTERVALS, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Unit conversions for time in calendar years or economic periods */
|
/** Unit conversions for time in calendar years or economic periods */
|
||||||
@@ -856,6 +857,7 @@ static const Units _units_time_years_or_periods[] = {
|
|||||||
static const Units _units_time_years_or_minutes[] = {
|
static const Units _units_time_years_or_minutes[] = {
|
||||||
{ { 1 }, STR_UNITS_YEARS, 0 },
|
{ { 1 }, STR_UNITS_YEARS, 0 },
|
||||||
{ { 12 }, STR_UNITS_MINUTES, 0 },
|
{ { 12 }, STR_UNITS_MINUTES, 0 },
|
||||||
|
{ { 1 }, STR_UNITS_PERIODS, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
StringID GetVelocityUnitName(VehicleType type)
|
StringID GetVelocityUnitName(VehicleType type)
|
||||||
@@ -1751,13 +1753,16 @@ static void FormatString(StringBuilder builder, const char *str_arg, StringParam
|
|||||||
case SCC_UNITS_DAYS_OR_SECONDS: { // {UNITS_DAYS_OR_SECONDS}
|
case SCC_UNITS_DAYS_OR_SECONDS: { // {UNITS_DAYS_OR_SECONDS}
|
||||||
uint8_t realtime = EconTime::UsingWallclockUnits(_game_mode == GM_MENU);
|
uint8_t realtime = EconTime::UsingWallclockUnits(_game_mode == GM_MENU);
|
||||||
const auto &x = _units_time_days_or_seconds[realtime];
|
const auto &x = _units_time_days_or_seconds[realtime];
|
||||||
auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetNextParameter<int64_t>()), x.decimal_places);
|
int64_t duration = args.GetNextParameter<int64_t>();
|
||||||
|
if (realtime) duration *= DayLengthFactor();
|
||||||
|
auto tmp_params = MakeParameters(x.c.ToDisplay(duration), x.decimal_places);
|
||||||
FormatString(builder, GetStringPtr(x.s), tmp_params);
|
FormatString(builder, GetStringPtr(x.s), tmp_params);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case SCC_UNITS_MONTHS_OR_MINUTES: { // {UNITS_MONTHS_OR_MINUTES}
|
case SCC_UNITS_MONTHS_OR_MINUTES: { // {UNITS_MONTHS_OR_MINUTES}
|
||||||
uint8_t realtime = EconTime::UsingWallclockUnits(_game_mode == GM_MENU);
|
uint8_t realtime = EconTime::UsingWallclockUnits(_game_mode == GM_MENU);
|
||||||
|
if (realtime > 0 && DayLengthFactor() > 1) realtime++;
|
||||||
const auto &x = _units_time_months_or_minutes[realtime];
|
const auto &x = _units_time_months_or_minutes[realtime];
|
||||||
auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetNextParameter<int64_t>()), x.decimal_places);
|
auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetNextParameter<int64_t>()), x.decimal_places);
|
||||||
FormatString(builder, GetStringPtr(x.s), tmp_params);
|
FormatString(builder, GetStringPtr(x.s), tmp_params);
|
||||||
@@ -1774,6 +1779,7 @@ static void FormatString(StringBuilder builder, const char *str_arg, StringParam
|
|||||||
|
|
||||||
case SCC_UNITS_YEARS_OR_MINUTES: { // {UNITS_YEARS_OR_MINUTES}
|
case SCC_UNITS_YEARS_OR_MINUTES: { // {UNITS_YEARS_OR_MINUTES}
|
||||||
uint8_t realtime = EconTime::UsingWallclockUnits(_game_mode == GM_MENU);
|
uint8_t realtime = EconTime::UsingWallclockUnits(_game_mode == GM_MENU);
|
||||||
|
if (realtime > 0 && DayLengthFactor() > 1) realtime++;
|
||||||
const auto &x = _units_time_years_or_minutes[realtime];
|
const auto &x = _units_time_years_or_minutes[realtime];
|
||||||
auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetNextParameter<int64_t>()), x.decimal_places);
|
auto tmp_params = MakeParameters(x.c.ToDisplay(args.GetNextParameter<int64_t>()), x.decimal_places);
|
||||||
FormatString(builder, GetStringPtr(x.s), tmp_params);
|
FormatString(builder, GetStringPtr(x.s), tmp_params);
|
||||||
|
@@ -12,6 +12,7 @@ static size_t ConvertLandscape(const char *value);
|
|||||||
|
|
||||||
static StringID SettingTitleWallclock(const IntSettingDesc &sd);
|
static StringID SettingTitleWallclock(const IntSettingDesc &sd);
|
||||||
static StringID SettingHelpWallclock(const IntSettingDesc &sd);
|
static StringID SettingHelpWallclock(const IntSettingDesc &sd);
|
||||||
|
static StringID SettingHelpWallclockTriple(const IntSettingDesc &sd);
|
||||||
|
|
||||||
/* Callback function used in _settings[] as well as _gui_settings[] */
|
/* Callback function used in _settings[] as well as _gui_settings[] */
|
||||||
static void UpdateTimeSettings(int32_t new_value);
|
static void UpdateTimeSettings(int32_t new_value);
|
||||||
|
@@ -24,6 +24,7 @@ static void TownZoneCustomValueChanged(int32_t new_value);
|
|||||||
static bool OrderTownGrowthRate(SettingOnGuiCtrlData &data);
|
static bool OrderTownGrowthRate(SettingOnGuiCtrlData &data);
|
||||||
static bool TownCargoScaleGUI(SettingOnGuiCtrlData &data);
|
static bool TownCargoScaleGUI(SettingOnGuiCtrlData &data);
|
||||||
static bool IndustryCargoScaleGUI(SettingOnGuiCtrlData &data);
|
static bool IndustryCargoScaleGUI(SettingOnGuiCtrlData &data);
|
||||||
|
static bool TownCargoScaleModeGUI(SettingOnGuiCtrlData &data);
|
||||||
static bool IndustryCargoScaleModeGUI(SettingOnGuiCtrlData &data);
|
static bool IndustryCargoScaleModeGUI(SettingOnGuiCtrlData &data);
|
||||||
static bool CalendarModeDisabledGUI(SettingOnGuiCtrlData &data);
|
static bool CalendarModeDisabledGUI(SettingOnGuiCtrlData &data);
|
||||||
static bool WallclockModeDisabledGUI(SettingOnGuiCtrlData &data);
|
static bool WallclockModeDisabledGUI(SettingOnGuiCtrlData &data);
|
||||||
@@ -236,7 +237,6 @@ strval = STR_JUST_COMMA
|
|||||||
post_cb = DayLengthChanged
|
post_cb = DayLengthChanged
|
||||||
cat = SC_BASIC
|
cat = SC_BASIC
|
||||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH)
|
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH)
|
||||||
guiproc = WallclockModeDisabledGUI
|
|
||||||
patxname = ""variable_day_length.economy.day_length_factor""
|
patxname = ""variable_day_length.economy.day_length_factor""
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
@@ -257,7 +257,7 @@ var = economy.bribe
|
|||||||
def = true
|
def = true
|
||||||
str = STR_CONFIG_SETTING_BRIBE
|
str = STR_CONFIG_SETTING_BRIBE
|
||||||
strhelp = STR_CONFIG_SETTING_BRIBE_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_BRIBE_HELPTEXT
|
||||||
help_cb = SettingHelpWallclock
|
help_cb = SettingHelpWallclockTriple
|
||||||
post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); }
|
post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); }
|
||||||
cat = SC_BASIC
|
cat = SC_BASIC
|
||||||
|
|
||||||
@@ -267,7 +267,7 @@ from = SLV_79
|
|||||||
def = true
|
def = true
|
||||||
str = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE
|
str = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE
|
||||||
strhelp = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT
|
||||||
help_cb = SettingHelpWallclock
|
help_cb = SettingHelpWallclockTriple
|
||||||
post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); }
|
post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); }
|
||||||
cat = SC_BASIC
|
cat = SC_BASIC
|
||||||
|
|
||||||
@@ -789,7 +789,7 @@ strhelp = STR_CONFIG_SETTING_CARGO_SCALE_MODE_HELPTEXT
|
|||||||
strval = STR_CONFIG_SETTING_CARGO_SCALE_MODE_MONTHLY
|
strval = STR_CONFIG_SETTING_CARGO_SCALE_MODE_MONTHLY
|
||||||
cat = SC_BASIC
|
cat = SC_BASIC
|
||||||
post_cb = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); UpdateCargoScalers(); }
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); UpdateCargoScalers(); }
|
||||||
guiproc = WallclockModeDisabledGUI
|
guiproc = TownCargoScaleModeGUI
|
||||||
|
|
||||||
[SDT_VAR]
|
[SDT_VAR]
|
||||||
var = economy.industry_cargo_scale_mode
|
var = economy.industry_cargo_scale_mode
|
||||||
|
@@ -3663,8 +3663,13 @@ static CommandCost TownActionRoadRebuild(Town *t, DoCommandFlag flags)
|
|||||||
SetDParam(0, t->index);
|
SetDParam(0, t->index);
|
||||||
SetDParamStr(1, company_name->string);
|
SetDParamStr(1, company_name->string);
|
||||||
|
|
||||||
AddNewsItem(EconTime::UsingWallclockUnits() ? STR_NEWS_ROAD_REBUILDING_MINUTES : STR_NEWS_ROAD_REBUILDING_MONTHS,
|
StringID msg;
|
||||||
NT_GENERAL, NF_NORMAL, NR_TOWN, t->index, NR_NONE, UINT32_MAX, company_name);
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
|
msg = (DayLengthFactor() > 1) ? STR_NEWS_ROAD_REBUILDING_PERIODS : STR_NEWS_ROAD_REBUILDING_MINUTES;
|
||||||
|
} else {
|
||||||
|
msg = STR_NEWS_ROAD_REBUILDING_MONTHS;
|
||||||
|
}
|
||||||
|
AddNewsItem(msg, NT_GENERAL, NF_NORMAL, NR_TOWN, t->index, NR_NONE, UINT32_MAX, company_name);
|
||||||
AI::BroadcastNewEvent(new ScriptEventRoadReconstruction((ScriptCompany::CompanyID)(Owner)_current_company, t->index));
|
AI::BroadcastNewEvent(new ScriptEventRoadReconstruction((ScriptCompany::CompanyID)(Owner)_current_company, t->index));
|
||||||
Game::NewEvent(new ScriptEventRoadReconstruction((ScriptCompany::CompanyID)(Owner)_current_company, t->index));
|
Game::NewEvent(new ScriptEventRoadReconstruction((ScriptCompany::CompanyID)(Owner)_current_company, t->index));
|
||||||
}
|
}
|
||||||
@@ -3816,7 +3821,11 @@ static CommandCost TownActionBuyRights(Town *t, DoCommandFlag flags)
|
|||||||
/* Spawn news message */
|
/* Spawn news message */
|
||||||
CompanyNewsInformation *cni = new CompanyNewsInformation(Company::Get(_current_company));
|
CompanyNewsInformation *cni = new CompanyNewsInformation(Company::Get(_current_company));
|
||||||
SetDParam(0, STR_NEWS_EXCLUSIVE_RIGHTS_TITLE);
|
SetDParam(0, STR_NEWS_EXCLUSIVE_RIGHTS_TITLE);
|
||||||
SetDParam(1, EconTime::UsingWallclockUnits() ? STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES : STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS);
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
|
SetDParam(1, (DayLengthFactor() > 1) ? STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_PERIOD : STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MINUTES);
|
||||||
|
} else {
|
||||||
|
SetDParam(1, STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION_MONTHS);
|
||||||
|
}
|
||||||
SetDParam(2, t->index);
|
SetDParam(2, t->index);
|
||||||
SetDParamStr(3, cni->company_name);
|
SetDParamStr(3, cni->company_name);
|
||||||
AddNewsItem(STR_MESSAGE_NEWS_FORMAT, NT_GENERAL, NF_COMPANY, NR_TOWN, t->index, NR_NONE, UINT32_MAX, cni);
|
AddNewsItem(STR_MESSAGE_NEWS_FORMAT, NT_GENERAL, NF_COMPANY, NR_TOWN, t->index, NR_NONE, UINT32_MAX, cni);
|
||||||
|
@@ -592,7 +592,12 @@ public:
|
|||||||
DrawString(tr, STR_TOWN_VIEW_POPULATION_HOUSES);
|
DrawString(tr, STR_TOWN_VIEW_POPULATION_HOUSES);
|
||||||
tr.top += GetCharacterHeight(FS_NORMAL);
|
tr.top += GetCharacterHeight(FS_NORMAL);
|
||||||
|
|
||||||
StringID str_last_period = EconTime::UsingWallclockUnits() ? STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX : STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX;
|
StringID str_last_period;
|
||||||
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
|
str_last_period = (DayLengthFactor() > 1) ? STR_TOWN_VIEW_CARGO_LAST_PRODUCTION_INTERVAL_MAX : STR_TOWN_VIEW_CARGO_LAST_MINUTE_MAX;
|
||||||
|
} else {
|
||||||
|
str_last_period = STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
for (auto tpe : {TPE_PASSENGERS, TPE_MAIL}) {
|
for (auto tpe : {TPE_PASSENGERS, TPE_MAIL}) {
|
||||||
for (CargoID cid : CargoSpec::town_production_cargoes[tpe]) {
|
for (CargoID cid : CargoSpec::town_production_cargoes[tpe]) {
|
||||||
|
@@ -2835,6 +2835,22 @@ static StringID _service_interval_dropdown_wallclock[] = {
|
|||||||
INVALID_STRING_ID,
|
INVALID_STRING_ID,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static StringID _service_interval_dropdown_wallclock_daylength[] = {
|
||||||
|
STR_VEHICLE_DETAILS_DEFAULT,
|
||||||
|
STR_VEHICLE_DETAILS_PRODUCTION_INTERVALS,
|
||||||
|
STR_VEHICLE_DETAILS_PERCENT,
|
||||||
|
INVALID_STRING_ID,
|
||||||
|
};
|
||||||
|
|
||||||
|
const StringID *GetServiceIntervalDropDownTexts()
|
||||||
|
{
|
||||||
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
|
return DayLengthFactor() > 1 ? _service_interval_dropdown_wallclock_daylength : _service_interval_dropdown_wallclock;
|
||||||
|
} else {
|
||||||
|
return _service_interval_dropdown_calendar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Class for managing the vehicle details window. */
|
/** Class for managing the vehicle details window. */
|
||||||
struct VehicleDetailsWindow : Window {
|
struct VehicleDetailsWindow : Window {
|
||||||
TrainDetailsWindowTabs tab; ///< For train vehicles: which tab is displayed.
|
TrainDetailsWindowTabs tab; ///< For train vehicles: which tab is displayed.
|
||||||
@@ -3052,7 +3068,8 @@ struct VehicleDetailsWindow : Window {
|
|||||||
|
|
||||||
case WID_VD_SERVICE_INTERVAL_DROPDOWN: {
|
case WID_VD_SERVICE_INTERVAL_DROPDOWN: {
|
||||||
Dimension d{0, 0};
|
Dimension d{0, 0};
|
||||||
for (const StringID *strs : {_service_interval_dropdown_calendar, _service_interval_dropdown_wallclock}) {
|
{
|
||||||
|
const StringID *strs = GetServiceIntervalDropDownTexts();
|
||||||
while (*strs != INVALID_STRING_ID) {
|
while (*strs != INVALID_STRING_ID) {
|
||||||
d = maxdim(d, GetStringBoundingBox(*strs++));
|
d = maxdim(d, GetStringBoundingBox(*strs++));
|
||||||
}
|
}
|
||||||
@@ -3313,10 +3330,15 @@ struct VehicleDetailsWindow : Window {
|
|||||||
/* We're using wallclock units. Show minutes since last serviced. */
|
/* We're using wallclock units. Show minutes since last serviced. */
|
||||||
if (EconTime::UsingWallclockUnits()) {
|
if (EconTime::UsingWallclockUnits()) {
|
||||||
int minutes_since_serviced = (EconTime::CurDate() - v->date_of_last_service).base() / EconTime::DAYS_IN_ECONOMY_WALLCLOCK_MONTH;
|
int minutes_since_serviced = (EconTime::CurDate() - v->date_of_last_service).base() / EconTime::DAYS_IN_ECONOMY_WALLCLOCK_MONTH;
|
||||||
SetDParam(1, STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO);
|
SetDParam(1, DayLengthFactor() > 1 ? STR_VEHICLE_DETAILS_LAST_SERVICE_PRODUCTION_INTERVALS_AGO : STR_VEHICLE_DETAILS_LAST_SERVICE_MINUTES_AGO);
|
||||||
SetDParam(2, minutes_since_serviced);
|
SetDParam(2, minutes_since_serviced);
|
||||||
DrawString(tr.left, tr.right, CenterBounds(r.top, r.bottom, GetCharacterHeight(FS_NORMAL)),
|
StringID str;
|
||||||
v->ServiceIntervalIsPercent() ? STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT : STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES);
|
if (v->ServiceIntervalIsPercent()) {
|
||||||
|
str = STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT;
|
||||||
|
} else {
|
||||||
|
str = DayLengthFactor() > 1 ? STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PRODUCTION_INTERVALS : STR_VEHICLE_DETAILS_SERVICING_INTERVAL_MINUTES;
|
||||||
|
}
|
||||||
|
DrawString(tr.left, tr.right, CenterBounds(r.top, r.bottom, GetCharacterHeight(FS_NORMAL)), str);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3347,10 +3369,8 @@ struct VehicleDetailsWindow : Window {
|
|||||||
|
|
||||||
this->SetWidgetDisabledState(WID_VD_EXTRA_ACTIONS, v->type != VEH_TRAIN && !HasBit(v->vehicle_flags, VF_HAVE_SLOT));
|
this->SetWidgetDisabledState(WID_VD_EXTRA_ACTIONS, v->type != VEH_TRAIN && !HasBit(v->vehicle_flags, VF_HAVE_SLOT));
|
||||||
|
|
||||||
StringID str =
|
const StringID *texts = GetServiceIntervalDropDownTexts();
|
||||||
!v->ServiceIntervalIsCustom() ? STR_VEHICLE_DETAILS_DEFAULT :
|
StringID str = !v->ServiceIntervalIsCustom() ? texts[0] : (v->ServiceIntervalIsPercent() ? texts[2] : texts[1]);
|
||||||
v->ServiceIntervalIsPercent() ? STR_VEHICLE_DETAILS_PERCENT :
|
|
||||||
EconTime::UsingWallclockUnits() ? STR_VEHICLE_DETAILS_MINUTES : STR_VEHICLE_DETAILS_DAYS;
|
|
||||||
this->GetWidget<NWidgetCore>(WID_VD_SERVICE_INTERVAL_DROPDOWN)->widget_data = str;
|
this->GetWidget<NWidgetCore>(WID_VD_SERVICE_INTERVAL_DROPDOWN)->widget_data = str;
|
||||||
|
|
||||||
this->DrawWidgets();
|
this->DrawWidgets();
|
||||||
@@ -3380,7 +3400,7 @@ struct VehicleDetailsWindow : Window {
|
|||||||
case WID_VD_SERVICE_INTERVAL_DROPDOWN: {
|
case WID_VD_SERVICE_INTERVAL_DROPDOWN: {
|
||||||
const Vehicle *v = Vehicle::Get(this->window_number);
|
const Vehicle *v = Vehicle::Get(this->window_number);
|
||||||
ShowDropDownMenu(this,
|
ShowDropDownMenu(this,
|
||||||
EconTime::UsingWallclockUnits() ? _service_interval_dropdown_wallclock : _service_interval_dropdown_calendar,
|
GetServiceIntervalDropDownTexts(),
|
||||||
v->ServiceIntervalIsCustom() ? (v->ServiceIntervalIsPercent() ? 2 : 1) : 0, widget, 0, 0, 0, DDSF_SHARED);
|
v->ServiceIntervalIsCustom() ? (v->ServiceIntervalIsPercent() ? 2 : 1) : 0, widget, 0, 0, 0, DDSF_SHARED);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -3431,7 +3451,11 @@ struct VehicleDetailsWindow : Window {
|
|||||||
if (v->ServiceIntervalIsPercent()) {
|
if (v->ServiceIntervalIsPercent()) {
|
||||||
tool_tip = widget == WID_VD_INCREASE_SERVICING_INTERVAL ? STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT : STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT;
|
tool_tip = widget == WID_VD_INCREASE_SERVICING_INTERVAL ? STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT : STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PERCENT;
|
||||||
} else if (EconTime::UsingWallclockUnits()) {
|
} else if (EconTime::UsingWallclockUnits()) {
|
||||||
|
if (DayLengthFactor() > 1) {
|
||||||
|
tool_tip = widget == WID_VD_INCREASE_SERVICING_INTERVAL ? STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_PRODINT : STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_PRODINT;
|
||||||
|
} else {
|
||||||
tool_tip = widget == WID_VD_INCREASE_SERVICING_INTERVAL ? STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES : STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES;
|
tool_tip = widget == WID_VD_INCREASE_SERVICING_INTERVAL ? STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES : STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_MINUTES;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
tool_tip = widget == WID_VD_INCREASE_SERVICING_INTERVAL ? STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS : STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS;
|
tool_tip = widget == WID_VD_INCREASE_SERVICING_INTERVAL ? STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP_DAYS : STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP_DAYS;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user