ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/RenegadeMapSelector/RenegadeMapSelector.cpp
(Generate patch)

Comparing trunk/RenegadeMapSelector/RenegadeMapSelector.cpp (file contents):
Revision 67 by douglas, 2003-03-11T15:50:44-08:00 vs.
Revision 70 by douglas, 2003-03-11T19:48:27-08:00

# Line 73 | Line 73 | int WINAPI WinMain(HINSTANCE hInstance,
73          int argc;
74          unsigned short** argv = CommandLineToArgvW(GetCommandLineW(), &argc);
75  
76 +        string error;
77          string file = "svrcfg_cnc.ini";
78  
79          program = fix(argv[0]);
# Line 80 | Line 81 | int WINAPI WinMain(HINSTANCE hInstance,
81          for (int index = 1; index < argc; index++)
82          {
83                  string arg = fix(argv[index]);
83                string error;
84  
85                  if (arg == "-D")
86                  {
# Line 107 | Line 107 | int WINAPI WinMain(HINSTANCE hInstance,
107          if (debug) cerr << "file = " << file << "\n";
108  
109          config = new RenegadeConfig(file);
110 <        config->load();
110 >        if (!config->load())
111 >        {
112 >                error = "Could not open " + file + ".";
113 >
114 >                MessageBox(NULL, error.c_str(), "Bad File", MB_ICONERROR);
115 >                return 1;
116 >        }
117  
118          DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAP_SELECTOR), NULL, selector);
119  
120          delete config;
121  
122 +        if (debug)
123 +        {
124 +                cout << "Press enter key to exit . . .";
125 +                cin.get();
126 +        }
127 +
128          return 0;
129   }
130  
# Line 146 | Line 158 | int CALLBACK selector(HWND hwndDlg, UINT
158                          if (debug) cerr << "data = " << data << "\n";
159  
160                          DlgDirList(hwndDlg, data, IDC_AVAILABLE, 0, DDL_ARCHIVE);
161 +                        SetCurrentDirectory("..");
162  
163                          delete [] data;
164                  }
165 +                {
166 +                        vector<string> maps = config->getMaps();
167 +
168 +                        for (unsigned index = 0; index < maps.size(); index++)
169 +                        {
170 +                                SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED), LB_ADDSTRING, 0,
171 +                                        long(maps[index].c_str()));
172 +                        }
173 +                }
174                  break;
175          case WM_COMMAND:
176                  switch (LOWORD(wParam))
177                  {
178                  case IDOK:
179 +                        if (GetListBoxInfo(GetDlgItem(hwndDlg, IDC_SELECTED)) == 0)
180 +                        {
181 +                                MessageBox(hwndDlg, "You need at least one map.", "No Maps",
182 +                                        MB_ICONEXCLAMATION);
183 +
184 +                                return false;
185 +                        }
186 +                        else
187 +                        {
188 +                                vector<string> maps;
189 +
190 +                                for (unsigned index = 0; index < GetListBoxInfo(GetDlgItem(
191 +                                        hwndDlg, IDC_SELECTED)); index++)
192 +                                {
193 +                                        char* name = new char[SendMessage(GetDlgItem(hwndDlg,
194 +                                                IDC_SELECTED), LB_GETTEXTLEN, index, 0) + 1];
195 +
196 +                                        SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED), LB_GETTEXT,
197 +                                                index, long(name));
198 +                                        maps.push_back(name);
199 +
200 +                                        delete [] name;
201 +                                }
202 +
203 +                                config->setMaps(maps);
204 +                        }
205                          config->save();
206                  case IDCANCEL:
207                          EndDialog(hwndDlg, wParam);
208                          return true;
209 +                case IDC_ADD_MAP:
210 +                        {
211 +                                unsigned count = SendMessage(GetDlgItem(hwndDlg,
212 +                                        IDC_AVAILABLE), LB_GETSELCOUNT, 0, 0);
213 +                                unsigned* additions = new unsigned[count];
214 +
215 +                                SendMessage(GetDlgItem(hwndDlg, IDC_AVAILABLE), LB_GETSELITEMS,
216 +                                        count, long(additions));
217 +
218 +                                if (debug) cerr << "additions = {\n";
219 +                                for (unsigned index = 0; index < count; index++)
220 +                                {
221 +                                        if (debug) cerr << "   [" << index << "] = " <<
222 +                                                additions[index] << "\n";
223 +
224 +                                        char* name = new char[SendMessage(GetDlgItem(hwndDlg,
225 +                                                IDC_AVAILABLE), LB_GETTEXTLEN, additions[index], 0) + 1
226 +                                                ];
227 +
228 +                                        SendMessage(GetDlgItem(hwndDlg, IDC_AVAILABLE), LB_GETTEXT,
229 +                                                additions[index], long(name));
230 +                                        SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED),
231 +                                                LB_ADDSTRING, 0, long(name));
232 +
233 +                                        delete [] name;
234 +                                }
235 +                                if (debug) cerr << "}\n";
236 +
237 +                                delete [] additions;
238 +
239 +                                SendMessage(GetDlgItem(hwndDlg, IDC_AVAILABLE), LB_SETSEL,
240 +                                        false, -1);
241 +                                EnableWindow(GetDlgItem(hwndDlg, IDC_ADD_MAP), false);
242 +                        }
243 +                        break;
244 +                case IDC_REMOVE_MAP:
245 +                        {
246 +                                unsigned count = SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED),
247 +                                        LB_GETSELCOUNT, 0, 0);
248 +                                unsigned* removals = new unsigned[count];
249 +
250 +                                SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED), LB_GETSELITEMS,
251 +                                        count, long(removals));
252 +
253 +                                if (debug) cerr << "removals = {\n";
254 +                                for (unsigned index = count; index > 0; index--)
255 +                                {
256 +                                        if (debug) cerr << "   [" << index - 1 << "] = " <<
257 +                                                removals[index - 1] << "\n";
258 +
259 +                                        SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED),
260 +                                                LB_DELETESTRING, removals[index - 1], 0);
261 +                                }
262 +                                if (debug) cerr << "}\n";
263 +
264 +                                delete [] removals;
265 +
266 +                                EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVE_MAP), false);
267 +                                EnableWindow(GetDlgItem(hwndDlg, IDC_UP_MAP), false);
268 +                                EnableWindow(GetDlgItem(hwndDlg, IDC_DOWN_MAP), false);
269 +                        }
270 +                        break;
271 +                case IDC_UP_MAP:
272 +                        cout << "STUB: up\a\n";
273 +                        break;
274 +                case IDC_DOWN_MAP:
275 +                        cout << "STUB: down\a\n";
276 +                        break;
277 +                case IDC_AVAILABLE:
278 +                        switch (HIWORD(wParam))
279 +                        {
280 +                        case LBN_SELCHANGE:
281 +                                if (SendMessage(GetDlgItem(hwndDlg, IDC_AVAILABLE),
282 +                                        LB_GETSELCOUNT, 0, 0) > 0)
283 +                                {
284 +                                        EnableWindow(GetDlgItem(hwndDlg, IDC_ADD_MAP), true);
285 +                                }
286 +                                else
287 +                                {
288 +                                        EnableWindow(GetDlgItem(hwndDlg, IDC_ADD_MAP), false);
289 +                                }
290 +                                break;
291 +                        }
292 +                        break;
293 +                case IDC_SELECTED:
294 +                        switch (HIWORD(wParam))
295 +                        {
296 +                        case LBN_SELCHANGE:
297 +                                if (SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED),
298 +                                        LB_GETSELCOUNT, 0, 0) > 0)
299 +                                {
300 +                                        EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVE_MAP), true);
301 +                                        
302 +                                        if (SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED),
303 +                                                LB_GETSEL, 0, 0) == 0)
304 +                                        {
305 +                                                EnableWindow(GetDlgItem(hwndDlg, IDC_UP_MAP), true);
306 +                                        }
307 +                                        else
308 +                                        {
309 +                                                EnableWindow(GetDlgItem(hwndDlg, IDC_UP_MAP), false);
310 +                                        }
311 +
312 +                                        if (SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED),
313 +                                                LB_GETSEL, SendMessage(GetDlgItem(hwndDlg, IDC_SELECTED
314 +                                                ), LB_GETCOUNT, 0, 0) - 1, 0) == 0)
315 +                                        {
316 +                                                EnableWindow(GetDlgItem(hwndDlg, IDC_DOWN_MAP), true);
317 +                                        }
318 +                                        else
319 +                                        {
320 +                                                EnableWindow(GetDlgItem(hwndDlg, IDC_DOWN_MAP), false);
321 +                                        }
322 +                                }
323 +                                else
324 +                                {
325 +                                        EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVE_MAP), false);
326 +                                        EnableWindow(GetDlgItem(hwndDlg, IDC_UP_MAP), false);
327 +                                        EnableWindow(GetDlgItem(hwndDlg, IDC_DOWN_MAP), false);
328 +                                }
329 +                                break;
330 +                        }
331 +                        break;
332                  }
333                  break;
334          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines