1 #ifndef _GAME_SETTINGS__H_
2 #define _GAME_SETTINGS__H_
3 
4 #include "VanillaDataStructures.h"
5 #include "MessageBoxScreen.h"
6 
7 #include <string_theory/string>
8 
9 
10 //If you add any options, MAKE sure you add the corresponding string to the Options Screen string array
11 enum
12 {
13 	TOPTION_SPEECH,
14 	TOPTION_MUTE_CONFIRMATIONS,
15 	TOPTION_SUBTITLES,
16 	TOPTION_KEY_ADVANCE_SPEECH,
17 	TOPTION_ANIMATE_SMOKE,
18 //	TOPTION_HIDE_BULLETS,
19 //	TOPTION_CONFIRM_MOVE,
20 	TOPTION_BLOOD_N_GORE,
21 	TOPTION_DONT_MOVE_MOUSE,
22 	TOPTION_OLD_SELECTION_METHOD,
23 	TOPTION_ALWAYS_SHOW_MOVEMENT_PATH,
24 
25 
26 //	TOPTION_TIME_LIMIT_TURNS,			//moved to the game init screen
27 
28 	TOPTION_SHOW_MISSES,
29 
30 	TOPTION_RTCONFIRM,
31 
32 
33 //	TOPTION_DISPLAY_ENEMY_INDICATOR,		//Displays the number of enemies seen by the merc, ontop of their portrait
34 	TOPTION_SLEEPWAKE_NOTIFICATION,
35 
36 	TOPTION_USE_METRIC_SYSTEM,		//If set, uses the metric system
37 
38 	TOPTION_MERC_ALWAYS_LIGHT_UP,
39 
40 	TOPTION_SMART_CURSOR,
41 
42 	TOPTION_SNAP_CURSOR_TO_DOOR,
43 
44 	TOPTION_GLOW_ITEMS,
45 	TOPTION_TOGGLE_TREE_TOPS,
46 	TOPTION_TOGGLE_WIREFRAME,
47 	TOPTION_3D_CURSOR,
48 
49 	NUM_GAME_OPTIONS,				//Toggle up this will be able to be Toggled by the player
50 
51 	//These options will NOT be toggable by the Player
52 	TOPTION_MERC_CASTS_LIGHT = NUM_GAME_OPTIONS,
53 	TOPTION_HIDE_BULLETS,
54 	TOPTION_TRACKING_MODE,
55 
56 	NUM_ALL_GAME_OPTIONS,
57 };
58 
59 
60 struct GAME_SETTINGS
61 {
62 	INT8				bLastSavedGameSlot;							// The last saved game number goes in here
63 	ST::string sCurrentSavedGameName; // The name of the current Savegame goes here. Only relevant for Dead is Dead games
64 
65 	//The following are set from the status of the toggle boxes in the Options Screen
66 	UINT8				fOptions[ NUM_ALL_GAME_OPTIONS ];
67 
68 	UINT32			uiMeanwhileScenesSeenFlags;
69 
70 	BOOLEAN			fHideHelpInAllScreens;
71 
72 	UINT8				ubSizeOfDisplayCover;
73 	UINT8				ubSizeOfLOS;
74 };
75 
76 
77 //Enums for the difficulty levels
78 enum
79 {
80 	DIF_LEVEL_EASY = 1,
81 	DIF_LEVEL_MEDIUM = 2,
82 	DIF_LEVEL_HARD = 3,
83 	NUM_DIF_LEVELS = DIF_LEVEL_HARD
84 };
85 
86 //Enums for the difficulty levels
87 enum
88 {
89 	DIF_CAN_SAVE,
90 	DIF_IRON_MAN,
91 	DIF_DEAD_IS_DEAD,
92 };
93 
94 
95 struct GAME_OPTIONS
96 {
97 	BOOLEAN fGunNut;
98 	BOOLEAN	fSciFi;
99 	UINT8		ubDifficultyLevel;
100 	BOOLEAN	fTurnTimeLimit;
101 	UINT8		ubGameSaveMode;
102 };
103 
104 //This structure will contain general Ja2 settings  NOT individual game settings.
105 extern GAME_SETTINGS gGameSettings;
106 
107 
108 //This structure will contain the Game options set at the beginning of the game.
109 extern GAME_OPTIONS gGameOptions;
110 
111 
112 void SaveGameSettings(void);
113 void LoadGameSettings(void);
114 
115 void InitGameOptions(void);
116 
117 void DisplayGameSettings(void);
118 
119 bool MeanwhileSceneSeen(UINT8 meanwhile_id);
120 void SetMeanwhileSceneSeen(UINT8 meanwhile_id);
121 
122 BOOLEAN CanGameBeSaved(void);
123 
124 void DoDeadIsDeadSaveIfNecessary(void);
125 
126 void CDromEjectionErrorMessageBoxCallBack(MessageBoxReturnValue);
127 
128 #endif
129