1 // AsteroidEditorDlg.cpp : implementation file
6 #include "asteroideditordlg.h"
9 #include "debris.h" // Asteroid stuff.
14 static char THIS_FILE[] = __FILE__;
17 #define ID_FIELD_MENU 9000
19 // helps in looping over combo boxes
20 int Dlg_id[3] = {IDC_SHIP_DEBRIS1, IDC_SHIP_DEBRIS2, IDC_SHIP_DEBRIS3};
23 /////////////////////////////////////////////////////////////////////////////
24 // asteroid_editor dialog
26 asteroid_editor::asteroid_editor(CWnd* pParent /*=NULL*/)
27 : CDialog(asteroid_editor::IDD, pParent)
31 //{{AFX_DATA_INIT(asteroid_editor)
34 m_enable_asteroids = FALSE;
41 m_enable_inner_bounds = FALSE;
42 m_field_type = FT_ACTIVE;
53 // for (i=0; i<MAX_ASTEROID_FIELDS; i++)
54 a_field[i] = Asteroid_field; // Only supporting one field per mission.
57 void asteroid_editor::DoDataExchange(CDataExchange* pDX)
59 CDialog::DoDataExchange(pDX);
60 //{{AFX_DATA_MAP(asteroid_editor)
61 DDX_Control(pDX, IDC_DENSITY_SPIN, m_density_spin);
62 DDX_Text(pDX, IDC_AVG_SPEED, m_avg_speed);
63 DDX_Text(pDX, IDC_DENSITY, m_density);
64 DDX_Check(pDX, IDC_ENABLE_ASTEROIDS, m_enable_asteroids);
65 DDX_Text(pDX, IDC_MAX_X, m_max_x);
66 DDX_Text(pDX, IDC_MAX_Y, m_max_y);
67 DDX_Text(pDX, IDC_MAX_Z, m_max_z);
68 DDX_Text(pDX, IDC_MIN_X, m_min_x);
69 DDX_Text(pDX, IDC_MIN_Y, m_min_y);
70 DDX_Text(pDX, IDC_MIN_Z, m_min_z);
71 DDX_Check(pDX, IDC_ENABLE_INNER_BOX, m_enable_inner_bounds);
72 DDX_Text(pDX, IDC_INNER_MAX_X, m_box_max_x);
73 DDX_Text(pDX, IDC_INNER_MAX_Y, m_box_max_y);
74 DDX_Text(pDX, IDC_INNER_MAX_Z, m_box_max_z);
75 DDX_Text(pDX, IDC_INNER_MIN_X, m_box_min_x);
76 DDX_Text(pDX, IDC_INNER_MIN_Y, m_box_min_y);
77 DDX_Text(pDX, IDC_INNER_MIN_Z, m_box_min_z);
81 BEGIN_MESSAGE_MAP(asteroid_editor, CDialog)
82 //{{AFX_MSG_MAP(asteroid_editor)
84 ON_BN_CLICKED(IDC_ENABLE_ASTEROIDS, OnEnableAsteroids)
86 ON_BN_CLICKED(IDC_ENABLE_INNER_BOX, OnEnableInnerBox)
87 ON_BN_CLICKED(IDC_PASSIVE_FIELD, OnPassiveField)
88 ON_BN_CLICKED(IDC_FIELD_SHIP, OnFieldShip)
89 ON_BN_CLICKED(IDC_ACTIVE_FIELD, OnActiveField)
90 ON_BN_CLICKED(IDC_FIELD_ASTEROID, OnFieldAsteroid)
94 /////////////////////////////////////////////////////////////////////////////
95 // asteroid_editor message handlers
97 void asteroid_editor::OnInitMenu(CMenu* pMenu)
103 m = pMenu->GetSubMenu(0);
105 i = 0; //for (i=0; i<MAX_ASTEROID_FIELDS; i++) {
106 str.Format("Asteroid Field %d", i);
107 m->AppendMenu(MF_ENABLED | MF_STRING, ID_FIELD_MENU + i, str);
110 m->DeleteMenu(ID_PLACEHOLDER, MF_BYCOMMAND);
112 m->CheckMenuItem(ID_FIELD_MENU + cur_field, MF_BYCOMMAND | MF_CHECKED);
114 CDialog::OnInitMenu(pMenu);
117 BOOL asteroid_editor::OnCommand(WPARAM wParam, LPARAM lParam)
122 if (id >= ID_FIELD_MENU && id < ID_FIELD_MENU + 1) { //MAX_ASTEROID_FIELDS) {
123 cur_field = id - ID_FIELD_MENU;
127 return CDialog::OnCommand(wParam, lParam);
130 int asteroid_editor::query_modified()
134 for (i=0; i<1 /*MAX_ASTEROID_FIELDS*/; i++) {
135 if (a_field[i].num_initial_asteroids != Asteroid_field.num_initial_asteroids)
137 if (vm_vec_dist_quick(&a_field[i].vel, &Asteroid_field.vel) == 0.0f)
139 if (a_field[i].min_bound.x != Asteroid_field.min_bound.x)
141 if (a_field[i].min_bound.y != Asteroid_field.min_bound.y)
143 if (a_field[i].min_bound.z != Asteroid_field.min_bound.z)
145 if (a_field[i].max_bound.x != Asteroid_field.max_bound.x)
147 if (a_field[i].max_bound.y != Asteroid_field.max_bound.y)
149 if (a_field[i].max_bound.z != Asteroid_field.max_bound.z)
153 if (a_field[i].has_inner_bound != Asteroid_field.has_inner_bound)
156 if (a_field[i].field_type != Asteroid_field.field_type)
159 if (a_field[i].has_inner_bound) {
160 if (a_field[i].inner_max_bound.x != Asteroid_field.inner_max_bound.x)
163 if (a_field[i].inner_max_bound.y != Asteroid_field.inner_max_bound.y)
166 if (a_field[i].inner_max_bound.z != Asteroid_field.inner_max_bound.z)
169 if (a_field[i].inner_min_bound.x != Asteroid_field.inner_min_bound.x)
172 if (a_field[i].inner_min_bound.y != Asteroid_field.inner_min_bound.y)
175 if (a_field[i].inner_min_bound.z != Asteroid_field.inner_min_bound.z)
184 #define MIN_BOX_THICKNESS 400
185 int asteroid_editor::validate_data()
187 if (!m_enable_asteroids) {
191 if (a_field[0].max_bound.x < a_field[0].min_bound.x) {
192 MessageBox("Asteroid x min is greater than max");
197 if (a_field[0].max_bound.y < a_field[0].min_bound.y) {
198 MessageBox("Asteroid y min is greater than max");
203 if (a_field[0].max_bound.z < a_field[0].min_bound.z) {
204 MessageBox("Asteroid z min is greater than max");
208 // check if inner bounds enabled
209 if (a_field[0].has_inner_bound) {
210 if (a_field[0].inner_max_bound.x < a_field[0].inner_min_bound.x) {
211 MessageBox("Asteroid x inner min is greater than inner max");
215 if (a_field[0].inner_max_bound.y < a_field[0].inner_min_bound.y) {
216 MessageBox("Asteroid y inner min is greater than inner max");
220 if (a_field[0].inner_max_bound.z < a_field[0].inner_min_bound.z) {
221 MessageBox("Asteroid z inner min is greater than inner max");
226 if (a_field[0].inner_min_bound.x - MIN_BOX_THICKNESS < a_field[0].min_bound.x) {
227 MessageBox("Asteroid x thickness from outer box to inner box must be > 400");
231 if (a_field[0].inner_max_bound.x + MIN_BOX_THICKNESS > a_field[0].max_bound.x) {
232 MessageBox("Asteroid x thickness from outer box to inner box must be > 400");
237 if (a_field[0].inner_min_bound.y - MIN_BOX_THICKNESS < a_field[0].min_bound.y) {
238 MessageBox("Asteroid y thickness from outer box to inner box must be > 400");
242 if (a_field[0].inner_max_bound.y + MIN_BOX_THICKNESS > a_field[0].max_bound.y) {
243 MessageBox("Asteroid y thickness from outer box to inner box must be > 400");
248 if (a_field[0].inner_min_bound.z - MIN_BOX_THICKNESS < a_field[0].min_bound.z) {
249 MessageBox("Asteroid z thickness from outer box to inner box must be > 400");
253 if (a_field[0].inner_max_bound.z + MIN_BOX_THICKNESS > a_field[0].max_bound.z) {
254 MessageBox("Asteroid z thickness from outer box to inner box must be > 400");
259 // check if passive, ship debris field, at least one speceis selected
260 if (a_field[0].field_type == FT_PASSIVE) {
261 if (a_field[0].debris_genre == DG_SHIP) {
262 if ( (a_field[0].field_debris_type[0] == -1) && (a_field[0].field_debris_type[1] == -1) && (a_field[0].field_debris_type[2] == -1) ) {
263 MessageBox("You must choose one or more types of ship debris");
269 // check at least one asteroid subtype is selected
270 if (a_field[0].debris_genre == DG_ASTEROID) {
271 if ( (a_field[0].field_debris_type[0] == -1) && (a_field[0].field_debris_type[1] == -1) && (a_field[0].field_debris_type[2] == -1) ) {
272 MessageBox("You must choose one or more asteroid subtypes");
285 void asteroid_editor::OnOK()
290 if (!validate_data()) {
293 for (i=0; i<1 /*MAX_ASTEROID_FIELDS*/; i++)
294 Asteroid_field = a_field[i];
297 theApp.record_window_data(&Asteroid_wnd_data, this);
301 BOOL asteroid_editor::OnInitDialog()
304 CDialog::OnInitDialog();
306 theApp.init_window(&Asteroid_wnd_data, this);
308 m_density_spin.SetRange(1, MAX_ASTEROIDS);
312 void asteroid_editor::update_init()
314 int num_asteroids, idx, cur_choice;
317 if (last_field >= 0) {
318 // store into temp asteroid field
319 num_asteroids = a_field[last_field].num_initial_asteroids;
320 a_field[last_field].num_initial_asteroids = m_enable_asteroids ? m_density : 0;
321 if (a_field[last_field].num_initial_asteroids < 0)
322 a_field[last_field].num_initial_asteroids = 0;
324 if (a_field[last_field].num_initial_asteroids > MAX_ASTEROIDS)
325 a_field[last_field].num_initial_asteroids = MAX_ASTEROIDS;
327 if (num_asteroids != a_field[last_field].num_initial_asteroids)
330 vector vel_vec = {1.0f, 0.0f, 0.0f};
331 vm_vec_scale(&vel_vec, (float) m_avg_speed);
333 MODIFY(a_field[last_field].vel.x, vel_vec.x);
334 MODIFY(a_field[last_field].vel.y, vel_vec.y);
335 MODIFY(a_field[last_field].vel.z, vel_vec.z);
337 MODIFY(a_field[last_field].min_bound.x, (float) atof(m_min_x));
338 MODIFY(a_field[last_field].min_bound.y, (float) atof(m_min_y));
339 MODIFY(a_field[last_field].min_bound.z, (float) atof(m_min_z));
340 MODIFY(a_field[last_field].max_bound.x, (float) atof(m_max_x));
341 MODIFY(a_field[last_field].max_bound.y, (float) atof(m_max_y));
342 MODIFY(a_field[last_field].max_bound.z, (float) atof(m_max_z));
345 MODIFY(a_field[last_field].field_type, m_field_type);
346 MODIFY(a_field[last_field].debris_genre, m_debris_genre);
347 if ( (m_field_type == FT_PASSIVE) && (m_debris_genre == DG_SHIP) ) {
348 // we should have ship debris
349 for (idx=0; idx<3; idx++) {
350 // loop over combo boxes, store the item data of the cur selection, -1 in no cur selection
351 int cur_sel = ((CComboBox*)GetDlgItem(Dlg_id[idx]))->GetCurSel();
352 if (cur_sel != CB_ERR) {
353 cur_choice = ((CComboBox*)GetDlgItem(Dlg_id[idx]))->GetItemData(cur_sel);
357 MODIFY(a_field[cur_field].field_debris_type[idx], cur_choice);
361 if ( m_debris_genre == DG_ASTEROID ) {
362 if ( ((CButton *)GetDlgItem(IDC_SUBTYPE1))->GetCheck() == 1) {
367 MODIFY(a_field[cur_field].field_debris_type[0], cur_choice);
370 if ( ((CButton *)GetDlgItem(IDC_SUBTYPE2))->GetCheck() == 1) {
375 MODIFY(a_field[cur_field].field_debris_type[1], cur_choice);
378 if ( ((CButton *)GetDlgItem(IDC_SUBTYPE3))->GetCheck() == 1) {
383 MODIFY(a_field[cur_field].field_debris_type[2], cur_choice);
386 MODIFY(a_field[last_field].has_inner_bound, m_enable_inner_bounds);
388 MODIFY(a_field[last_field].inner_min_bound.x, (float) atof(m_box_min_x));
389 MODIFY(a_field[last_field].inner_min_bound.y, (float) atof(m_box_min_y));
390 MODIFY(a_field[last_field].inner_min_bound.z, (float) atof(m_box_min_z));
391 MODIFY(a_field[last_field].inner_max_bound.x, (float) atof(m_box_max_x));
392 MODIFY(a_field[last_field].inner_max_bound.y, (float) atof(m_box_max_y));
393 MODIFY(a_field[last_field].inner_max_bound.z, (float) atof(m_box_max_z));
396 Assert(cur_field >= 0);
397 // get from temp asteroid field into class
398 m_enable_asteroids = a_field[cur_field].num_initial_asteroids ? TRUE : FALSE;
399 m_enable_inner_bounds = a_field[cur_field].has_inner_bound ? TRUE : FALSE;
400 m_density = a_field[cur_field].num_initial_asteroids;
401 if (!m_enable_asteroids)
405 m_field_type = a_field[cur_field].field_type;
406 m_debris_genre = a_field[cur_field].debris_genre;
407 // m_debris_species = a_field[cur_field].debris_species;
409 m_avg_speed = (int) vm_vec_mag(&a_field[cur_field].vel);
410 m_min_x.Format("%.1f", a_field[cur_field].min_bound.x);
411 m_min_y.Format("%.1f", a_field[cur_field].min_bound.y);
412 m_min_z.Format("%.1f", a_field[cur_field].min_bound.z);
413 m_max_x.Format("%.1f", a_field[cur_field].max_bound.x);
414 m_max_y.Format("%.1f", a_field[cur_field].max_bound.y);
415 m_max_z.Format("%.1f", a_field[cur_field].max_bound.z);
417 m_box_min_x.Format("%.1f", a_field[cur_field].inner_min_bound.x);
418 m_box_min_y.Format("%.1f", a_field[cur_field].inner_min_bound.y);
419 m_box_min_z.Format("%.1f", a_field[cur_field].inner_min_bound.z);
420 m_box_max_x.Format("%.1f", a_field[cur_field].inner_max_bound.x);
421 m_box_max_y.Format("%.1f", a_field[cur_field].inner_max_bound.y);
422 m_box_max_z.Format("%.1f", a_field[cur_field].inner_max_bound.z);
424 // set up combo boxes
426 int num_field_debris_info = MAX_DEBRIS_TYPES + 1;
428 for (idx=0; idx<num_field_debris_info; idx++) {
429 box_index = ((CComboBox*)GetDlgItem(IDC_SHIP_DEBRIS1))->AddString(Field_debris_info[idx].name);
430 ((CComboBox*)GetDlgItem(IDC_SHIP_DEBRIS1))->SetItemData(box_index, Field_debris_info[idx].index);
432 box_index = ((CComboBox*)GetDlgItem(IDC_SHIP_DEBRIS2))->AddString(Field_debris_info[idx].name);
433 ((CComboBox*)GetDlgItem(IDC_SHIP_DEBRIS2))->SetItemData(box_index, Field_debris_info[idx].index);
435 box_index = ((CComboBox*)GetDlgItem(IDC_SHIP_DEBRIS3))->AddString(Field_debris_info[idx].name);
436 ((CComboBox*)GetDlgItem(IDC_SHIP_DEBRIS3))->SetItemData(box_index, Field_debris_info[idx].index);
439 // now delete asteroid data
440 // search by string Field_debris_info[1-3].name
442 for (idx=0; idx<3; idx++) {
443 box_index = ((CComboBox*)GetDlgItem(Dlg_id[idx]))->FindStringExact(0, Field_debris_info[1].name); // "Asteroid Small"
445 ((CComboBox*)GetDlgItem(Dlg_id[idx]))->DeleteString(box_index);
448 box_index = ((CComboBox*)GetDlgItem(Dlg_id[idx]))->FindStringExact(0, Field_debris_info[2].name); // "Asteroid Medium"
450 ((CComboBox*)GetDlgItem(Dlg_id[idx]))->DeleteString(box_index);
453 box_index = ((CComboBox*)GetDlgItem(Dlg_id[idx]))->FindStringExact(0, Field_debris_info[3].name); // "Asteroid Big"
455 ((CComboBox*)GetDlgItem(Dlg_id[idx]))->DeleteString(box_index);
459 // set active debris type for each combo box
460 int box_count, cur_box_data;
461 for (idx=0;idx<3; idx++) {
462 // Only set selection if not "None"
463 if (a_field[cur_field].field_debris_type[idx] != -1) {
464 box_count = ((CComboBox*)GetDlgItem(Dlg_id[idx]))->GetCount();
465 for (box_index=0; box_index<box_count; box_index++) {
466 cur_box_data = ((CComboBox*)GetDlgItem(Dlg_id[idx]))->GetItemData(box_index);
467 if (cur_box_data == a_field[cur_field].field_debris_type[idx]) {
469 ((CComboBox*)GetDlgItem(Dlg_id[idx]))->SetCurSel(box_index);
476 // set up asteroid subtype checkboxes
477 ((CButton*)GetDlgItem(IDC_SUBTYPE1))->SetCheck(a_field[cur_field].field_debris_type[0] == 1);
478 ((CButton*)GetDlgItem(IDC_SUBTYPE2))->SetCheck(a_field[cur_field].field_debris_type[1] == 1);
479 ((CButton*)GetDlgItem(IDC_SUBTYPE3))->SetCheck(a_field[cur_field].field_debris_type[2] == 1);
485 last_field = cur_field;
488 void asteroid_editor::OnEnableAsteroids()
491 GetDlgItem(IDC_DENSITY)->EnableWindow(m_enable_asteroids);
492 GetDlgItem(IDC_DENSITY_SPIN)->EnableWindow(m_enable_asteroids);
493 GetDlgItem(IDC_AVG_SPEED)->EnableWindow(m_enable_asteroids);
494 GetDlgItem(IDC_MIN_X)->EnableWindow(m_enable_asteroids);
495 GetDlgItem(IDC_MIN_Y)->EnableWindow(m_enable_asteroids);
496 GetDlgItem(IDC_MIN_Z)->EnableWindow(m_enable_asteroids);
497 GetDlgItem(IDC_MAX_X)->EnableWindow(m_enable_asteroids);
498 GetDlgItem(IDC_MAX_Y)->EnableWindow(m_enable_asteroids);
499 GetDlgItem(IDC_MAX_Z)->EnableWindow(m_enable_asteroids);
501 GetDlgItem(IDC_ENABLE_INNER_BOX)->EnableWindow(m_enable_asteroids);
502 GetDlgItem(IDC_PASSIVE_FIELD)->EnableWindow(m_enable_asteroids);
503 GetDlgItem(IDC_ACTIVE_FIELD)->EnableWindow(m_enable_asteroids);
505 GetDlgItem(IDC_FIELD_SHIP)->EnableWindow(m_enable_asteroids);
506 GetDlgItem(IDC_FIELD_ASTEROID)->EnableWindow(m_enable_asteroids);
507 GetDlgItem(IDC_SHIP_DEBRIS1)->EnableWindow(m_enable_asteroids && (Asteroid_field.debris_genre == DG_SHIP));
508 GetDlgItem(IDC_SHIP_DEBRIS2)->EnableWindow(m_enable_asteroids && (Asteroid_field.debris_genre == DG_SHIP));
509 GetDlgItem(IDC_SHIP_DEBRIS3)->EnableWindow(m_enable_asteroids && (Asteroid_field.debris_genre == DG_SHIP));
510 GetDlgItem(IDC_SUBTYPE1)->EnableWindow(m_enable_asteroids && (Asteroid_field.debris_genre == DG_ASTEROID));
511 GetDlgItem(IDC_SUBTYPE2)->EnableWindow(m_enable_asteroids && (Asteroid_field.debris_genre == DG_ASTEROID));
512 GetDlgItem(IDC_SUBTYPE3)->EnableWindow(m_enable_asteroids && (Asteroid_field.debris_genre == DG_ASTEROID));
518 void asteroid_editor::OnCancel()
520 theApp.record_window_data(&Asteroid_wnd_data, this);
524 void asteroid_editor::OnClose()
529 if (query_modified()) {
530 z = MessageBox("Do you want to keep your changes?", "Close", MB_ICONQUESTION | MB_YESNOCANCEL);
543 // enable inner box (asteroid free zone)
544 // only allowed for active debris field
545 void asteroid_editor::OnEnableInnerBox()
549 GetDlgItem(IDC_INNER_MIN_X)->EnableWindow(m_enable_inner_bounds && m_enable_asteroids);
550 GetDlgItem(IDC_INNER_MAX_X)->EnableWindow(m_enable_inner_bounds && m_enable_asteroids);
551 GetDlgItem(IDC_INNER_MIN_Y)->EnableWindow(m_enable_inner_bounds && m_enable_asteroids);
552 GetDlgItem(IDC_INNER_MAX_Y)->EnableWindow(m_enable_inner_bounds && m_enable_asteroids);
553 GetDlgItem(IDC_INNER_MIN_Z)->EnableWindow(m_enable_inner_bounds && m_enable_asteroids);
554 GetDlgItem(IDC_INNER_MAX_Z)->EnableWindow(m_enable_inner_bounds && m_enable_asteroids);
558 void asteroid_editor::OnEnableField()
560 // set check in active
561 if (m_enable_asteroids) {
562 if (m_field_type == FT_ACTIVE) {
569 // maybe enable species
570 if ( m_enable_asteroids && (m_field_type == FT_PASSIVE) && (m_debris_genre == DG_SHIP) ) {
576 void asteroid_editor::OnActiveField()
579 m_field_type = FT_ACTIVE;
580 m_debris_genre = DG_ASTEROID;
582 // gray out ship and species
583 GetDlgItem(IDC_FIELD_SHIP)->EnableWindow(FALSE);
584 GetDlgItem(IDC_SHIP_DEBRIS1)->EnableWindow(FALSE);
585 GetDlgItem(IDC_SHIP_DEBRIS2)->EnableWindow(FALSE);
586 GetDlgItem(IDC_SHIP_DEBRIS3)->EnableWindow(FALSE);
587 GetDlgItem(IDC_SUBTYPE1)->EnableWindow(TRUE);
588 GetDlgItem(IDC_SUBTYPE2)->EnableWindow(TRUE);
589 GetDlgItem(IDC_SUBTYPE3)->EnableWindow(TRUE);
591 // force check of asteroid
592 ((CButton*)GetDlgItem(IDC_FIELD_ASTEROID))->SetCheck(1);
593 ((CButton*)GetDlgItem(IDC_FIELD_SHIP))->SetCheck(0);
595 // force check of active field
596 ((CButton*)GetDlgItem(IDC_ACTIVE_FIELD))->SetCheck(1);
597 ((CButton*)GetDlgItem(IDC_PASSIVE_FIELD))->SetCheck(0);
600 GetDlgItem(IDC_ENABLE_INNER_BOX)->EnableWindow(TRUE);
603 void asteroid_editor::OnPassiveField()
606 m_field_type = FT_PASSIVE;
609 GetDlgItem(IDC_FIELD_SHIP)->EnableWindow(TRUE);
611 // maybe activate species
612 GetDlgItem(IDC_SHIP_DEBRIS1)->EnableWindow(m_debris_genre == DG_SHIP);
613 GetDlgItem(IDC_SHIP_DEBRIS2)->EnableWindow(m_debris_genre == DG_SHIP);
614 GetDlgItem(IDC_SHIP_DEBRIS3)->EnableWindow(m_debris_genre == DG_SHIP);
616 // maybe activate asteroid subtype
617 GetDlgItem(IDC_SUBTYPE1)->EnableWindow(m_debris_genre == DG_ASTEROID);
618 GetDlgItem(IDC_SUBTYPE2)->EnableWindow(m_debris_genre == DG_ASTEROID);
619 GetDlgItem(IDC_SUBTYPE3)->EnableWindow(m_debris_genre == DG_ASTEROID);
622 // force check of current debris type
623 ((CButton*)GetDlgItem(IDC_FIELD_ASTEROID))->SetCheck(m_debris_genre == DG_ASTEROID);
624 ((CButton*)GetDlgItem(IDC_FIELD_SHIP))->SetCheck(m_debris_genre == DG_SHIP);
626 // force check of passive field
627 ((CButton*)GetDlgItem(IDC_ACTIVE_FIELD))->SetCheck(0);
628 ((CButton*)GetDlgItem(IDC_PASSIVE_FIELD))->SetCheck(1);
631 GetDlgItem(IDC_ENABLE_INNER_BOX)->EnableWindow(FALSE);
634 void asteroid_editor::OnFieldShip()
637 m_debris_genre = DG_SHIP;
639 GetDlgItem(IDC_SHIP_DEBRIS1)->EnableWindow(TRUE);
640 GetDlgItem(IDC_SHIP_DEBRIS2)->EnableWindow(TRUE);
641 GetDlgItem(IDC_SHIP_DEBRIS3)->EnableWindow(TRUE);
643 GetDlgItem(IDC_SUBTYPE1)->EnableWindow(FALSE);
644 GetDlgItem(IDC_SUBTYPE2)->EnableWindow(FALSE);
645 GetDlgItem(IDC_SUBTYPE3)->EnableWindow(FALSE);
647 // force check of ship
648 ((CButton*)GetDlgItem(IDC_FIELD_ASTEROID))->SetCheck(0);
649 ((CButton*)GetDlgItem(IDC_FIELD_SHIP))->SetCheck(1);
653 void asteroid_editor::OnFieldAsteroid()
656 m_debris_genre = DG_ASTEROID;
658 GetDlgItem(IDC_SHIP_DEBRIS1)->EnableWindow(FALSE);
659 GetDlgItem(IDC_SHIP_DEBRIS2)->EnableWindow(FALSE);
660 GetDlgItem(IDC_SHIP_DEBRIS3)->EnableWindow(FALSE);
663 GetDlgItem(IDC_SUBTYPE1)->EnableWindow(TRUE);
664 GetDlgItem(IDC_SUBTYPE2)->EnableWindow(TRUE);
665 GetDlgItem(IDC_SUBTYPE3)->EnableWindow(TRUE);
667 // force check of asteroid
668 ((CButton*)GetDlgItem(IDC_FIELD_ASTEROID))->SetCheck(1);
669 ((CButton*)GetDlgItem(IDC_FIELD_SHIP))->SetCheck(0);