From b6b6cf68345d1f9f79d7056a1d6a485d8b9368a6 Mon Sep 17 00:00:00 2001 From: Alexander Batalov Date: Sat, 18 Jun 2022 18:25:13 +0300 Subject: [PATCH] Cleanup options.h See #42 --- src/options.cc | 263 ++++++++++++++++++++++++++++++++++--------------- src/options.h | 176 --------------------------------- 2 files changed, 184 insertions(+), 255 deletions(-) diff --git a/src/options.cc b/src/options.cc index 3e6d983..def7ba9 100644 --- a/src/options.cc +++ b/src/options.cc @@ -1,5 +1,6 @@ #include "options.h" +#include "art.h" #include "color.h" #include "combat.h" #include "combat_ai.h" @@ -11,9 +12,11 @@ #include "game_config.h" #include "game_mouse.h" #include "game_sound.h" +#include "geometry.h" #include "grayscale.h" #include "loadsave.h" #include "memory.h" +#include "message.h" #include "platform_compat.h" #include "scripts.h" #include "text_font.h" @@ -30,8 +33,116 @@ #define PREFERENCES_WINDOW_WIDTH 640 #define PREFERENCES_WINDOW_HEIGHT 480 +#define OPTIONS_WINDOW_BUTTONS_COUNT (10) +#define PRIMARY_OPTION_VALUE_COUNT (4) +#define SECONDARY_OPTION_VALUE_COUNT (2) + +typedef enum Preference { + PREF_GAME_DIFFICULTY, + PREF_COMBAT_DIFFICULTY, + PREF_VIOLENCE_LEVEL, + PREF_TARGET_HIGHLIGHT, + PREF_COMBAT_LOOKS, + PREF_COMBAT_MESSAGES, + PREF_COMBAT_TAUNTS, + PREF_LANGUAGE_FILTER, + PREF_RUNNING, + PREF_SUBTITLES, + PREF_ITEM_HIGHLIGHT, + PREF_COMBAT_SPEED, + PREF_TEXT_BASE_DELAY, + PREF_MASTER_VOLUME, + PREF_MUSIC_VOLUME, + PREF_SFX_VOLUME, + PREF_SPEECH_VOLUME, + PREF_BRIGHTNESS, + PREF_MOUSE_SENSITIVIY, + PREF_COUNT, + FIRST_PRIMARY_PREF = PREF_GAME_DIFFICULTY, + LAST_PRIMARY_PREF = PREF_COMBAT_LOOKS, + PRIMARY_PREF_COUNT = LAST_PRIMARY_PREF - FIRST_PRIMARY_PREF + 1, + FIRST_SECONDARY_PREF = PREF_COMBAT_MESSAGES, + LAST_SECONDARY_PREF = PREF_ITEM_HIGHLIGHT, + SECONDARY_PREF_COUNT = LAST_SECONDARY_PREF - FIRST_SECONDARY_PREF + 1, + FIRST_RANGE_PREF = PREF_COMBAT_SPEED, + LAST_RANGE_PREF = PREF_MOUSE_SENSITIVIY, + RANGE_PREF_COUNT = LAST_RANGE_PREF - FIRST_RANGE_PREF + 1, +} Preference; + +typedef enum PauseWindowFrm { + PAUSE_WINDOW_FRM_BACKGROUND, + PAUSE_WINDOW_FRM_DONE_BOX, + PAUSE_WINDOW_FRM_LITTLE_RED_BUTTON_UP, + PAUSE_WINDOW_FRM_LITTLE_RED_BUTTON_DOWN, + PAUSE_WINDOW_FRM_COUNT, +} PauseWindowFrm; + +typedef enum OptionsWindowFrm { + OPTIONS_WINDOW_FRM_BACKGROUND, + OPTIONS_WINDOW_FRM_BUTTON_ON, + OPTIONS_WINDOW_FRM_BUTTON_OFF, + OPTIONS_WINDOW_FRM_COUNT, +} OptionsWindowFrm; + +typedef enum PreferencesWindowFrm { + PREFERENCES_WINDOW_FRM_BACKGROUND, + // Knob (for range preferences) + PREFERENCES_WINDOW_FRM_KNOB_OFF, + // 4-way switch (for primary preferences) + PREFERENCES_WINDOW_FRM_PRIMARY_SWITCH, + // 2-way switch (for secondary preferences) + PREFERENCES_WINDOW_FRM_SECONDARY_SWITCH, + PREFERENCES_WINDOW_FRM_CHECKBOX_ON, + PREFERENCES_WINDOW_FRM_CHECKBOX_OFF, + PREFERENCES_WINDOW_FRM_6, + // Active knob (for range preferences) + PREFERENCES_WINDOW_FRM_KNOB_ON, + PREFERENCES_WINDOW_FRM_LITTLE_RED_BUTTON_UP, + PREFERENCES_WINDOW_FRM_LITTLE_RED_BUTTON_DOWN, + PREFERENCES_WINDOW_FRM_COUNT, +} PreferencesWindowFrm; + +#pragma pack(2) +typedef struct PreferenceDescription { + // The number of options. + short valuesCount; + + // Direction of rotation: + // 0 - clockwise (incrementing value), + // 1 - counter-clockwise (decrementing value) + short direction; + short knobX; + short knobY; + // Min x coordinate of the preference control bounding box. + short minX; + // Max x coordinate of the preference control bounding box. + short maxX; + short labelIds[PRIMARY_OPTION_VALUE_COUNT]; + int btn; + char name[32]; + double minValue; + double maxValue; + int* valuePtr; +} PreferenceDescription; +#pragma pack() + +static int optionsWindowInit(); +static int optionsWindowFree(); +static void _ShadeScreen(bool a1); +static void _SetSystemPrefs(); +static void _SaveSettings(); +static void _RestoreSettings(); +static void preferencesSetDefaults(bool a1); +static void _JustUpdate_(); +static void _UpdateThing(int index); +int _SavePrefs(bool save); +static int preferencesWindowInit(); +static int preferencesWindowFree(); +static int _do_prefscreen(); +static void _DoThing(int eventCode); + // 0x48FBD0 -const int _row1Ytab[PRIMARY_PREF_COUNT] = { +static const int _row1Ytab[PRIMARY_PREF_COUNT] = { 48, 125, 203, @@ -40,7 +151,7 @@ const int _row1Ytab[PRIMARY_PREF_COUNT] = { }; // 0x48FBDA -const int _row2Ytab[SECONDARY_PREF_COUNT] = { +static const int _row2Ytab[SECONDARY_PREF_COUNT] = { 49, 116, 181, @@ -50,7 +161,7 @@ const int _row2Ytab[SECONDARY_PREF_COUNT] = { }; // 0x48FBE6 -const int _row3Ytab[RANGE_PREF_COUNT] = { +static const int _row3Ytab[RANGE_PREF_COUNT] = { 19, 94, 165, @@ -63,7 +174,7 @@ const int _row3Ytab[RANGE_PREF_COUNT] = { // x offsets for primary preferences from the knob position // 0x48FBF6 -const short word_48FBF6[PRIMARY_OPTION_VALUE_COUNT] = { +static const short word_48FBF6[PRIMARY_OPTION_VALUE_COUNT] = { 2, 25, 46, @@ -72,7 +183,7 @@ const short word_48FBF6[PRIMARY_OPTION_VALUE_COUNT] = { // y offsets for primary preference option values from the knob position // 0x48FBFE -const short word_48FBFE[PRIMARY_OPTION_VALUE_COUNT] = { +static const short word_48FBFE[PRIMARY_OPTION_VALUE_COUNT] = { 10, -4, 10, @@ -81,13 +192,13 @@ const short word_48FBFE[PRIMARY_OPTION_VALUE_COUNT] = { // x offsets for secondary prefrence option values from the knob position // 0x48FC06 -const short word_48FC06[SECONDARY_OPTION_VALUE_COUNT] = { +static const short word_48FC06[SECONDARY_OPTION_VALUE_COUNT] = { 4, 21, }; // 0x48FC0C -const int gPauseWindowFrmIds[PAUSE_WINDOW_FRM_COUNT] = { +static const int gPauseWindowFrmIds[PAUSE_WINDOW_FRM_COUNT] = { 208, // charwin.frm - character editor 209, // donebox.frm - character editor 8, // lilredup.frm - little red button up @@ -96,7 +207,7 @@ const int gPauseWindowFrmIds[PAUSE_WINDOW_FRM_COUNT] = { // y offsets for secondary preferences // 0x48FC30 -const int dword_48FC30[SECONDARY_PREF_COUNT] = { +static const int dword_48FC30[SECONDARY_PREF_COUNT] = { 66, // combat messages 133, // combat taunts 200, // language filter @@ -107,7 +218,7 @@ const int dword_48FC30[SECONDARY_PREF_COUNT] = { // y offsets for primary preferences // 0x48FC1C -const int dword_48FC1C[PRIMARY_PREF_COUNT] = { +static const int dword_48FC1C[PRIMARY_PREF_COUNT] = { 66, // game difficulty 143, // combat difficulty 222, // violence level @@ -116,35 +227,35 @@ const int dword_48FC1C[PRIMARY_PREF_COUNT] = { }; // 0x50C168 -const double dbl_50C168 = 1.17999267578125; +static const double dbl_50C168 = 1.17999267578125; // 0x50C170 -const double dbl_50C170 = 0.01124954223632812; +static const double dbl_50C170 = 0.01124954223632812; // 0x50C178 -const double dbl_50C178 = -0.01124954223632812; +static const double dbl_50C178 = -0.01124954223632812; // 0x50C180 -const double dbl_50C180 = 1.17999267578125; +static const double dbl_50C180 = 1.17999267578125; // 0x50C2D0 -const double dbl_50C2D0 = -1.0; +static const double dbl_50C2D0 = -1.0; // 0x50C2D8 -const double dbl_50C2D8 = 0.2; +static const double dbl_50C2D8 = 0.2; // 0x50C2E0 -const double dbl_50C2E0 = 2.0; +static const double dbl_50C2E0 = 2.0; // 0x5197C0 -const int gOptionsWindowFrmIds[OPTIONS_WINDOW_FRM_COUNT] = { +static const int gOptionsWindowFrmIds[OPTIONS_WINDOW_FRM_COUNT] = { 220, // opbase.frm - character editor 222, // opbtnon.frm - character editor 221, // opbtnoff.frm - character editor }; // 0x5197CC -const int gPreferencesWindowFrmIds[PREFERENCES_WINDOW_FRM_COUNT] = { +static const int gPreferencesWindowFrmIds[PREFERENCES_WINDOW_FRM_COUNT] = { 240, // prefscrn.frm - options screen 241, // prfsldof.frm - options screen 242, // prfbknbs.frm - options screen @@ -158,7 +269,7 @@ const int gPreferencesWindowFrmIds[PREFERENCES_WINDOW_FRM_COUNT] = { }; // 0x5197F8 -PreferenceDescription gPreferenceDescriptions[PREF_COUNT] = { +static PreferenceDescription gPreferenceDescriptions[PREF_COUNT] = { { 3, 0, 76, 71, 0, 0, { 203, 204, 205, 0 }, 0, GAME_CONFIG_GAME_DIFFICULTY_KEY, 0, 0, &gPreferencesGameDifficulty1 }, { 3, 0, 76, 149, 0, 0, { 206, 204, 208, 0 }, 0, GAME_CONFIG_COMBAT_DIFFICULTY_KEY, 0, 0, &gPreferencesCombatDifficulty1 }, { 4, 0, 76, 226, 0, 0, { 214, 215, 204, 216 }, 0, GAME_CONFIG_VIOLENCE_LEVEL_KEY, 0, 0, &gPreferencesViolenceLevel1 }, @@ -181,115 +292,115 @@ PreferenceDescription gPreferenceDescriptions[PREF_COUNT] = { }; // 0x6637D0 -Size gOptionsWindowFrmSizes[OPTIONS_WINDOW_FRM_COUNT]; +static Size gOptionsWindowFrmSizes[OPTIONS_WINDOW_FRM_COUNT]; // 0x6637E8 -MessageList gOptionsMessageList; +static MessageList gOptionsMessageList; // 0x6637F0 -Size gPreferencesWindowFrmSizes[PREFERENCES_WINDOW_FRM_COUNT]; +static Size gPreferencesWindowFrmSizes[PREFERENCES_WINDOW_FRM_COUNT]; // 0x663840 -MessageListItem gOptionsMessageListItem; +static MessageListItem gOptionsMessageListItem; // 0x663850 -unsigned char* gPreferencesWindowFrmData[PREFERENCES_WINDOW_FRM_COUNT]; +static unsigned char* gPreferencesWindowFrmData[PREFERENCES_WINDOW_FRM_COUNT]; // 0x663878 -unsigned char* _opbtns[OPTIONS_WINDOW_BUTTONS_COUNT]; +static unsigned char* _opbtns[OPTIONS_WINDOW_BUTTONS_COUNT]; // 0x6638A0 -CacheEntry* gPreferencesWindowFrmHandles[PREFERENCES_WINDOW_FRM_COUNT]; +static CacheEntry* gPreferencesWindowFrmHandles[PREFERENCES_WINDOW_FRM_COUNT]; // 0x6638C8 -double gPreferencesTextBaseDelay2; +static double gPreferencesTextBaseDelay2; // 0x6638D0 -double gPreferencesBrightness1; +static double gPreferencesBrightness1; // 0x6638D8 -double gPreferencesBrightness2; +static double gPreferencesBrightness2; // 0x6638E0 -double gPreferencesTextBaseDelay1; +static double gPreferencesTextBaseDelay1; // 0x6638E8 -double gPreferencesMouseSensitivity1; +static double gPreferencesMouseSensitivity1; // 0x6638F0 -double gPreferencesMouseSensitivity2; +static double gPreferencesMouseSensitivity2; // 0x6638F8 -unsigned char* gPreferencesWindowBuffer; +static unsigned char* gPreferencesWindowBuffer; // 0x6638FC -bool gOptionsWindowGameMouseObjectsWasVisible; +static bool gOptionsWindowGameMouseObjectsWasVisible; // 0x663900 -int gOptionsWindow; +static int gOptionsWindow; // 0x663904 -int gPreferencesWindow; +static int gPreferencesWindow; // 0x663908 -unsigned char* gOptionsWindowBuffer; +static unsigned char* gOptionsWindowBuffer; // 0x66390C -CacheEntry* gOptionsWindowFrmHandles[OPTIONS_WINDOW_FRM_COUNT]; +static CacheEntry* gOptionsWindowFrmHandles[OPTIONS_WINDOW_FRM_COUNT]; // 0x663918 -unsigned char* gOptionsWindowFrmData[OPTIONS_WINDOW_FRM_COUNT]; +static unsigned char* gOptionsWindowFrmData[OPTIONS_WINDOW_FRM_COUNT]; // 0x663924 -int gPreferencesGameDifficulty2; +static int gPreferencesGameDifficulty2; // 0x663928 -int gPreferencesCombatDifficulty2; +static int gPreferencesCombatDifficulty2; // 0x66392C -int gPreferencesViolenceLevel2; +static int gPreferencesViolenceLevel2; // 0x663930 -int gPreferencesTargetHighlight2; +static int gPreferencesTargetHighlight2; // 0x663934 -int gPreferencesCombatLooks2; +static int gPreferencesCombatLooks2; // 0x663938 -int gPreferencesCombatMessages2; +static int gPreferencesCombatMessages2; // 0x66393C -int gPreferencesCombatTaunts2; +static int gPreferencesCombatTaunts2; // 0x663940 -int gPreferencesLanguageFilter2; +static int gPreferencesLanguageFilter2; // 0x663944 -int gPreferencesRunning2; +static int gPreferencesRunning2; // 0x663948 -int gPreferencesSubtitles2; +static int gPreferencesSubtitles2; // 0x66394C -int gPreferencesItemHighlight2; +static int gPreferencesItemHighlight2; // 0x663950 -int gPreferencesCombatSpeed2; +static int gPreferencesCombatSpeed2; // 0x663954 -int gPreferencesPlayerSpeedup2; +static int gPreferencesPlayerSpeedup2; // 0x663958 -int gPreferencesMasterVolume2; +static int gPreferencesMasterVolume2; // 0x66395C -int gPreferencesMusicVolume2; +static int gPreferencesMusicVolume2; // 0x663960 -int gPreferencesSoundEffectsVolume2; +static int gPreferencesSoundEffectsVolume2; // 0x663964 -int gPreferencesSpeechVolume2; +static int gPreferencesSpeechVolume2; // 0x663970 int gPreferencesSoundEffectsVolume1; @@ -313,13 +424,13 @@ int gPreferencesPlayerSpeedup1; int gPreferencesCombatTaunts1; // 0x66398C -int gOptionsWindowOldFont; +static int gOptionsWindowOldFont; // 0x663990 int gPreferencesMusicVolume1; // 0x663994 -bool gOptionsWindowIsoWasEnabled; +static bool gOptionsWindowIsoWasEnabled; // 0x663998 int gPreferencesRunning1; @@ -328,13 +439,13 @@ int gPreferencesRunning1; int gPreferencesCombatSpeed1; // -int _plyrspdbid; +static int _plyrspdbid; // 0x6639A4 int gPreferencesItemHighlight1; // 0x6639A8 -bool _changed; +static bool _changed; // 0x6639AC int gPreferencesCombatMessages1; @@ -448,7 +559,7 @@ int showOptionsWithInitialKeyCode(int initialKeyCode) } // 0x48FE14 -int optionsWindowInit() +static int optionsWindowInit() { gOptionsWindowOldFont = fontGetCurrent(); @@ -569,7 +680,7 @@ int optionsWindowInit() } // 0x490244 -int optionsWindowFree() +static int optionsWindowFree() { windowDestroy(gOptionsWindow); fontSetCurrent(gOptionsWindowOldFont); @@ -780,7 +891,7 @@ int showPause(bool a1) } // 0x490748 -void _ShadeScreen(bool a1) +static void _ShadeScreen(bool a1) { if (a1) { mouseHideCursor(); @@ -800,7 +911,7 @@ void _ShadeScreen(bool a1) } // 0x492AA8 -void _SetSystemPrefs() +static void _SetSystemPrefs() { preferencesSetDefaults(false); @@ -831,7 +942,7 @@ void _SetSystemPrefs() // Copy options (1) to (2). // // 0x493054 -void _SaveSettings() +static void _SaveSettings() { gPreferencesGameDifficulty2 = gPreferencesGameDifficulty1; gPreferencesCombatDifficulty2 = gPreferencesCombatDifficulty1; @@ -858,7 +969,7 @@ void _SaveSettings() // Copy options (2) to (1). // // 0x493128 -void _RestoreSettings() +static void _RestoreSettings() { gPreferencesGameDifficulty1 = gPreferencesGameDifficulty2; gPreferencesCombatDifficulty1 = gPreferencesCombatDifficulty2; @@ -885,7 +996,7 @@ void _RestoreSettings() } // 0x492F60 -void preferencesSetDefaults(bool a1) +static void preferencesSetDefaults(bool a1) { gPreferencesCombatDifficulty1 = COMBAT_DIFFICULTY_NORMAL; gPreferencesViolenceLevel1 = VIOLENCE_LEVEL_MAXIMUM_BLOOD; @@ -919,7 +1030,7 @@ void preferencesSetDefaults(bool a1) } // 0x4931F8 -void _JustUpdate_() +static void _JustUpdate_() { gPreferencesGameDifficulty1 = std::clamp(gPreferencesGameDifficulty1, 0, 2); gPreferencesCombatDifficulty1 = std::clamp(gPreferencesCombatDifficulty1, 0, 2); @@ -975,7 +1086,7 @@ int _init_options_menu() } // 0x491A68 -void _UpdateThing(int index) +static void _UpdateThing(int index) { fontSetCurrent(101); @@ -1372,7 +1483,7 @@ void brightnessDecrease() } // 0x4908A0 -int preferencesWindowInit() +static int preferencesWindowInit() { int i; int fid; @@ -1583,7 +1694,7 @@ int preferencesWindowInit() } // 0x492870 -int preferencesWindowFree() +static int preferencesWindowFree() { if (_changed) { _SavePrefs(1); @@ -1601,7 +1712,7 @@ int preferencesWindowFree() } // 0x490798 -int _do_prefscreen() +static int _do_prefscreen() { if (preferencesWindowInit() == -1) { debugPrint("\nPREFERENCE MENU: Error loading preference dialog data!\n"); @@ -1657,7 +1768,7 @@ int _do_prefscreen() } // 0x490E8C -void _DoThing(int eventCode) +static void _DoThing(int eventCode) { int x; int y; @@ -1953,9 +2064,3 @@ void _DoThing(int eventCode) _changed = true; } - -// 0x48FC48 -int _do_options() -{ - return showOptionsWithInitialKeyCode(-1); -} diff --git a/src/options.h b/src/options.h index 0e6da35..c64e1b2 100644 --- a/src/options.h +++ b/src/options.h @@ -1,163 +1,8 @@ #ifndef OPTIONS_H #define OPTIONS_H -#include "art.h" #include "db.h" -#include "message.h" -#include "geometry.h" -#define OPTIONS_WINDOW_BUTTONS_COUNT (10) -#define PRIMARY_OPTION_VALUE_COUNT (4) -#define SECONDARY_OPTION_VALUE_COUNT (2) - -typedef enum Preference { - PREF_GAME_DIFFICULTY, - PREF_COMBAT_DIFFICULTY, - PREF_VIOLENCE_LEVEL, - PREF_TARGET_HIGHLIGHT, - PREF_COMBAT_LOOKS, - PREF_COMBAT_MESSAGES, - PREF_COMBAT_TAUNTS, - PREF_LANGUAGE_FILTER, - PREF_RUNNING, - PREF_SUBTITLES, - PREF_ITEM_HIGHLIGHT, - PREF_COMBAT_SPEED, - PREF_TEXT_BASE_DELAY, - PREF_MASTER_VOLUME, - PREF_MUSIC_VOLUME, - PREF_SFX_VOLUME, - PREF_SPEECH_VOLUME, - PREF_BRIGHTNESS, - PREF_MOUSE_SENSITIVIY, - PREF_COUNT, - FIRST_PRIMARY_PREF = PREF_GAME_DIFFICULTY, - LAST_PRIMARY_PREF = PREF_COMBAT_LOOKS, - PRIMARY_PREF_COUNT = LAST_PRIMARY_PREF - FIRST_PRIMARY_PREF + 1, - FIRST_SECONDARY_PREF = PREF_COMBAT_MESSAGES, - LAST_SECONDARY_PREF = PREF_ITEM_HIGHLIGHT, - SECONDARY_PREF_COUNT = LAST_SECONDARY_PREF - FIRST_SECONDARY_PREF + 1, - FIRST_RANGE_PREF = PREF_COMBAT_SPEED, - LAST_RANGE_PREF = PREF_MOUSE_SENSITIVIY, - RANGE_PREF_COUNT = LAST_RANGE_PREF - FIRST_RANGE_PREF + 1, -} Preference; - -typedef enum PauseWindowFrm { - PAUSE_WINDOW_FRM_BACKGROUND, - PAUSE_WINDOW_FRM_DONE_BOX, - PAUSE_WINDOW_FRM_LITTLE_RED_BUTTON_UP, - PAUSE_WINDOW_FRM_LITTLE_RED_BUTTON_DOWN, - PAUSE_WINDOW_FRM_COUNT, -} PauseWindowFrm; - -typedef enum OptionsWindowFrm { - OPTIONS_WINDOW_FRM_BACKGROUND, - OPTIONS_WINDOW_FRM_BUTTON_ON, - OPTIONS_WINDOW_FRM_BUTTON_OFF, - OPTIONS_WINDOW_FRM_COUNT, -} OptionsWindowFrm; - -typedef enum PreferencesWindowFrm { - PREFERENCES_WINDOW_FRM_BACKGROUND, - // Knob (for range preferences) - PREFERENCES_WINDOW_FRM_KNOB_OFF, - // 4-way switch (for primary preferences) - PREFERENCES_WINDOW_FRM_PRIMARY_SWITCH, - // 2-way switch (for secondary preferences) - PREFERENCES_WINDOW_FRM_SECONDARY_SWITCH, - PREFERENCES_WINDOW_FRM_CHECKBOX_ON, - PREFERENCES_WINDOW_FRM_CHECKBOX_OFF, - PREFERENCES_WINDOW_FRM_6, - // Active knob (for range preferences) - PREFERENCES_WINDOW_FRM_KNOB_ON, - PREFERENCES_WINDOW_FRM_LITTLE_RED_BUTTON_UP, - PREFERENCES_WINDOW_FRM_LITTLE_RED_BUTTON_DOWN, - PREFERENCES_WINDOW_FRM_COUNT, -} PreferencesWindowFrm; - -#pragma pack(2) -typedef struct PreferenceDescription { - // The number of options. - short valuesCount; - - // Direction of rotation: - // 0 - clockwise (incrementing value), - // 1 - counter-clockwise (decrementing value) - short direction; - short knobX; - short knobY; - // Min x coordinate of the preference control bounding box. - short minX; - // Max x coordinate of the preference control bounding box. - short maxX; - short labelIds[PRIMARY_OPTION_VALUE_COUNT]; - int btn; - char name[32]; - double minValue; - double maxValue; - int* valuePtr; -} PreferenceDescription; -#pragma pack() - -extern const int _row1Ytab[5]; -extern const int _row2Ytab[6]; -extern const int _row3Ytab[8]; -extern const short word_48FBF6[PRIMARY_OPTION_VALUE_COUNT]; -extern const short word_48FBFE[PRIMARY_OPTION_VALUE_COUNT]; -extern const short word_48FC06[SECONDARY_OPTION_VALUE_COUNT]; -extern const int gPauseWindowFrmIds[PAUSE_WINDOW_FRM_COUNT]; -extern const int dword_48FC30[SECONDARY_PREF_COUNT]; -extern const int dword_48FC1C[PRIMARY_PREF_COUNT]; - -extern const double dbl_50C168; -extern const double dbl_50C170; -extern const double dbl_50C178; -extern const double dbl_50C180; -extern const double dbl_50C2D0; -extern const double dbl_50C2D8; -extern const double dbl_50C2E0; - -extern const int gOptionsWindowFrmIds[OPTIONS_WINDOW_FRM_COUNT]; -extern const int gPreferencesWindowFrmIds[PREFERENCES_WINDOW_FRM_COUNT]; -extern PreferenceDescription gPreferenceDescriptions[PREF_COUNT]; - -extern Size gOptionsWindowFrmSizes[OPTIONS_WINDOW_FRM_COUNT]; -extern MessageList gOptionsMessageList; -extern Size gPreferencesWindowFrmSizes[PREFERENCES_WINDOW_FRM_COUNT]; -extern MessageListItem gOptionsMessageListItem; -extern unsigned char* gPreferencesWindowFrmData[PREFERENCES_WINDOW_FRM_COUNT]; -extern unsigned char* _opbtns[OPTIONS_WINDOW_BUTTONS_COUNT]; -extern CacheEntry* gPreferencesWindowFrmHandles[PREFERENCES_WINDOW_FRM_COUNT]; -extern double gPreferencesTextBaseDelay2; -extern double gPreferencesBrightness1; -extern double gPreferencesBrightness2; -extern double gPreferencesTextBaseDelay1; -extern double gPreferencesMouseSensitivity1; -extern double gPreferencesMouseSensitivity2; -extern unsigned char* gPreferencesWindowBuffer; -extern bool gOptionsWindowGameMouseObjectsWasVisible; -extern int gOptionsWindow; -extern int gPreferencesWindow; -extern unsigned char* gOptionsWindowBuffer; -extern CacheEntry* gOptionsWindowFrmHandles[OPTIONS_WINDOW_FRM_COUNT]; -extern unsigned char* gOptionsWindowFrmData[OPTIONS_WINDOW_FRM_COUNT]; -extern int gPreferencesGameDifficulty2; -extern int gPreferencesCombatDifficulty2; -extern int gPreferencesViolenceLevel2; -extern int gPreferencesTargetHighlight2; -extern int gPreferencesCombatLooks2; -extern int gPreferencesCombatMessages2; -extern int gPreferencesCombatTaunts2; -extern int gPreferencesLanguageFilter2; -extern int gPreferencesRunning2; -extern int gPreferencesSubtitles2; -extern int gPreferencesItemHighlight2; -extern int gPreferencesCombatSpeed2; -extern int gPreferencesPlayerSpeedup2; -extern int gPreferencesMasterVolume2; -extern int gPreferencesMusicVolume2; -extern int gPreferencesSoundEffectsVolume2; -extern int gPreferencesSpeechVolume2; extern int gPreferencesSoundEffectsVolume1; extern int gPreferencesSubtitles1; extern int gPreferencesLanguageFilter1; @@ -165,14 +10,10 @@ extern int gPreferencesSpeechVolume1; extern int gPreferencesMasterVolume1; extern int gPreferencesPlayerSpeedup1; extern int gPreferencesCombatTaunts1; -extern int gOptionsWindowOldFont; extern int gPreferencesMusicVolume1; -extern bool gOptionsWindowIsoWasEnabled; extern int gPreferencesRunning1; extern int gPreferencesCombatSpeed1; -extern int _plyrspdbid; extern int gPreferencesItemHighlight1; -extern bool _changed; extern int gPreferencesCombatMessages1; extern int gPreferencesTargetHighlight1; extern int gPreferencesCombatDifficulty1; @@ -182,28 +23,11 @@ extern int gPreferencesCombatLooks1; int showOptions(); int showOptionsWithInitialKeyCode(int initialKeyCode); -int optionsWindowInit(); -int optionsWindowFree(); int showPause(bool a1); -void _ShadeScreen(bool a1); -void _SetSystemPrefs(); -void _SaveSettings(); -void _RestoreSettings(); -void preferencesSetDefaults(bool a1); -void _JustUpdate_(); -void _UpdateThing(int index); int _init_options_menu(); -int _SavePrefs(bool save); int preferencesSave(File* stream); int preferencesLoad(File* stream); void brightnessIncrease(); void brightnessDecrease(); -int preferencesWindowInit(); -int preferencesWindowFree(); -int _do_prefscreen(); -void _DoThing(int eventCode); -void brightnessIncrease(); -void brightnessDecrease(); -int _do_options(); #endif /* OPTIONS_H */