Feature: Use real-time "wallclock" timekeeping units (#11341)

This commit is contained in:
Tyler Trahan
2024-01-23 11:36:09 -05:00
committed by GitHub
parent bbdbf9a589
commit fd9e72a7e7
30 changed files with 546 additions and 140 deletions

View File

@@ -65,6 +65,12 @@ enum StringControlCode {
SCC_VELOCITY,
SCC_HEIGHT,
SCC_UNITS_DAYS_OR_SECONDS,
SCC_UNITS_MONTHS_OR_MINUTES,
SCC_UNITS_YEARS_OR_PERIODS,
SCC_UNITS_YEARS_OR_MINUTES,
SCC_TIMEKEEPING_MODE_LIST,
SCC_DATE_TINY,
SCC_DATE_SHORT,
SCC_DATE_LONG,

View File

@@ -84,7 +84,7 @@ var = vehicle.servint_trains
type = SLE_UINT16
flags = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
def = DEF_SERVINT_DAYS_TRAINS
min = MIN_SERVINT_PERCENT
min = MIN_SERVINT_MINUTES
max = MAX_SERVINT_DAYS
interval = 1
str = STR_CONFIG_SETTING_SERVINT_TRAINS
@@ -98,7 +98,7 @@ var = vehicle.servint_roadveh
type = SLE_UINT16
flags = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
def = DEF_SERVINT_DAYS_ROADVEH
min = MIN_SERVINT_PERCENT
min = MIN_SERVINT_MINUTES
max = MAX_SERVINT_DAYS
interval = 1
str = STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES
@@ -112,7 +112,7 @@ var = vehicle.servint_ships
type = SLE_UINT16
flags = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
def = DEF_SERVINT_DAYS_SHIPS
min = MIN_SERVINT_PERCENT
min = MIN_SERVINT_MINUTES
max = MAX_SERVINT_DAYS
interval = 1
str = STR_CONFIG_SETTING_SERVINT_SHIPS
@@ -126,7 +126,7 @@ var = vehicle.servint_aircraft
type = SLE_UINT16
flags = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
def = DEF_SERVINT_DAYS_AIRCRAFT
min = MIN_SERVINT_PERCENT
min = MIN_SERVINT_MINUTES
max = MAX_SERVINT_DAYS
interval = 1
str = STR_CONFIG_SETTING_SERVINT_AIRCRAFT

View File

@@ -9,6 +9,7 @@
[pre-amble]
static void TownFoundingChanged(int32_t new_value);
static void ChangeTimekeepingUnits(int32_t new_value);
static const SettingVariant _economy_settings_table[] = {
[post-amble]
@@ -280,3 +281,16 @@ str = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE
strhelp = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_COMPANY_INFRASTRUCTURE); }
cat = SC_BASIC
[SDT_VAR]
var = economy.timekeeping_units
type = SLE_UINT8
flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
def = TKU_CALENDAR
min = TKU_CALENDAR
max = TKU_WALLCLOCK
str = STR_CONFIG_SETTING_TIMEKEEPING_UNITS
strval = STR_CONFIG_SETTING_TIMEKEEPING_UNITS_CALENDAR
strhelp = STR_CONFIG_SETTING_TIMEKEEPING_UNITS_HELPTEXT
post_cb = ChangeTimekeepingUnits
cat = SC_BASIC

View File

@@ -7,6 +7,7 @@
; GUI settings as stored in the main configuration file ("openttd.cfg").
[pre-amble]
static bool CanChangeTimetableMode(int32_t &new_value);
static void v_PositionMainToolbar(int32_t new_value);
static void v_PositionStatusbar(int32_t new_value);
static void RedrawSmallmap(int32_t new_value);
@@ -430,6 +431,7 @@ max = 2
str = STR_CONFIG_SETTING_TIMETABLE_MODE
strhelp = STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT
strval = STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS
pre_cb = CanChangeTimetableMode
post_cb = [](auto) { InvalidateWindowClassesData(WC_VEHICLE_TIMETABLE, VIWD_MODIFY_ORDERS); }
cat = SC_ADVANCED

View File

@@ -30,6 +30,7 @@ struct CmdStruct {
};
extern void EmitSingleChar(Buffer *buffer, char *buf, int value);
extern void EmitTKM(Buffer* buffer, char* buf, int value);
extern void EmitPlural(Buffer *buffer, char *buf, int value);
extern void EmitGender(Buffer *buffer, char *buf, int value);
@@ -88,6 +89,13 @@ static const CmdStruct _cmd_structs[] = {
{"VELOCITY", EmitSingleChar, SCC_VELOCITY, 1, 0, C_NONE},
{"HEIGHT", EmitSingleChar, SCC_HEIGHT, 1, 0, C_NONE},
{"UNITS_DAYS_OR_SECONDS", EmitSingleChar, SCC_UNITS_DAYS_OR_SECONDS, 1, 0, C_NONE},
{"UNITS_MONTHS_OR_MINUTES", EmitSingleChar, SCC_UNITS_MONTHS_OR_MINUTES, 1, 0, C_NONE},
{"UNITS_YEARS_OR_PERIODS", EmitSingleChar, SCC_UNITS_YEARS_OR_PERIODS, 1, 0, C_NONE},
{"UNITS_YEARS_OR_MINUTES", EmitSingleChar, SCC_UNITS_YEARS_OR_MINUTES, 1, 0, C_NONE},
{"TKM", EmitTKM, 0, 0, -1, C_DONTCOUNT}, // Timekeeping mode string selection, e.g. "{TKM month minute}"
{"P", EmitPlural, 0, 0, -1, C_DONTCOUNT}, // plural specifier
{"G", EmitGender, 0, 0, -1, C_DONTCOUNT}, // gender specifier