parent
94f7ee280e
commit
b6b6cf6834
263
src/options.cc
263
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);
|
||||
}
|
||||
|
|
176
src/options.h
176
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 */
|
||||
|
|
Loading…
Reference in New Issue