From 8898ad9b25fca6afe2374d293a981db02a83d7e9 Mon Sep 17 00:00:00 2001 From: "FWoltermann@gmail.com" Date: Thu, 31 May 2012 14:46:27 +0000 Subject: Committing the documentation to svn to have it accessible online --- Doc/doxygen/html/_msn_edit_dlg_8cpp_source.html | 1013 +++++++++++++++++++++++ 1 file changed, 1013 insertions(+) create mode 100644 Doc/doxygen/html/_msn_edit_dlg_8cpp_source.html (limited to 'Doc/doxygen/html/_msn_edit_dlg_8cpp_source.html') diff --git a/Doc/doxygen/html/_msn_edit_dlg_8cpp_source.html b/Doc/doxygen/html/_msn_edit_dlg_8cpp_source.html new file mode 100644 index 0000000..79bcff3 --- /dev/null +++ b/Doc/doxygen/html/_msn_edit_dlg_8cpp_source.html @@ -0,0 +1,1013 @@ + + + + + +Starshatter_Open: D:/SRC/StarshatterSVN/Stars45/MsnEditDlg.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
Starshatter_Open +
+
Open source Starshatter engine
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
MsnEditDlg.cpp
+
+
+Go to the documentation of this file.
1 /* Project Starshatter 5.0
+
2  Destroyer Studios LLC
+
3  Copyright (C) 1997-2007. All Rights Reserved.
+
4 
+
5  SUBSYSTEM: Stars.exe
+
6  FILE: MsnEditDlg.cpp
+
7  AUTHOR: John DiCamillo
+
8 
+
9 
+
10  OVERVIEW
+
11  ========
+
12  Mission Editor Dialog Active Window class
+
13 */
+
14 
+
15 #include "MemDebug.h"
+
16 #include "MsnEditDlg.h"
+
17 #include "MsnElemDlg.h"
+
18 #include "MsnEventDlg.h"
+
19 #include "NavDlg.h"
+
20 #include "MenuScreen.h"
+
21 #include "Campaign.h"
+
22 #include "Mission.h"
+
23 #include "MissionEvent.h"
+
24 #include "Ship.h"
+
25 #include "ShipDesign.h"
+
26 #include "StarSystem.h"
+
27 #include "Galaxy.h"
+
28 
+
29 #include "Game.h"
+
30 #include "DataLoader.h"
+
31 #include "Button.h"
+
32 #include "ListBox.h"
+
33 #include "EditBox.h"
+
34 #include "Video.h"
+
35 #include "Keyboard.h"
+
36 #include "Mouse.h"
+
37 #include "ParseUtil.h"
+
38 #include "FormatUtil.h"
+
39 #include "Random.h"
+
40 
+
41 // +--------------------------------------------------------------------+
+
42 // DECLARE MAPPING FUNCTIONS:
+
43 
+
44 DEF_MAP_CLIENT(MsnEditDlg, OnAccept);
+
45 DEF_MAP_CLIENT(MsnEditDlg, OnCancel);
+
46 DEF_MAP_CLIENT(MsnEditDlg, OnTabButton);
+
47 DEF_MAP_CLIENT(MsnEditDlg, OnSystemSelect);
+
48 DEF_MAP_CLIENT(MsnEditDlg, OnElemAdd);
+
49 DEF_MAP_CLIENT(MsnEditDlg, OnElemEdit);
+
50 DEF_MAP_CLIENT(MsnEditDlg, OnElemDel);
+
51 DEF_MAP_CLIENT(MsnEditDlg, OnElemSelect);
+
52 DEF_MAP_CLIENT(MsnEditDlg, OnElemInc);
+
53 DEF_MAP_CLIENT(MsnEditDlg, OnElemDec);
+
54 DEF_MAP_CLIENT(MsnEditDlg, OnEventAdd);
+
55 DEF_MAP_CLIENT(MsnEditDlg, OnEventEdit);
+
56 DEF_MAP_CLIENT(MsnEditDlg, OnEventDel);
+
57 DEF_MAP_CLIENT(MsnEditDlg, OnEventSelect);
+
58 DEF_MAP_CLIENT(MsnEditDlg, OnEventInc);
+
59 DEF_MAP_CLIENT(MsnEditDlg, OnEventDec);
+
60 
+
61 // +--------------------------------------------------------------------+
+
62 
+ +
64 : FormWindow(s, 0, 0, s->Width(), s->Height()), manager(mgr),
+
65 btn_accept(0), btn_cancel(0),
+
66 btn_elem_add(0), btn_elem_edit(0), btn_elem_del(0), btn_elem_inc(0), btn_elem_dec(0),
+
67 btn_event_add(0), btn_event_edit(0), btn_event_del(0), btn_event_inc(0), btn_event_dec(0),
+
68 btn_sit(0), btn_pkg(0), btn_map(0),
+
69 txt_name(0), cmb_type(0), cmb_system(0), cmb_region(0),
+
70 txt_description(0), txt_situation(0), txt_objective(0),
+
71 lst_elem(0), lst_event(0), mission(0), mission_info(0), current_tab(0),
+
72 exit_latch(true)
+
73 {
+
74  Init(def);
+
75 }
+
76 
+ +
78 {
+
79 }
+
80 
+
81 // +--------------------------------------------------------------------+
+
82 
+
83 void
+ +
85 {
+
86  mission = m;
+
87  current_tab = 0;
+
88 }
+
89 
+
90 void
+ +
92 {
+
93  mission_info = m;
+
94  current_tab = 0;
+
95 }
+
96 
+
97 // +--------------------------------------------------------------------+
+
98 
+
99 void
+ +
101 {
+
102  btn_accept = (Button*) FindControl( 1);
+
103  btn_cancel = (Button*) FindControl( 2);
+
104  btn_sit = (Button*) FindControl(301);
+
105  btn_pkg = (Button*) FindControl(302);
+
106  btn_map = (Button*) FindControl(303);
+
107 
+
108  btn_elem_add = (Button*) FindControl(501);
+
109  btn_elem_edit = (Button*) FindControl(505);
+
110  btn_elem_del = (Button*) FindControl(502);
+
111  btn_elem_inc = (Button*) FindControl(503);
+
112  btn_elem_dec = (Button*) FindControl(504);
+
113 
+
114  btn_event_add = (Button*) FindControl(511);
+ +
116  btn_event_del = (Button*) FindControl(512);
+
117  btn_event_inc = (Button*) FindControl(513);
+
118  btn_event_dec = (Button*) FindControl(514);
+
119 
+
120  txt_name = (EditBox*) FindControl(201);
+
121  cmb_type = (ComboBox*) FindControl(202);
+
122  cmb_system = (ComboBox*) FindControl(203);
+
123  cmb_region = (ComboBox*) FindControl(204);
+
124 
+ + + +
128 
+
129  lst_elem = (ListBox*) FindControl(510);
+
130  lst_event = (ListBox*) FindControl(520);
+
131 
+
132  if (btn_accept)
+ +
134 
+
135  if (btn_cancel)
+ +
137 
+
138  if (btn_elem_add)
+ +
140 
+
141  if (btn_elem_edit)
+ +
143 
+
144  if (btn_elem_del)
+ +
146 
+
147  if (btn_elem_inc) {
+
148  char up_arrow[2];
+
149  up_arrow[0] = Font::ARROW_UP;
+
150  up_arrow[1] = 0;
+
151  btn_elem_inc->SetText(up_arrow);
+
152  btn_elem_inc->SetEnabled(false);
+ +
154  }
+
155 
+
156  if (btn_elem_dec) {
+
157  char dn_arrow[2];
+
158  dn_arrow[0] = Font::ARROW_DOWN;
+
159  dn_arrow[1] = 0;
+
160  btn_elem_dec->SetText(dn_arrow);
+
161  btn_elem_dec->SetEnabled(false);
+ +
163  }
+
164 
+
165  if (btn_event_add)
+ +
167 
+
168  if (btn_event_edit)
+ +
170 
+
171  if (btn_event_del)
+ +
173 
+
174  if (btn_event_inc) {
+
175  char up_arrow[2];
+
176  up_arrow[0] = Font::ARROW_UP;
+
177  up_arrow[1] = 0;
+
178  btn_event_inc->SetText(up_arrow);
+
179  btn_event_inc->SetEnabled(false);
+ +
181  }
+
182 
+
183  if (btn_event_dec) {
+
184  char dn_arrow[2];
+
185  dn_arrow[0] = Font::ARROW_DOWN;
+
186  dn_arrow[1] = 0;
+
187  btn_event_dec->SetText(dn_arrow);
+
188  btn_event_dec->SetEnabled(false);
+ +
190  }
+
191 
+
192  if (btn_sit)
+ +
194 
+
195  if (btn_pkg)
+ +
197 
+
198  if (btn_map)
+ +
200 
+
201  if (cmb_system)
+ +
203 
+
204  if (lst_elem)
+ +
206 
+
207  if (lst_event)
+ +
209 }
+
210 
+
211 // +--------------------------------------------------------------------+
+
212 
+
213 void
+ +
215 {
+ +
217 
+
218  if (!txt_name || !cmb_type) return;
+
219 
+
220  txt_name->SetText("");
+
221 
+
222  if (cmb_system) {
+ +
224 
+
225  Galaxy* galaxy = Galaxy::GetInstance();
+
226  ListIter<StarSystem> iter = galaxy->GetSystemList();
+
227  while (++iter) {
+
228  cmb_system->AddItem(iter->Name());
+
229  }
+
230  }
+
231 
+
232  if (mission) {
+
233  int i;
+
234 
+ + +
237 
+
238  StarSystem* sys = mission->GetStarSystem();
+
239  if (sys && cmb_system && cmb_region) {
+
240  for (i = 0; i < cmb_system->NumItems(); i++) {
+
241  if (!strcmp(cmb_system->GetItem(i), sys->Name())) {
+ +
243  break;
+
244  }
+
245  }
+
246 
+ +
248  int sel_rgn = 0;
+
249 
+
250  List<OrbitalRegion> regions;
+
251  regions.append(sys->AllRegions());
+
252  regions.sort();
+
253 
+
254  i = 0;
+
255  ListIter<OrbitalRegion> iter = regions;
+
256  while (++iter) {
+
257  OrbitalRegion* region = iter.value();
+
258  cmb_region->AddItem(region->Name());
+
259 
+
260  if (!strcmp(mission->GetRegion(), region->Name())) {
+
261  sel_rgn = i;
+
262  }
+
263 
+
264  i++;
+
265  }
+
266 
+
267  cmb_region->SetSelection(sel_rgn);
+
268  }
+
269 
+ + +
272 
+
273  if (txt_situation)
+ +
275 
+
276  if (txt_objective)
+ +
278 
+
279  DrawPackages();
+
280  }
+
281 
+ +
283 
+
284  exit_latch = true;
+
285 }
+
286 
+
287 // +--------------------------------------------------------------------+
+
288 
+
289 void
+ +
291 {
+
292  bool elem_del = false;
+
293  bool elem_edit = false;
+
294  bool elem_inc = false;
+
295  bool elem_dec = false;
+
296 
+
297  bool event_del = false;
+
298  bool event_edit = false;
+
299  bool event_inc = false;
+
300  bool event_dec = false;
+
301 
+
302  if (mission) {
+
303  if (lst_elem) {
+
304  bool cleared = false;
+
305  int index = lst_elem->GetSelection();
+
306 
+
307  if (lst_elem->NumItems() != mission->GetElements().size()) {
+
308  if (lst_elem->NumItems() < mission->GetElements().size())
+
309  index = lst_elem->NumItems();
+
310 
+
311  lst_elem->ClearItems();
+
312  cleared = true;
+
313  }
+
314 
+
315  int i = 0;
+ +
317  while (++elem) {
+
318  char txt[256];
+
319 
+
320  sprintf_s(txt, "%d", elem->Identity());
+
321 
+
322  if (cleared) {
+
323  lst_elem->AddItemWithData(txt, elem->ElementID());
+
324  }
+
325  else {
+
326  lst_elem->SetItemText(i, txt);
+
327  lst_elem->SetItemData(i, elem->ElementID());
+
328  }
+
329 
+
330  sprintf_s(txt, "%d", elem->GetIFF());
+
331  lst_elem->SetItemText(i, 1, txt);
+
332  lst_elem->SetItemText(i, 2, elem->Name());
+
333  lst_elem->SetItemText(i, 4, elem->RoleName());
+
334  lst_elem->SetItemText(i, 5, elem->Region());
+
335 
+
336  const ShipDesign* design = elem->GetDesign();
+
337 
+
338  if (design) {
+
339  if (elem->Count() > 1)
+
340  sprintf_s(txt, "%d %s", elem->Count(), design->abrv);
+
341  else
+
342  sprintf_s(txt, "%s %s", design->abrv, design->name);
+
343  }
+
344  else {
+
345  sprintf_s(txt, Game::GetText("MsnDlg.undefined").data());
+
346  }
+
347 
+
348  lst_elem->SetItemText(i, 3, txt);
+
349 
+
350  i++;
+
351  }
+
352 
+
353  int nitems = lst_elem->NumItems();
+
354  if (nitems) {
+
355  if (index >= nitems)
+
356  index = nitems - 1;
+
357 
+
358  if (index >= 0) {
+
359  lst_elem->SetSelected(index);
+
360  elem_del = true;
+
361  elem_edit = true;
+
362  elem_inc = index > 0;
+
363  elem_dec = index < nitems-1;
+
364  }
+
365  }
+
366  }
+
367 
+
368  if (lst_event) {
+
369  bool cleared = false;
+
370  int index = lst_event->GetSelection();
+
371 
+
372  if (lst_event->NumItems() != mission->GetEvents().size()) {
+
373  if (lst_event->NumItems() < mission->GetEvents().size())
+
374  index = lst_event->NumItems();
+
375 
+ +
377  cleared = true;
+
378  }
+
379 
+
380  int i = 0;
+ +
382  while (++event) {
+
383  char txt[256];
+
384 
+
385  sprintf_s(txt, "%d", event->EventID());
+
386  if (cleared) {
+
387  lst_event->AddItemWithData(txt, event->EventID());
+
388  }
+
389  else {
+
390  lst_event->SetItemText(i, txt);
+
391  lst_event->SetItemData(i, event->EventID());
+
392  }
+
393 
+
394  if (event->Time()) {
+
395  FormatTime(txt, event->Time());
+
396  }
+
397  else if (event->Delay()) {
+
398  txt[0] = '+';
+
399  txt[1] = ' ';
+
400  FormatTime(txt+2, event->Delay());
+
401  }
+
402  else {
+
403  strcpy_s(txt, " ");
+
404  }
+
405 
+
406  lst_event->SetItemText(i, 1, txt);
+
407  lst_event->SetItemText(i, 2, event->EventName());
+
408  lst_event->SetItemText(i, 3, event->EventShip());
+
409  lst_event->SetItemText(i, 4, event->EventMessage());
+
410 
+
411  i++;
+
412  }
+
413 
+
414  int nitems = lst_event->NumItems();
+
415  if (nitems) {
+
416  if (index >= nitems)
+
417  index = nitems - 1;
+
418 
+
419  if (index >= 0) {
+
420  lst_event->SetSelected(index);
+
421  event_del = true;
+
422  event_edit = true;
+
423  event_inc = index > 0;
+
424  event_dec = index < nitems-1;
+
425  }
+
426  }
+
427  }
+
428  }
+
429 
+
430  if (btn_elem_del) btn_elem_del->SetEnabled(elem_del);
+
431  if (btn_elem_edit) btn_elem_edit->SetEnabled(elem_edit);
+
432  if (btn_elem_inc) btn_elem_inc->SetEnabled(elem_inc);
+
433  if (btn_elem_dec) btn_elem_dec->SetEnabled(elem_del);
+
434 
+
435  if (btn_event_del) btn_event_del->SetEnabled(event_del);
+
436  if (btn_event_edit) btn_event_edit->SetEnabled(event_edit);
+
437  if (btn_event_inc) btn_event_inc->SetEnabled(event_inc);
+
438  if (btn_event_dec) btn_event_dec->SetEnabled(event_dec);
+
439 }
+
440 
+
441 // +--------------------------------------------------------------------+
+
442 
+
443 void
+ +
445 {
+
446  if (Keyboard::KeyDown(VK_RETURN)) {
+ +
448  OnAccept(0);
+
449  }
+
450 
+
451  else if (Keyboard::KeyDown(VK_ESCAPE)) {
+
452  if (!exit_latch)
+
453  OnCancel(0);
+
454  }
+
455 
+
456  else {
+
457  exit_latch = false;
+
458  }
+
459 }
+
460 
+
461 // +--------------------------------------------------------------------+
+
462 
+
463 void
+ +
465 {
+
466  if (mission) {
+
467  if (txt_name) {
+ +
469  }
+
470 
+
471  if (cmb_type) {
+ +
473 
+
474  if (mission_info)
+ +
476  }
+
477 
+
478  Galaxy* galaxy = Galaxy::GetInstance();
+
479  StarSystem* system = 0;
+
480 
+
481  if (galaxy && cmb_system)
+
482  system = galaxy->GetSystem(cmb_system->GetSelectedItem());
+
483 
+
484  if (system) {
+ +
486  mission->SetStarSystem(system);
+
487 
+
488  if (mission_info)
+
489  mission_info->system = system->Name();
+
490  }
+
491 
+
492  if (cmb_region) {
+ +
494 
+
495  if (mission_info)
+ +
497  }
+
498 
+
499  if (txt_description && mission_info) {
+ + +
502  }
+
503 
+
504  if (txt_situation)
+ +
506 
+
507  if (txt_objective)
+ +
509  }
+
510 }
+
511 
+
512 // +--------------------------------------------------------------------+
+
513 
+
514 void
+ +
516 {
+
517  current_tab = tab;
+
518 
+
519  if (current_tab < 0 || current_tab > 2)
+
520  current_tab = 0;
+
521 
+
522  if (btn_sit) btn_sit->SetButtonState(tab == 0 ? 1 : 0);
+
523  if (btn_pkg) btn_pkg->SetButtonState(tab == 1 ? 1 : 0);
+
524  if (btn_map) btn_map->SetButtonState(tab == 2 ? 1 : 0);
+
525 
+
526  DWORD low = 400 + tab*100;
+
527  DWORD high = low + 100;
+
528 
+ +
530  while (++iter) {
+
531  ActiveWindow* a = iter.value();
+
532 
+
533  if (a->GetID() < 400)
+
534  a->Show();
+
535 
+
536  else if (a->GetID() >= low && a->GetID() < high)
+
537  a->Show();
+
538 
+
539  else
+
540  a->Hide();
+
541  }
+
542 
+
543  if (tab == 2) {
+
544  NavDlg* navdlg = manager->GetNavDlg();
+
545 
+
546  if (navdlg) {
+
547  navdlg->SetMission(mission);
+
548  navdlg->SetEditorMode(true);
+
549  }
+
550 
+
551  manager->ShowNavDlg();
+
552  }
+
553  else {
+
554  manager->HideNavDlg();
+
555  }
+
556 }
+
557 
+
558 // +--------------------------------------------------------------------+
+
559 
+
560 void
+ +
562 {
+
563  if (!event) return;
+
564 
+
565  if (event->window == btn_sit)
+
566  ShowTab(0);
+
567 
+
568  else if (event->window == btn_pkg)
+
569  ShowTab(1);
+
570 
+
571  else if (event->window == btn_map)
+
572  ShowTab(2);
+
573 }
+
574 
+
575 void
+ +
577 {
+
578  StarSystem* sys = 0;
+
579 
+
580  if (cmb_system) {
+
581  const char* name = cmb_system->GetSelectedItem();
+
582 
+
583  Galaxy* galaxy = Galaxy::GetInstance();
+
584  ListIter<StarSystem> iter = galaxy->GetSystemList();
+
585  while (++iter) {
+
586  StarSystem* s = iter.value();
+
587 
+
588  if (!strcmp(s->Name(), name)) {
+
589  sys = s;
+
590  break;
+
591  }
+
592  }
+
593  }
+
594 
+
595  if (sys && cmb_region) {
+ +
597 
+
598  List<OrbitalRegion> regions;
+
599  regions.append(sys->AllRegions());
+
600  regions.sort();
+
601 
+
602  ListIter<OrbitalRegion> iter = regions;
+
603  while (++iter) {
+
604  OrbitalRegion* region = iter.value();
+
605  cmb_region->AddItem(region->Name());
+
606  }
+
607  }
+
608 
+
609  ScrapeForm();
+
610 
+
611  NavDlg* navdlg = manager->GetNavDlg();
+
612 
+
613  if (navdlg)
+
614  navdlg->SetMission(mission);
+
615 }
+
616 
+
617 // +--------------------------------------------------------------------+
+
618 
+
619 void
+ +
621 {
+
622  static DWORD click_time = 0;
+
623 
+
624  if (lst_elem && mission) {
+
625  int selection = lst_elem->GetSelection();
+
626 
+
627  if (btn_elem_edit)
+
628  btn_elem_edit->SetEnabled(selection >= 0);
+
629 
+
630  if (btn_elem_del)
+
631  btn_elem_del->SetEnabled(selection >= 0);
+
632 
+
633  if (btn_elem_inc)
+
634  btn_elem_inc->SetEnabled(selection > 0);
+
635 
+
636  if (btn_elem_dec)
+
637  btn_elem_dec->SetEnabled(selection >= 0 && selection < lst_elem->NumItems() - 1);
+
638 
+
639  // double-click:
+
640  if (Game::RealTime() - click_time < 350) {
+
641  if (lst_elem->GetSelCount() == 1) {
+
642  int index = lst_elem->GetSelection();
+
643  MissionElement* elem = mission->GetElements().at(index);
+
644  MsnElemDlg* msn_elem_dlg = manager->GetMsnElemDlg();
+
645 
+
646  if (elem && msn_elem_dlg) {
+
647  ScrapeForm();
+
648  msn_elem_dlg->SetMission(mission);
+
649  msn_elem_dlg->SetMissionElement(elem);
+ +
651  }
+
652  }
+
653  }
+
654  }
+
655 
+
656  click_time = Game::RealTime();
+
657 }
+
658 
+
659 void
+ +
661 {
+
662  int index = lst_elem->GetSelection();
+
663  mission->IncreaseElemPriority(index--);
+
664 
+
665  DrawPackages();
+
666  lst_elem->SetSelected(index);
+
667  btn_elem_edit->SetEnabled(true);
+
668  btn_elem_del->SetEnabled(true);
+
669  btn_elem_inc->SetEnabled(index > 0);
+
670  btn_elem_dec->SetEnabled(index >= 0 && index < lst_elem->NumItems()-1);
+
671 }
+
672 
+
673 void
+ +
675 {
+
676  int index = lst_elem->GetSelection();
+
677  mission->DecreaseElemPriority(index++);
+
678 
+
679  DrawPackages();
+
680  lst_elem->SetSelected(index);
+
681  btn_elem_edit->SetEnabled(true);
+
682  btn_elem_del->SetEnabled(true);
+
683  btn_elem_inc->SetEnabled(index > 0);
+
684  btn_elem_dec->SetEnabled(index >= 0 && index < lst_elem->NumItems()-1);
+
685 }
+
686 
+
687 
+
688 // +--------------------------------------------------------------------+
+
689 
+
690 void
+ +
692 {
+
693  if (lst_elem && mission) {
+ +
695  MissionElement* elem = new(__FILE__,__LINE__) MissionElement;
+
696 
+
697  if (elements.size() > 0)
+
698  elem->SetLocation(RandomPoint());
+
699 
+
700  if (cmb_region)
+ +
702 
+
703  elements.append(elem);
+
704  DrawPackages();
+
705 
+
706  MsnElemDlg* msn_elem_dlg = manager->GetMsnElemDlg();
+
707 
+
708  if (msn_elem_dlg) {
+
709  ScrapeForm();
+
710  msn_elem_dlg->SetMission(mission);
+
711  msn_elem_dlg->SetMissionElement(elem);
+ +
713  }
+
714  }
+
715 }
+
716 
+
717 void
+ +
719 {
+
720  if (lst_elem && mission) {
+ +
722  delete elements.removeIndex(lst_elem->GetSelection());
+
723  DrawPackages();
+
724  }
+
725 }
+
726 
+
727 void
+ +
729 {
+
730  if (lst_elem && mission && lst_elem->GetSelCount() == 1) {
+
731  int index = lst_elem->GetSelection();
+
732  MissionElement* elem = mission->GetElements().at(index);
+
733  MsnElemDlg* msn_elem_dlg = manager->GetMsnElemDlg();
+
734 
+
735  if (elem && msn_elem_dlg) {
+
736  ScrapeForm();
+
737  msn_elem_dlg->SetMission(mission);
+
738  msn_elem_dlg->SetMissionElement(elem);
+ +
740  }
+
741  }
+
742 }
+
743 
+
744 
+
745 // +--------------------------------------------------------------------+
+
746 
+
747 void
+ +
749 {
+
750  static DWORD click_time = 0;
+
751 
+
752  if (lst_event && mission) {
+
753  int selection = lst_event->GetSelection();
+
754 
+
755  if (btn_event_edit)
+
756  btn_event_edit->SetEnabled(selection >= 0);
+
757 
+
758  if (btn_event_del)
+
759  btn_event_del->SetEnabled(selection >= 0);
+
760 
+
761  if (btn_event_inc)
+
762  btn_event_inc->SetEnabled(selection > 0);
+
763 
+
764  if (btn_event_dec)
+
765  btn_event_dec->SetEnabled(selection >= 0 && selection < lst_event->NumItems() - 1);
+
766 
+
767  // double-click:
+
768  if (Game::RealTime() - click_time < 350) {
+
769  if (lst_event->GetSelCount() == 1) {
+
770  int index = lst_event->GetSelection();
+
771  MissionEvent* event = mission->GetEvents().at(index);
+
772  MsnEventDlg* msn_event_dlg = manager->GetMsnEventDlg();
+
773 
+
774  if (event && msn_event_dlg) {
+
775  ScrapeForm();
+
776  msn_event_dlg->SetMission(mission);
+
777  msn_event_dlg->SetMissionEvent(event);
+ +
779  }
+
780  }
+
781  }
+
782  }
+
783 
+
784  click_time = Game::RealTime();
+
785 }
+
786 
+
787 void
+ +
789 {
+
790  int index = lst_event->GetSelection();
+
791  mission->IncreaseEventPriority(index--);
+
792 
+
793  DrawPackages();
+
794  lst_event->SetSelected(index);
+
795  btn_event_edit->SetEnabled(true);
+
796  btn_event_del->SetEnabled(true);
+
797  btn_event_inc->SetEnabled(index > 0);
+
798  btn_event_dec->SetEnabled(index >= 0 && index < lst_event->NumItems()-1);
+
799 }
+
800 
+
801 void
+ +
803 {
+
804  int index = lst_event->GetSelection();
+
805  mission->DecreaseEventPriority(index++);
+
806 
+
807  DrawPackages();
+
808  lst_event->SetSelected(index);
+
809  btn_event_edit->SetEnabled(true);
+
810  btn_event_del->SetEnabled(true);
+
811  btn_event_inc->SetEnabled(index > 0);
+
812  btn_event_dec->SetEnabled(index >= 0 && index < lst_event->NumItems()-1);
+
813 }
+
814 
+
815 
+
816 // +--------------------------------------------------------------------+
+
817 
+
818 void
+ +
820 {
+
821  if (lst_event && mission) {
+
822  List<MissionEvent>& events = mission->GetEvents();
+
823  MissionEvent* event = new(__FILE__,__LINE__) MissionEvent;
+
824 
+
825  int id = 1;
+
826  for (int i = 0; i < events.size(); i++) {
+
827  MissionEvent* e = events[i];
+
828  if (e->EventID() >= id)
+
829  id = e->EventID() + 1;
+
830  }
+
831 
+
832  event->id = id;
+
833 
+
834  events.append(event);
+
835  DrawPackages();
+
836 
+
837  MsnEventDlg* msn_event_dlg = manager->GetMsnEventDlg();
+
838 
+
839  if (msn_event_dlg) {
+
840  ScrapeForm();
+
841  msn_event_dlg->SetMission(mission);
+
842  msn_event_dlg->SetMissionEvent(event);
+ +
844  }
+
845  }
+
846 }
+
847 
+
848 void
+ +
850 {
+
851  if (lst_event && mission) {
+
852  List<MissionEvent>& events = mission->GetEvents();
+
853  delete events.removeIndex(lst_event->GetSelection());
+
854  DrawPackages();
+
855  }
+
856 }
+
857 
+
858 void
+ +
860 {
+
861  if (lst_event && mission && lst_event->GetSelCount() == 1) {
+
862  int index = lst_event->GetSelection();
+
863  MissionEvent* event = mission->GetEvents().at(index);
+
864  MsnEventDlg* msn_event_dlg = manager->GetMsnEventDlg();
+
865 
+
866  if (event && msn_event_dlg) {
+
867  ScrapeForm();
+
868  msn_event_dlg->SetMission(mission);
+
869  msn_event_dlg->SetMissionEvent(event);
+ +
871  }
+
872  }
+
873 }
+
874 
+
875 // +--------------------------------------------------------------------+
+
876 
+
877 void
+ +
879 {
+
880  if (mission) {
+
881  ScrapeForm();
+ +
883  mission->Save();
+
884  }
+
885 
+ +
887 }
+
888 
+
889 void
+ +
891 {
+
892  if (mission)
+
893  mission->Load();
+
894 
+ +
896 }
+
+
+ + + + -- cgit v1.1