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