]> git.mxchange.org Git - quix0rs-blobwars.git/blob - src/CConfig.cpp
Use UNIX line endings everywhere.
[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)
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[SDLK_ESCAPE]))
81                 {
82                         engine->paused = false;
83                         engine->keyState[keyboard.control[CONTROL::PAUSE]] = 0;
84                         engine->keyState[SDLK_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         char filename[PATH_MAX];
117         snprintf(filename, sizeof filename, "%sjoystick.cfg", engine->userHomeDirectory);
118         
119         debug(("Saving joystick config to %s\n", filename));
120         
121         FILE *fp = fopen(filename, "wb");
122         
123         if (!fp)
124         {
125                 debug(("WARNING: Couldn't save joystick config\n"));
126                 return false;
127         }
128                 
129         fwrite(&joystick, sizeof(Joystick), 1, fp);
130                 
131         fclose(fp);
132         
133         return true;
134 }
135
136 bool Config::loadKeyConfig()
137 {
138         char filename[PATH_MAX];
139         snprintf(filename, sizeof filename, "%skeyboard.cfg", engine->userHomeDirectory);
140         
141         debug(("Loading keyboard config from %s\n", filename));
142         
143         FILE *fp = fopen(filename, "rb");
144         
145         if (!fp)
146         {
147                 return false;
148         }
149                 
150         if (fread(&keyboard, sizeof(Keyboard), 1, fp) != 1)
151         {
152                 fclose(fp);
153                 return false;
154         }
155                 
156         fclose(fp);
157         
158         // Keyboard break fix - Feb 09
159         keyboard.control[CONTROL::UP] = 0;
160         
161         return true;
162 }
163
164 bool Config::saveKeyConfig()
165 {
166         char filename[PATH_MAX];
167         snprintf(filename, sizeof filename, "%skeyboard.cfg", engine->userHomeDirectory);
168         
169         debug(("Saving keyboard config to %s\n", filename));
170         
171         FILE *fp = fopen(filename, "wb");
172         
173         if (!fp)
174         {
175                 return false;
176         }
177                 
178         fwrite(&keyboard, sizeof(keyboard), 1, fp);
179                 
180         fclose(fp);
181         
182         return true;
183 }
184
185 void Config::restoreKeyDefaults()
186 {
187         keyboard.setDefaultKeys();
188 }