2 * $Logfile: /Freespace2/code/FRED2/ShieldSysDlg.cpp $
7 * Shield generator system editor. This dialog allows one to indicate whether all ships
8 * (on a certain team or of a certain type) have a shield system or not.
11 * Revision 1.1 2002/05/03 03:28:08 root
15 * 2 10/07/98 6:28p Dave
16 * Initial checkin. Renamed all relevant stuff to be Fred2 instead of
17 * Fred. Globalized mission and campaign file extensions. Removed Silent
18 * Threat specific code.
20 * 1 10/07/98 3:01p Dave
22 * 1 10/07/98 3:00p Dave
24 * 2 8/18/97 9:31p Hoffoss
25 * Added grid adjustment dialog and shield system editor dialog.
32 #include "shieldsysdlg.h"
34 #include "missionparse.h"
39 static char THIS_FILE[] = __FILE__;
42 int Shield_sys_teams[MAX_TEAM_NAMES] = {0};
43 int Shield_sys_types[MAX_SHIP_TYPES] = {0};
45 /////////////////////////////////////////////////////////////////////////////
46 // shield_sys_dlg dialog
48 shield_sys_dlg::shield_sys_dlg(CWnd* pParent /*=NULL*/)
49 : CDialog(shield_sys_dlg::IDD, pParent)
51 //{{AFX_DATA_INIT(shield_sys_dlg)
57 void shield_sys_dlg::DoDataExchange(CDataExchange* pDX)
59 CDialog::DoDataExchange(pDX);
60 //{{AFX_DATA_MAP(shield_sys_dlg)
61 DDX_CBIndex(pDX, IDC_TEAM, m_team);
62 DDX_CBIndex(pDX, IDC_TYPE, m_type);
66 BEGIN_MESSAGE_MAP(shield_sys_dlg, CDialog)
67 //{{AFX_MSG_MAP(shield_sys_dlg)
68 ON_CBN_SELCHANGE(IDC_TEAM, OnSelchangeTeam)
69 ON_CBN_SELCHANGE(IDC_TYPE, OnSelchangeType)
73 /////////////////////////////////////////////////////////////////////////////
74 // shield_sys_dlg message handlers
76 BOOL shield_sys_dlg::OnInitDialog()
79 int teams[MAX_TEAM_NAMES];
80 int types[MAX_SHIP_TYPES];
83 for (i=0; i<MAX_TEAM_NAMES; i++)
86 for (i=0; i<MAX_SHIP_TYPES; i++)
89 for (i=0; i<MAX_SHIPS; i++)
90 if (Ships[i].objnum >= 0) {
91 z = (Objects[Ships[i].objnum].flags & OF_NO_SHIELDS) ? 1 : 0;
92 if (!teams[Ships[i].team])
93 Shield_sys_teams[Ships[i].team] = z;
94 else if (Shield_sys_teams[Ships[i].team] != z)
95 Shield_sys_teams[Ships[i].team] = 2;
97 if (!types[Ships[i].ship_info_index])
98 Shield_sys_types[Ships[i].ship_info_index] = z;
99 else if (Shield_sys_types[Ships[i].ship_info_index] != z)
100 Shield_sys_types[Ships[i].ship_info_index] = 2;
102 teams[Ships[i].team]++;
103 types[Ships[i].ship_info_index]++;
106 box = (CComboBox *) GetDlgItem(IDC_TYPE);
108 for (i=0; i<Num_ship_types; i++)
109 box->AddString(Ship_info[i].name);
111 box = (CComboBox *) GetDlgItem(IDC_TEAM);
113 for (i=0; i<Num_team_names; i++)
114 box->AddString(Team_names[i]);
116 CDialog::OnInitDialog();
122 void shield_sys_dlg::OnOK()
128 for (i=0; i<MAX_SHIPS; i++)
129 if (Ships[i].objnum >= 0) {
130 z = Shield_sys_teams[Ships[i].team];
131 if (!Shield_sys_types[Ships[i].ship_info_index])
133 else if (Shield_sys_types[Ships[i].ship_info_index] == 1)
137 Objects[Ships[i].objnum].flags &= ~OF_NO_SHIELDS;
139 Objects[Ships[i].objnum].flags |= OF_NO_SHIELDS;
145 void shield_sys_dlg::OnSelchangeTeam()
148 if (((CButton *) GetDlgItem(IDC_TEAM_YES))->GetCheck())
149 Shield_sys_teams[m_team] = 0;
150 else if (((CButton *) GetDlgItem(IDC_TEAM_NO))->GetCheck())
151 Shield_sys_teams[m_team] = 1;
157 void shield_sys_dlg::set_team()
159 if (!Shield_sys_teams[m_team])
160 ((CButton *) GetDlgItem(IDC_TEAM_YES))->SetCheck(TRUE);
162 ((CButton *) GetDlgItem(IDC_TEAM_YES))->SetCheck(FALSE);
164 if (Shield_sys_teams[m_team] == 1)
165 ((CButton *) GetDlgItem(IDC_TEAM_NO))->SetCheck(TRUE);
167 ((CButton *) GetDlgItem(IDC_TEAM_NO))->SetCheck(FALSE);
170 void shield_sys_dlg::OnSelchangeType()
173 if (((CButton *) GetDlgItem(IDC_TYPE_YES))->GetCheck())
174 Shield_sys_types[m_type] = 0;
175 else if (((CButton *) GetDlgItem(IDC_TYPE_NO))->GetCheck())
176 Shield_sys_types[m_type] = 1;
182 void shield_sys_dlg::set_type()
184 if (!Shield_sys_types[m_type])
185 ((CButton *) GetDlgItem(IDC_TYPE_YES))->SetCheck(TRUE);
187 ((CButton *) GetDlgItem(IDC_TYPE_YES))->SetCheck(FALSE);
189 if (Shield_sys_types[m_type] == 1)
190 ((CButton *) GetDlgItem(IDC_TYPE_NO))->SetCheck(TRUE);
192 ((CButton *) GetDlgItem(IDC_TYPE_NO))->SetCheck(FALSE);