]> git.mxchange.org Git - quix0rs-blobwars.git/blob - src/CConfig.cpp
Initial conversion to SDL2.
[quix0rs-blobwars.git] / src / CConfig.cpp
1 #include "headers.h"
2
3 Config::Config()
4 {
5         sdlJoystick = NULL;
6         
7         for (int i = 0 ; i < CONTROL::MAX ; i++)
8         {
9                 command[i] = 0;
10         }
11 }
12
13 Config::~Config()
14 {
15 }
16
17 void Config::populate()
18 {
19         for (int i = 0 ; i < CONTROL::MAX ; i++)
20         {
21                 command[i] = (engine->keyState[keyboard.control[i]]); 
22                 
23                 if (joystick.control[i] >= 0)
24                 {
25                         command[i] = (command[i] || (engine->joystickState[joystick.control[i]]));
26                 }
27         }
28         
29         if (engine->joyX < -joystick.sensitivity) command[CONTROL::LEFT] = 1;
30         if (engine->joyX > joystick.sensitivity)  command[CONTROL::RIGHT] = 1;
31         if (engine->joyY < -joystick.sensitivity) command[CONTROL::UP] = 1;
32         if (engine->joyY > joystick.sensitivity)  command[CONTROL::DOWN] = 1;
33 }
34
35 void Config::populate(int *data)
36 {
37         for (int i = 0 ; i < CONTROL::MAX ; i++)
38         {
39                 command[i] = data[i];
40         }
41         
42         command[CONTROL::MAP] = 0;
43         command[CONTROL::PAUSE] = 0;
44 }
45
46 bool Config::isControl(CONTROL::TYPE type) const
47 {
48         return command[type];
49 }
50
51 void Config::resetControl(CONTROL::TYPE type)
52 {
53         engine->keyState[keyboard.control[type]] = 0;
54         
55         command[type] = 0;
56         
57         if (joystick.control[type] >= 0)
58         {
59                 engine->joystickState[joystick.control[type]] = 0;
60         }
61         
62         if (type == CONTROL::LEFT) engine->joyX = 0;
63         if (type == CONTROL::RIGHT) engine->joyX = 0;
64         if (type == CONTROL::UP) engine->joyY = 0;
65         if (type == CONTROL::DOWN) engine->joyY = 0;
66 }
67
68 void Config::doPause()
69 {
70         if (!engine->paused)
71         {
72                 if (engine->keyState[keyboard.control[CONTROL::PAUSE]])
73                 {
74                         engine->paused = true;
75                         engine->keyState[keyboard.control[CONTROL::PAUSE]] = 0;
76                 }
77         }
78         else
79         {
80                 if ((engine->keyState[keyboard.control[CONTROL::PAUSE]]) || (engine->keyState[SDL_SCANCODE_ESCAPE]))
81                 {
82                         engine->paused = false;
83                         engine->keyState[keyboard.control[CONTROL::PAUSE]] = 0;
84                         engine->keyState[SDL_SCANCODE_ESCAPE] = 0;
85                 }
86         }
87 }
88
89 bool Config::loadJoystickConfig()
90 {
91         char filename[PATH_MAX];
92         snprintf(filename, sizeof filename, "%sjoystick.cfg", engine->userHomeDirectory);
93         
94         debug(("Loading joystick config from %s\n", filename));
95         
96         FILE *fp = fopen(filename, "rb");
97         
98         if (!fp)
99         {
100                 return false;
101         }
102                 
103         if (fread(&joystick, sizeof(Joystick), 1, fp) != 1)
104         {
105                 fclose(fp);
106                 return false;
107         }
108                 
109         fclose(fp);
110         
111         return true;
112 }
113
114 bool Config::saveJoystickConfig()
115 {
116         bool ret = true;
117         char filename[PATH_MAX];
118         snprintf(filename, sizeof filename, "%sjoystick.cfg", engine->userHomeDirectory);
119         
120         debug(("Saving joystick config to %s\n", filename));
121         
122         FILE *fp = fopen(filename, "wb");
123         
124         if (!fp)
125         {
126                 debug(("WARNING: Couldn't save joystick config: %s\n", strerror(errno)));
127                 return false;
128         }
129
130         if (fwrite(&joystick, sizeof(Joystick), 1, fp) != 1)
131         {
132                 debug(("WARNING: Couldn't save joystick config: %s\n", strerror(errno)));
133                 ret = false;
134         }
135
136         fclose(fp);
137         
138         return ret;
139 }
140
141 bool Config::loadKeyConfig()
142 {
143         char filename[PATH_MAX];
144         snprintf(filename, sizeof filename, "%skeyboard.cfg", engine->userHomeDirectory);
145         
146         debug(("Loading keyboard config from %s\n", filename));
147         
148         FILE *fp = fopen(filename, "rb");
149         
150         if (!fp)
151         {
152                 return false;
153         }
154                 
155         if (fread(&keyboard, sizeof(Keyboard), 1, fp) != 1)
156         {
157                 fclose(fp);
158                 return false;
159         }
160                 
161         fclose(fp);
162         
163         // Keyboard break fix - Feb 09
164         keyboard.control[CONTROL::UP] = 0;
165         
166         return true;
167 }
168
169 bool Config::saveKeyConfig()
170 {
171         bool ret = true;
172         char filename[PATH_MAX];
173         snprintf(filename, sizeof filename, "%skeyboard.cfg", engine->userHomeDirectory);
174         
175         debug(("Saving keyboard config to %s\n", filename));
176         
177         FILE *fp = fopen(filename, "wb");
178         
179         if (!fp)
180         {
181                 debug(("WARNING: Couldn't save keyboard config: %s\n", strerror(errno)));
182                 return false;
183         }
184
185         if (fwrite(&keyboard, sizeof(keyboard), 1, fp) != 1)
186         {
187                 debug(("WARNING: Couldn't save keyboard config: %s\n", strerror(errno)));
188                 ret = false;
189         }
190
191         fclose(fp);
192         
193         return ret;
194 }
195
196 void Config::restoreKeyDefaults()
197 {
198         keyboard.setDefaultKeys();
199 }