1 //=============================================================================
2 //
3 // Adventure Game Studio (AGS)
4 //
5 // Copyright (C) 1999-2011 Chris Jones and 2011-20xx others
6 // The full list of copyright holders can be found in the Copyright.txt
7 // file, which is part of this source code distribution.
8 //
9 // The AGS source code is provided under the Artistic License 2.0.
10 // A copy of this license can be found in the file License.txt and at
11 // http://www.opensource.org/licenses/artistic-license-2.0.php
12 //
13 //=============================================================================
14 
15 #ifndef __AC_GAMESETUP_H
16 #define __AC_GAMESETUP_H
17 
18 #include "main/graphics_mode.h"
19 
20 
21 // Mouse control activation type
22 enum MouseControl
23 {
24     kMouseCtrl_Never,       // never control mouse (track system mouse position)
25     kMouseCtrl_Fullscreen,  // control mouse in fullscreen only
26     kMouseCtrl_Always,      // always control mouse (fullscreen and windowed)
27     kNumMouseCtrlOptions
28 };
29 
30 // Mouse speed definition, specifies how the speed setting is applied to the mouse movement
31 enum MouseSpeedDef
32 {
33     kMouseSpeed_Absolute,       // apply speed multiplier directly
34     kMouseSpeed_CurrentDisplay, // keep speed/resolution relation based on current system display mode
35     kNumMouseSpeedDefs
36 };
37 
38 struct GameSetup {
39     int digicard;
40     int midicard;
41     int mod_player;
42     int textheight; // text height used on the certain built-in GUI
43     bool  no_speech_pack;
44     bool  enable_antialiasing;
45     bool  disable_exception_handling;
46     AGS::Common::String data_files_dir;
47     AGS::Common::String main_data_filename;
48     AGS::Common::String install_dir; // optional custom install dir path
49     AGS::Common::String install_audio_dir; // optional custom install audio dir path
50     AGS::Common::String install_voice_dir; // optional custom install voice-over dir path
51     AGS::Common::String user_data_dir; // directory to write savedgames and user files to
52     AGS::Common::String shared_data_dir; // directory to write shared game files to
53     AGS::Common::String translation;
54     bool  mouse_auto_lock;
55     int   override_script_os;
56     char  override_multitasking;
57     bool  override_upscale;
58     float mouse_speed;
59     MouseControl mouse_control;
60     MouseSpeedDef mouse_speed_def;
61     bool  RenderAtScreenRes; // render sprites at screen resolution, as opposed to native one
62     int   Supersampling;
63 
64     ScreenSetup Screen;
65 
66     GameSetup();
67 };
68 
69 // TODO: setup object is used for two purposes: temporarily storing config
70 // options before engine is initialized, and storing certain runtime variables.
71 // Perhaps it makes sense to separate those two group of vars at some point.
72 extern GameSetup usetup;
73 
74 #endif // __AC_GAMESETUP_H