mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-09 19:10:38 +00:00
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
This commit is contained in:
parent
1536477fad
commit
af2b4ddf97
20
settings.c
20
settings.c
@ -1148,7 +1148,7 @@ static const SettingDesc _gameopt_settings[] = {
|
|||||||
* on a massive scale. */
|
* on a massive scale. */
|
||||||
const SettingDesc _patch_settings[] = {
|
const SettingDesc _patch_settings[] = {
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* User-interface section of the GUI-configure patches window (00 - 12) */
|
/* User-interface section of the GUI-configure patches window */
|
||||||
SDT_BOOL(Patches, vehicle_speed, S, 0, true, STR_CONFIG_PATCHES_VEHICLESPEED, NULL),
|
SDT_BOOL(Patches, vehicle_speed, S, 0, true, STR_CONFIG_PATCHES_VEHICLESPEED, NULL),
|
||||||
SDT_BOOL(Patches, status_long_date, S, 0, true, STR_CONFIG_PATCHES_LONGDATE, NULL),
|
SDT_BOOL(Patches, status_long_date, S, 0, true, STR_CONFIG_PATCHES_LONGDATE, NULL),
|
||||||
SDT_BOOL(Patches, show_finances, S, 0, true, STR_CONFIG_PATCHES_SHOWFINANCES, NULL),
|
SDT_BOOL(Patches, show_finances, S, 0, true, STR_CONFIG_PATCHES_SHOWFINANCES, NULL),
|
||||||
@ -1164,7 +1164,7 @@ const SettingDesc _patch_settings[] = {
|
|||||||
SDT_BOOL(Patches, link_terraform_toolbar, S, 0, false, STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR,NULL),
|
SDT_BOOL(Patches, link_terraform_toolbar, S, 0, false, STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR,NULL),
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* Construction section of the GUI-configure patches window (13 - 18) */
|
/* Construction section of the GUI-configure patches window */
|
||||||
SDT_BOOL(Patches, build_on_slopes, 0, 0, true, STR_CONFIG_PATCHES_BUILDONSLOPES, NULL),
|
SDT_BOOL(Patches, build_on_slopes, 0, 0, true, STR_CONFIG_PATCHES_BUILDONSLOPES, NULL),
|
||||||
SDT_BOOL(Patches, extra_dynamite, 0, 0, false, STR_CONFIG_PATCHES_EXTRADYNAMITE, NULL),
|
SDT_BOOL(Patches, extra_dynamite, 0, 0, false, STR_CONFIG_PATCHES_EXTRADYNAMITE, NULL),
|
||||||
SDT_BOOL(Patches, longbridges, 0, 0, true, STR_CONFIG_PATCHES_LONGBRIDGES, NULL),
|
SDT_BOOL(Patches, longbridges, 0, 0, true, STR_CONFIG_PATCHES_LONGBRIDGES, NULL),
|
||||||
@ -1173,7 +1173,7 @@ const SettingDesc _patch_settings[] = {
|
|||||||
SDT_VAR(Patches, drag_signals_density,SLE_UINT8,S, 0, 4, 1,20, STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY,NULL),
|
SDT_VAR(Patches, drag_signals_density,SLE_UINT8,S, 0, 4, 1,20, STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY,NULL),
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* Vehicle section of the GUI-configure patches window (19 - 42) */
|
/* Vehicle section of the GUI-configure patches window */
|
||||||
SDT_BOOL(Patches, realistic_acceleration, 0, 0, false, STR_CONFIG_PATCHES_REALISTICACCEL, NULL),
|
SDT_BOOL(Patches, realistic_acceleration, 0, 0, false, STR_CONFIG_PATCHES_REALISTICACCEL, NULL),
|
||||||
SDT_BOOL(Patches, forbid_90_deg, 0, 0, false, STR_CONFIG_PATCHES_FORBID_90_DEG, NULL),
|
SDT_BOOL(Patches, forbid_90_deg, 0, 0, false, STR_CONFIG_PATCHES_FORBID_90_DEG, NULL),
|
||||||
SDT_BOOL(Patches, mammoth_trains, 0, 0, true, STR_CONFIG_PATCHES_MAMMOTHTRAINS, NULL),
|
SDT_BOOL(Patches, mammoth_trains, 0, 0, true, STR_CONFIG_PATCHES_MAMMOTHTRAINS, NULL),
|
||||||
@ -1200,7 +1200,7 @@ const SettingDesc _patch_settings[] = {
|
|||||||
SDT_BOOL(Patches, wagon_speed_limits, 0, 0, true, STR_CONFIG_PATCHES_WAGONSPEEDLIMITS, NULL),
|
SDT_BOOL(Patches, wagon_speed_limits, 0, 0, true, STR_CONFIG_PATCHES_WAGONSPEEDLIMITS, NULL),
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* Station section of the GUI-configure patches window (43 - 51) */
|
/* Station section of the GUI-configure patches window */
|
||||||
SDT_BOOL(Patches, join_stations, 0, 0, true, STR_CONFIG_PATCHES_JOINSTATIONS, NULL),
|
SDT_BOOL(Patches, join_stations, 0, 0, true, STR_CONFIG_PATCHES_JOINSTATIONS, NULL),
|
||||||
SDT_BOOL(Patches, full_load_any, 0, 0, true, STR_CONFIG_PATCHES_FULLLOADANY, NULL),
|
SDT_BOOL(Patches, full_load_any, 0, 0, true, STR_CONFIG_PATCHES_FULLLOADANY, NULL),
|
||||||
SDT_BOOL(Patches, improved_load, 0, 0, false, STR_CONFIG_PATCHES_IMPROVEDLOAD, NULL),
|
SDT_BOOL(Patches, improved_load, 0, 0, false, STR_CONFIG_PATCHES_IMPROVEDLOAD, NULL),
|
||||||
@ -1212,7 +1212,7 @@ const SettingDesc _patch_settings[] = {
|
|||||||
SDT_BOOL(Patches, modified_catchment, 0, 0, true, STR_CONFIG_PATCHES_CATCHMENT, NULL),
|
SDT_BOOL(Patches, modified_catchment, 0, 0, true, STR_CONFIG_PATCHES_CATCHMENT, NULL),
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* Economy section of the GUI-configure patches window (52 - 62) */
|
/* Economy section of the GUI-configure patches window */
|
||||||
SDT_BOOL(Patches, inflation, 0, 0, true, STR_CONFIG_PATCHES_INFLATION, NULL),
|
SDT_BOOL(Patches, inflation, 0, 0, true, STR_CONFIG_PATCHES_INFLATION, NULL),
|
||||||
SDT_BOOL(Patches, build_rawmaterial_ind, 0, 0, false, STR_CONFIG_PATCHES_BUILDXTRAIND, NULL),
|
SDT_BOOL(Patches, build_rawmaterial_ind, 0, 0, false, STR_CONFIG_PATCHES_BUILDXTRAIND, NULL),
|
||||||
SDT_BOOL(Patches, multiple_industry_per_town, 0, 0, false, STR_CONFIG_PATCHES_MULTIPINDTOWN, NULL),
|
SDT_BOOL(Patches, multiple_industry_per_town, 0, 0, false, STR_CONFIG_PATCHES_MULTIPINDTOWN, NULL),
|
||||||
@ -1226,7 +1226,7 @@ const SettingDesc _patch_settings[] = {
|
|||||||
SDT_BOOL(Patches, allow_shares, 0, 0, true, STR_CONFIG_PATCHES_ALLOW_SHARES, NULL),
|
SDT_BOOL(Patches, allow_shares, 0, 0, true, STR_CONFIG_PATCHES_ALLOW_SHARES, NULL),
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* AI section of the GUI-configure patches window (63 - 68) */
|
/* AI section of the GUI-configure patches window */
|
||||||
SDT_BOOL(Patches, ainew_active, 0, 0, false, STR_CONFIG_PATCHES_AINEW_ACTIVE, AiNew_PatchActive_Warning),
|
SDT_BOOL(Patches, ainew_active, 0, 0, false, STR_CONFIG_PATCHES_AINEW_ACTIVE, AiNew_PatchActive_Warning),
|
||||||
SDT_BOOL(Patches, ai_in_multiplayer, 0, 0, false, STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER, Ai_In_Multiplayer_Warning),
|
SDT_BOOL(Patches, ai_in_multiplayer, 0, 0, false, STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER, Ai_In_Multiplayer_Warning),
|
||||||
SDT_BOOL(Patches, ai_disable_veh_train, 0, 0, false, STR_CONFIG_PATCHES_AI_BUILDS_TRAINS, NULL),
|
SDT_BOOL(Patches, ai_disable_veh_train, 0, 0, false, STR_CONFIG_PATCHES_AI_BUILDS_TRAINS, NULL),
|
||||||
@ -1235,7 +1235,7 @@ const SettingDesc _patch_settings[] = {
|
|||||||
SDT_BOOL(Patches, ai_disable_veh_ship, 0, 0, false, STR_CONFIG_PATCHES_AI_BUILDS_SHIPS, NULL),
|
SDT_BOOL(Patches, ai_disable_veh_ship, 0, 0, false, STR_CONFIG_PATCHES_AI_BUILDS_SHIPS, NULL),
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* Patches without any GUI representation (69 - 78) */
|
/* Patches without any GUI representation */
|
||||||
SDT_BOOL(Patches, keep_all_autosave, S, 0, false, STR_NULL, NULL),
|
SDT_BOOL(Patches, keep_all_autosave, S, 0, false, STR_NULL, NULL),
|
||||||
SDT_BOOL(Patches, autosave_on_exit, S, 0, false, STR_NULL, NULL),
|
SDT_BOOL(Patches, autosave_on_exit, S, 0, false, STR_NULL, NULL),
|
||||||
SDT_VAR(Patches, max_num_autosaves, SLE_UINT8, S, 0, 16, 0, 255, STR_NULL, NULL),
|
SDT_VAR(Patches, max_num_autosaves, SLE_UINT8, S, 0, 16, 0, 255, STR_NULL, NULL),
|
||||||
@ -1247,7 +1247,7 @@ const SettingDesc _patch_settings[] = {
|
|||||||
SDT_VAR(Patches, wait_twoway_signal, SLE_UINT8, 0, 0, 41, 2, 100, STR_NULL, NULL),
|
SDT_VAR(Patches, wait_twoway_signal, SLE_UINT8, 0, 0, 41, 2, 100, STR_NULL, NULL),
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/* New Pathfinding patch settings (79 - 93) */
|
/* New Pathfinding patch settings */
|
||||||
SDT_VAR(Patches, pf_maxlength, SLE_UINT16, 0, 0, 4096, 64, 65535, STR_NULL, NULL),
|
SDT_VAR(Patches, pf_maxlength, SLE_UINT16, 0, 0, 4096, 64, 65535, STR_NULL, NULL),
|
||||||
SDT_VAR(Patches, pf_maxdepth, SLE_UINT8, 0, 0, 48, 4, 255, STR_NULL, NULL),
|
SDT_VAR(Patches, pf_maxdepth, SLE_UINT8, 0, 0, 48, 4, 255, STR_NULL, NULL),
|
||||||
/* The maximum number of nodes to search */
|
/* The maximum number of nodes to search */
|
||||||
@ -1366,7 +1366,7 @@ void SaveToConfig(void)
|
|||||||
ini_free(ini);
|
ini_free(ini);
|
||||||
}
|
}
|
||||||
|
|
||||||
const SettingDesc *GetSettingDescription(uint index)
|
static const SettingDesc *GetSettingDescription(uint index)
|
||||||
{
|
{
|
||||||
if (index >= lengthof(_patch_settings)) return NULL;
|
if (index >= lengthof(_patch_settings)) return NULL;
|
||||||
return &_patch_settings[index];
|
return &_patch_settings[index];
|
||||||
@ -1423,7 +1423,7 @@ void SetPatchValue(uint index, const Patches *object, int32 value)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const SettingDesc *GetPatchFromName(const char *name, uint *i)
|
const SettingDesc *GetPatchFromName(const char *name, uint *i)
|
||||||
{
|
{
|
||||||
const SettingDesc *sd;
|
const SettingDesc *sd;
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ static inline void *ini_get_variable(const SaveLoad *sld, const void *object)
|
|||||||
|
|
||||||
void IConsoleSetPatchSetting(const char *name, const char *value);
|
void IConsoleSetPatchSetting(const char *name, const char *value);
|
||||||
void IConsoleGetPatchSetting(const char *name);
|
void IConsoleGetPatchSetting(const char *name);
|
||||||
const SettingDesc *GetSettingDescription(uint index);
|
const SettingDesc *GetPatchFromName(const char *name, uint *i);
|
||||||
void SetPatchValue(uint index, const Patches *object, int32 value);
|
void SetPatchValue(uint index, const Patches *object, int32 value);
|
||||||
|
|
||||||
#endif /* SETTINGS_H */
|
#endif /* SETTINGS_H */
|
||||||
|
156
settings_gui.c
156
settings_gui.c
@ -555,30 +555,114 @@ void ShowGameDifficulty(void)
|
|||||||
AllocateWindowDesc(&_game_difficulty_desc);
|
AllocateWindowDesc(&_game_difficulty_desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef uint PatchEntry;
|
static const char *_patches_ui[] = {
|
||||||
|
"vehicle_speed",
|
||||||
static const PatchEntry _patches_ui[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
|
"status_long_date",
|
||||||
static const PatchEntry _patches_construction[] = {13, 14, 15, 16, 17, 18};
|
"show_finances",
|
||||||
static const PatchEntry _patches_stations[] = {43, 44, 45, 46, 47, 48, 49, 50, 51};
|
"autoscroll",
|
||||||
static const PatchEntry _patches_economy[] = {52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62};
|
"reverse_scroll",
|
||||||
static const PatchEntry _patches_ai[] = {63, 64, 65, 66, 67, 68};
|
"errmsg_duration",
|
||||||
static const PatchEntry _patches_vehicles[] = {
|
"toolbar_pos",
|
||||||
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
|
"window_snap_radius",
|
||||||
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
|
"invisible_trees",
|
||||||
|
"population_in_label",
|
||||||
|
"map_x",
|
||||||
|
"map_y",
|
||||||
|
"link_terraform_toolbar",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char *_patches_construction[] = {
|
||||||
|
"build_on_slopes",
|
||||||
|
"extra_dynamite",
|
||||||
|
"longbridges",
|
||||||
|
"signal_side",
|
||||||
|
"always_small_airport",
|
||||||
|
"drag_signals_density",
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *_patches_stations[] = {
|
||||||
|
"join_stations",
|
||||||
|
"full_load_any",
|
||||||
|
"improved_load",
|
||||||
|
"selectgoods",
|
||||||
|
"new_nonstop",
|
||||||
|
"nonuniform_stations",
|
||||||
|
"station_spread",
|
||||||
|
"serviceathelipad",
|
||||||
|
"modified_catchment",
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *_patches_economy[] = {
|
||||||
|
"inflation",
|
||||||
|
"build_rawmaterial_ind",
|
||||||
|
"multiple_industry_per_town",
|
||||||
|
"same_industry_close",
|
||||||
|
"bribe",
|
||||||
|
"snow_line_height",
|
||||||
|
"colored_news_date",
|
||||||
|
"starting_date",
|
||||||
|
"ending_date",
|
||||||
|
"smooth_economy",
|
||||||
|
"allow_shares",
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *_patches_ai[] = {
|
||||||
|
"ainew_active",
|
||||||
|
"ai_in_multiplayer",
|
||||||
|
"ai_disable_veh_train",
|
||||||
|
"ai_disable_veh_roadveh",
|
||||||
|
"ai_disable_veh_aircraft",
|
||||||
|
"ai_disable_veh_ship",
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *_patches_vehicles[] = {
|
||||||
|
"realistic_acceleration",
|
||||||
|
"forbid_90_deg",
|
||||||
|
"mammoth_trains",
|
||||||
|
"gotodepot",
|
||||||
|
"roadveh_queue",
|
||||||
|
"new_pathfinding_all",
|
||||||
|
"train_income_warn",
|
||||||
|
"order_review_system",
|
||||||
|
"never_expire_vehicles",
|
||||||
|
"lost_train_days",
|
||||||
|
"autorenew",
|
||||||
|
"autorenew_months",
|
||||||
|
"autorenew_money",
|
||||||
|
"max_trains",
|
||||||
|
"max_roadveh",
|
||||||
|
"max_aircraft",
|
||||||
|
"max_ships",
|
||||||
|
"servint_ispercent",
|
||||||
|
"servint_trains",
|
||||||
|
"servint_roadveh",
|
||||||
|
"servint_ships",
|
||||||
|
"servint_aircraft",
|
||||||
|
"no_servicing_if_no_breakdowns",
|
||||||
|
"wagon_speed_limits",
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct PatchEntry {
|
||||||
|
const SettingDesc *setting;
|
||||||
|
uint index;
|
||||||
|
} PatchEntry;
|
||||||
|
|
||||||
typedef struct PatchPage {
|
typedef struct PatchPage {
|
||||||
const PatchEntry *entries;
|
const char **names;
|
||||||
|
PatchEntry *entries;
|
||||||
byte num;
|
byte num;
|
||||||
} PatchPage;
|
} PatchPage;
|
||||||
|
|
||||||
static const PatchPage _patches_page[] = {
|
/* PatchPage holds the categories, the number of elements in each category
|
||||||
{_patches_ui, lengthof(_patches_ui)},
|
* and (in NULL) a dynamic array of settings based on the string-representations
|
||||||
{_patches_construction, lengthof(_patches_construction)},
|
* of the settings. This way there is no worry about indeces, and such */
|
||||||
{_patches_vehicles, lengthof(_patches_vehicles)},
|
static PatchPage _patches_page[] = {
|
||||||
{_patches_stations, lengthof(_patches_stations)},
|
{_patches_ui, NULL, lengthof(_patches_ui)},
|
||||||
{_patches_economy, lengthof(_patches_economy)},
|
{_patches_construction, NULL, lengthof(_patches_construction)},
|
||||||
{_patches_ai, lengthof(_patches_ai)},
|
{_patches_vehicles, NULL, lengthof(_patches_vehicles)},
|
||||||
|
{_patches_stations, NULL, lengthof(_patches_stations)},
|
||||||
|
{_patches_economy, NULL, lengthof(_patches_economy)},
|
||||||
|
{_patches_ai, NULL, lengthof(_patches_ai)},
|
||||||
};
|
};
|
||||||
|
|
||||||
/** The main patches window. Shows a number of categories on top and
|
/** The main patches window. Shows a number of categories on top and
|
||||||
@ -591,12 +675,32 @@ static void PatchesSelectionWndProc(Window *w, WindowEvent *e)
|
|||||||
switch (e->event) {
|
switch (e->event) {
|
||||||
case WE_CREATE: {
|
case WE_CREATE: {
|
||||||
extern Patches _patches_newgame;
|
extern Patches _patches_newgame;
|
||||||
|
static bool first_time = true;
|
||||||
|
|
||||||
patches_ptr = (_game_mode == GM_MENU) ? &_patches_newgame : &_patches;
|
patches_ptr = (_game_mode == GM_MENU) ? &_patches_newgame : &_patches;
|
||||||
|
|
||||||
|
/* Build up the dynamic settings-array only once per OpenTTD session */
|
||||||
|
if (first_time) {
|
||||||
|
PatchPage *page;
|
||||||
|
for (page = &_patches_page[0]; page != endof(_patches_page); page++) {
|
||||||
|
uint i;
|
||||||
|
|
||||||
|
page->entries = malloc(page->num * sizeof(*page->entries));
|
||||||
|
for (i = 0; i != page->num; i++) {
|
||||||
|
uint index;
|
||||||
|
const SettingDesc *sd = GetPatchFromName(page->names[i], &index);
|
||||||
|
assert(sd != NULL);
|
||||||
|
|
||||||
|
page->entries[i].setting = sd;
|
||||||
|
page->entries[i].index = index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
first_time = false;
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case WE_PAINT: {
|
case WE_PAINT: {
|
||||||
int x, y;
|
int x, y;
|
||||||
const PatchEntry *pe;
|
|
||||||
const PatchPage *page = &_patches_page[WP(w,def_d).data_1];
|
const PatchPage *page = &_patches_page[WP(w,def_d).data_1];
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
@ -606,8 +710,8 @@ static void PatchesSelectionWndProc(Window *w, WindowEvent *e)
|
|||||||
|
|
||||||
x = 5;
|
x = 5;
|
||||||
y = 47;
|
y = 47;
|
||||||
for (i = 0, pe = page->entries; i != page->num; i++, pe++) {
|
for (i = 0; i != page->num; i++) {
|
||||||
const SettingDesc *sd = GetSettingDescription(*pe);
|
const SettingDesc *sd = page->entries[i].setting;
|
||||||
const SettingDescBase *sdb = &sd->desc;
|
const SettingDescBase *sdb = &sd->desc;
|
||||||
const void *var = ini_get_variable(&sd->save, patches_ptr);
|
const void *var = ini_get_variable(&sd->save, patches_ptr);
|
||||||
bool editable = true;
|
bool editable = true;
|
||||||
@ -672,7 +776,7 @@ static void PatchesSelectionWndProc(Window *w, WindowEvent *e)
|
|||||||
if (y % 11 > 9) return;
|
if (y % 11 > 9) return;
|
||||||
if (btn >= page->num) return;
|
if (btn >= page->num) return;
|
||||||
|
|
||||||
sd = GetSettingDescription(page->entries[btn]);
|
sd = page->entries[btn].setting;
|
||||||
|
|
||||||
/* return if action is only active in network, or only settable by server */
|
/* return if action is only active in network, or only settable by server */
|
||||||
if ((sd->desc.flags & SGF_NETWORK_ONLY) && !_networking) return;
|
if ((sd->desc.flags & SGF_NETWORK_ONLY) && !_networking) return;
|
||||||
@ -720,7 +824,7 @@ static void PatchesSelectionWndProc(Window *w, WindowEvent *e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (value != oldvalue) {
|
if (value != oldvalue) {
|
||||||
SetPatchValue(page->entries[btn], patches_ptr, value);
|
SetPatchValue(page->entries[btn].index, patches_ptr, value);
|
||||||
SetWindowDirty(w);
|
SetWindowDirty(w);
|
||||||
if (sdb->proc != NULL) sdb->proc((int32)ReadValue(var, sd->save.conv));
|
if (sdb->proc != NULL) sdb->proc((int32)ReadValue(var, sd->save.conv));
|
||||||
}
|
}
|
||||||
@ -753,15 +857,15 @@ static void PatchesSelectionWndProc(Window *w, WindowEvent *e)
|
|||||||
|
|
||||||
case WE_ON_EDIT_TEXT: {
|
case WE_ON_EDIT_TEXT: {
|
||||||
if (e->edittext.str != NULL) {
|
if (e->edittext.str != NULL) {
|
||||||
const uint index = _patches_page[WP(w,def_d).data_1].entries[WP(w,def_d).data_3];
|
const PatchEntry *pe = &_patches_page[WP(w,def_d).data_1].entries[WP(w,def_d).data_3];
|
||||||
const SettingDesc *sd = GetSettingDescription(index);
|
const SettingDesc *sd = pe->setting;
|
||||||
void *var = ini_get_variable(&sd->save, patches_ptr);
|
void *var = ini_get_variable(&sd->save, patches_ptr);
|
||||||
int32 value = atoi(e->edittext.str);
|
int32 value = atoi(e->edittext.str);
|
||||||
|
|
||||||
/* Save the correct currency-translated value */
|
/* Save the correct currency-translated value */
|
||||||
if (sd->desc.flags & SGF_CURRENCY) value /= _currency->rate;
|
if (sd->desc.flags & SGF_CURRENCY) value /= _currency->rate;
|
||||||
|
|
||||||
SetPatchValue(index, patches_ptr, value);
|
SetPatchValue(pe->index, patches_ptr, value);
|
||||||
SetWindowDirty(w);
|
SetWindowDirty(w);
|
||||||
|
|
||||||
if (sd->desc.proc != NULL) sd->desc.proc((int32)ReadValue(var, sd->save.conv));
|
if (sd->desc.proc != NULL) sd->desc.proc((int32)ReadValue(var, sd->save.conv));
|
||||||
|
Loading…
Reference in New Issue
Block a user