1 /*
2 
3 Copyright (C) 2015-2018 Night Dive Studios, LLC.
4 
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 
18 */
19 //====================================================================================
20 //
21 //		System Shock - ©1994-1995 Looking Glass Technologies, Inc.
22 //
23 //		Prefs.h	-	Handles saving and loading preferences.
24 //
25 //====================================================================================
26 
27 //--------------------
28 //  Types
29 //--------------------
30 typedef struct {
31     short prefVer;              // Version - set to 0 for now.
32     short prefPlayIntro;        // Play intro at startup if non-zero.
33 
34     // Game Options
35     short goMsgLength;          // 0 - normal, 1 - brief
36     bool goPopupLabels;
37     bool goOnScreenHelp;
38     short goLanguage;           // 0 - English, 1 - French, 2 - German
39     bool goCaptureMouse;
40     bool goInvertMouseY;
41 
42     // Sound Options
43     bool soBackMusic;
44     bool soSoundFX;
45     short soMusicVolume;
46     short soSfxVolume;
47     short soAudioLogVolume;
48     short soMidiBackend; // 0 => adlmidi, 1 => native, 2 => fluidsynth
49     short soMidiOutput;  // which of the MIDI backend's outputs to use
50 
51     // Display Options
52     short doVideoMode;
53     short doResolution;         // 0 - High, 1 - Low
54     short doDetail;             // 0 - Min, 1-Low, 2-High, 3-Max
55     short doGamma;
56     bool doUseQD;
57     bool doUseOpenGL;
58     // 0 => unfiltered
59     // 1 => bilinear
60     // TODO: add trilinear, anisotropic?
61     short doTextureFilter;
62 } ShockPrefs;
63 
64 //--------------------
65 //  Globals
66 //--------------------
67 extern ShockPrefs gShockPrefs;
68 
69 //--------------------
70 //  Prototypes
71 //--------------------
72 void SetDefaultPrefs(void);
73 int16_t LoadPrefs(void);
74 int16_t SavePrefs(void);
75 
76 //-------------------
77 //  Enums
78 //-------------------
79 enum OPT_SEQ_ { // Must be in the same order as in wraper.h
80         OPT_SEQ_ADLMIDI = 0,
81         OPT_SEQ_NativeMI,
82 #ifdef USE_FLUIDSYNTH
83         OPT_SEQ_FluidSyn,
84 #endif // USE_FLUIDSYNTH
85         OPT_SEQ_Max
86 };
87