Subversion Repositories spk

Rev

Rev 103 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 cycrow 1
#pragma once
2
 
3
using namespace System;
4
using namespace System::ComponentModel;
5
using namespace System::Collections;
6
using namespace System::Windows::Forms;
7
using namespace System::Data;
8
using namespace System::Drawing;
9
 
10
typedef struct SWeaponMasks {
11
	int	iGame;
12
	int iLaserMask;
13
	int iMissileMask;
14
} SWeaponMasks;
15
 
16
namespace Creator {
17
 
18
	/// <summary>
19
	/// Summary for CustomiseWeapons
20
	/// </summary>
21
	public ref class CustomiseWeapons : public System::Windows::Forms::UserControl
22
	{
23
	public:
24
		CustomiseWeapons(Windows::Forms::Form ^parent, CLinkList<SWeaponMasks> *weapons, CShipData *shipData)
25
		{
26
			InitializeComponent();
27
 
28
			m_pShipData = shipData;
29
			m_pWeapons = weapons;
30
			m_pParent = parent;
31
			m_bUpdating = false;
32
 
33
			this->SetupControls();
34
		}
35
 
36
		void AddGameEntry(String ^game) { this->ComboGameLaser->Items->Add(game); }
37
		void SetupControlsEnd() { this->ComboGameLaser->SelectedIndex = 0; }
38
 
39
	protected:
40
		/// <summary>
41
		/// Clean up any resources being used.
42
		/// </summary>
43
		void SetupControls();
44
		void UpdateWeaponsList();
45
		void SaveWeaponsList();
46
 
47
		~CustomiseWeapons()
48
		{
49
			if (components)
50
			{
51
				delete components;
52
			}
53
		}
54
	private: System::Windows::Forms::ListView^  ListWeapons;
55
	protected: 
56
	private: System::Windows::Forms::ColumnHeader^  columnHeader1;
57
	private: System::Windows::Forms::ColumnHeader^  columnHeader2;
58
	private: System::Windows::Forms::FlowLayoutPanel^  flowLayoutPanel1;
59
	private: System::Windows::Forms::RadioButton^  RadioLasers;
60
	private: System::Windows::Forms::RadioButton^  RadioMissiles;
61
	private: System::Windows::Forms::CheckBox^  CheckWeaponDefault;
62
	private: System::Windows::Forms::Button^  ButCopyDefault;
63
	private: System::Windows::Forms::Panel^  panel34;
64
	private: System::Windows::Forms::ComboBox^  ComboGameLaser;
65
	private: System::Windows::Forms::Label^  label51;
66
 
67
	private:
68
		Windows::Forms::Form		^m_pParent;
69
		bool						 m_bUpdating;
70
		CLinkList<SWeaponMasks>		*m_pWeapons;
71
		CShipData					*m_pShipData;
72
		/// <summary>
73
		/// Required designer variable.
74
		/// </summary>
75
		System::ComponentModel::Container ^components;
76
 
77
#pragma region Windows Form Designer generated code
78
		/// <summary>
79
		/// Required method for Designer support - do not modify
80
		/// the contents of this method with the code editor.
81
		/// </summary>
82
		void InitializeComponent(void)
83
		{
84
			this->ListWeapons = (gcnew System::Windows::Forms::ListView());
85
			this->columnHeader1 = (gcnew System::Windows::Forms::ColumnHeader());
86
			this->columnHeader2 = (gcnew System::Windows::Forms::ColumnHeader());
87
			this->flowLayoutPanel1 = (gcnew System::Windows::Forms::FlowLayoutPanel());
88
			this->RadioLasers = (gcnew System::Windows::Forms::RadioButton());
89
			this->RadioMissiles = (gcnew System::Windows::Forms::RadioButton());
90
			this->CheckWeaponDefault = (gcnew System::Windows::Forms::CheckBox());
91
			this->ButCopyDefault = (gcnew System::Windows::Forms::Button());
92
			this->panel34 = (gcnew System::Windows::Forms::Panel());
93
			this->ComboGameLaser = (gcnew System::Windows::Forms::ComboBox());
94
			this->label51 = (gcnew System::Windows::Forms::Label());
95
			this->flowLayoutPanel1->SuspendLayout();
96
			this->panel34->SuspendLayout();
97
			this->SuspendLayout();
98
			// 
99
			// ListWeapons
100
			// 
101
			this->ListWeapons->CheckBoxes = true;
102
			this->ListWeapons->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^  >(2) {this->columnHeader1, 
103
				this->columnHeader2});
104
			this->ListWeapons->Dock = System::Windows::Forms::DockStyle::Fill;
105
			this->ListWeapons->FullRowSelect = true;
106
			this->ListWeapons->Location = System::Drawing::Point(0, 48);
107
			this->ListWeapons->Name = L"ListWeapons";
108
			this->ListWeapons->Size = System::Drawing::Size(552, 588);
109
			this->ListWeapons->TabIndex = 5;
110
			this->ListWeapons->UseCompatibleStateImageBehavior = false;
111
			this->ListWeapons->View = System::Windows::Forms::View::Details;
112
			this->ListWeapons->ItemChecked += gcnew System::Windows::Forms::ItemCheckedEventHandler(this, &CustomiseWeapons::ListWeapons_ItemChecked);
113
			// 
114
			// columnHeader1
115
			// 
116
			this->columnHeader1->Text = L"Group";
117
			// 
118
			// columnHeader2
119
			// 
120
			this->columnHeader2->Text = L"Weapons";
121
			// 
122
			// flowLayoutPanel1
123
			// 
124
			this->flowLayoutPanel1->Controls->Add(this->RadioLasers);
125
			this->flowLayoutPanel1->Controls->Add(this->RadioMissiles);
126
			this->flowLayoutPanel1->Controls->Add(this->CheckWeaponDefault);
127
			this->flowLayoutPanel1->Controls->Add(this->ButCopyDefault);
128
			this->flowLayoutPanel1->Dock = System::Windows::Forms::DockStyle::Top;
129
			this->flowLayoutPanel1->Location = System::Drawing::Point(0, 22);
130
			this->flowLayoutPanel1->Name = L"flowLayoutPanel1";
131
			this->flowLayoutPanel1->Size = System::Drawing::Size(552, 26);
132
			this->flowLayoutPanel1->TabIndex = 4;
133
			// 
134
			// RadioLasers
135
			// 
136
			this->RadioLasers->AutoSize = true;
137
			this->RadioLasers->Checked = true;
138
			this->RadioLasers->Location = System::Drawing::Point(3, 3);
139
			this->RadioLasers->Name = L"RadioLasers";
140
			this->RadioLasers->Size = System::Drawing::Size(116, 17);
141
			this->RadioLasers->TabIndex = 0;
142
			this->RadioLasers->TabStop = true;
143
			this->RadioLasers->Text = L"Laser Compatability";
144
			this->RadioLasers->UseVisualStyleBackColor = true;
145
			this->RadioLasers->CheckedChanged += gcnew System::EventHandler(this, &CustomiseWeapons::RadioLasers_CheckedChanged);
146
			// 
147
			// RadioMissiles
148
			// 
149
			this->RadioMissiles->AutoSize = true;
150
			this->RadioMissiles->Location = System::Drawing::Point(125, 3);
151
			this->RadioMissiles->Name = L"RadioMissiles";
152
			this->RadioMissiles->Size = System::Drawing::Size(121, 17);
153
			this->RadioMissiles->TabIndex = 1;
154
			this->RadioMissiles->Text = L"Missile Compatability";
155
			this->RadioMissiles->UseVisualStyleBackColor = true;
156
			this->RadioMissiles->CheckedChanged += gcnew System::EventHandler(this, &CustomiseWeapons::RadioMissiles_CheckedChanged);
157
			// 
158
			// CheckWeaponDefault
159
			// 
160
			this->CheckWeaponDefault->AutoSize = true;
161
			this->CheckWeaponDefault->Location = System::Drawing::Point(252, 3);
162
			this->CheckWeaponDefault->Name = L"CheckWeaponDefault";
163
			this->CheckWeaponDefault->Size = System::Drawing::Size(82, 17);
164
			this->CheckWeaponDefault->TabIndex = 2;
165
			this->CheckWeaponDefault->Text = L"Use Default";
166
			this->CheckWeaponDefault->UseVisualStyleBackColor = true;
167
			this->CheckWeaponDefault->CheckedChanged += gcnew System::EventHandler(this, &CustomiseWeapons::CheckWeaponDefault_CheckedChanged);
168
			// 
169
			// ButCopyDefault
170
			// 
171
			this->ButCopyDefault->AutoSize = true;
172
			this->ButCopyDefault->Location = System::Drawing::Point(340, 3);
173
			this->ButCopyDefault->Name = L"ButCopyDefault";
174
			this->ButCopyDefault->Size = System::Drawing::Size(83, 23);
175
			this->ButCopyDefault->TabIndex = 2;
176
			this->ButCopyDefault->Text = L"Copy Defaults";
177
			this->ButCopyDefault->UseVisualStyleBackColor = true;
178
			this->ButCopyDefault->Click += gcnew System::EventHandler(this, &CustomiseWeapons::ButCopyDefault_Click);
179
			// 
180
			// panel34
181
			// 
182
			this->panel34->Controls->Add(this->ComboGameLaser);
183
			this->panel34->Controls->Add(this->label51);
184
			this->panel34->Dock = System::Windows::Forms::DockStyle::Top;
185
			this->panel34->Location = System::Drawing::Point(0, 0);
186
			this->panel34->Name = L"panel34";
187
			this->panel34->Size = System::Drawing::Size(552, 22);
188
			this->panel34->TabIndex = 3;
189
			// 
190
			// ComboGameLaser
191
			// 
192
			this->ComboGameLaser->Dock = System::Windows::Forms::DockStyle::Fill;
193
			this->ComboGameLaser->DropDownStyle = System::Windows::Forms::ComboBoxStyle::DropDownList;
194
			this->ComboGameLaser->FormattingEnabled = true;
195
			this->ComboGameLaser->Location = System::Drawing::Point(188, 0);
196
			this->ComboGameLaser->Name = L"ComboGameLaser";
197
			this->ComboGameLaser->Size = System::Drawing::Size(364, 21);
198
			this->ComboGameLaser->TabIndex = 0;
199
			this->ComboGameLaser->SelectedIndexChanged += gcnew System::EventHandler(this, &CustomiseWeapons::ComboGameLaser_SelectedIndexChanged);
200
			// 
201
			// label51
202
			// 
203
			this->label51->Dock = System::Windows::Forms::DockStyle::Left;
204
			this->label51->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
205
				static_cast<System::Byte>(0)));
206
			this->label51->Location = System::Drawing::Point(0, 0);
207
			this->label51->Name = L"label51";
208
			this->label51->Size = System::Drawing::Size(188, 22);
209
			this->label51->TabIndex = 1;
210
			this->label51->Text = L"X-Universe Game:";
211
			this->label51->TextAlign = System::Drawing::ContentAlignment::MiddleLeft;
212
			// 
213
			// CustomiseWeapons
214
			// 
215
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
216
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
217
			this->Controls->Add(this->ListWeapons);
218
			this->Controls->Add(this->flowLayoutPanel1);
219
			this->Controls->Add(this->panel34);
220
			this->Name = L"CustomiseWeapons";
221
			this->Size = System::Drawing::Size(552, 636);
222
			this->flowLayoutPanel1->ResumeLayout(false);
223
			this->flowLayoutPanel1->PerformLayout();
224
			this->panel34->ResumeLayout(false);
225
			this->ResumeLayout(false);
226
 
227
		}
228
#pragma endregion
229
	private: System::Void ListWeapons_ItemChecked(System::Object^  sender, System::Windows::Forms::ItemCheckedEventArgs^  e) {
230
				 this->SaveWeaponsList();
231
			 }
232
private: System::Void RadioLasers_CheckedChanged(System::Object^  sender, System::EventArgs^  e) {
233
			 this->UpdateWeaponsList();
234
		 }
235
private: System::Void RadioMissiles_CheckedChanged(System::Object^  sender, System::EventArgs^  e) {
236
			 this->UpdateWeaponsList();
237
		 }
238
private: System::Void ComboGameLaser_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e) {
239
			 this->UpdateWeaponsList();
240
		 }
241
private: System::Void CheckWeaponDefault_CheckedChanged(System::Object^  sender, System::EventArgs^  e) {
242
			 this->ListWeapons->Enabled = !this->CheckWeaponDefault->Checked;
243
			 this->ButCopyDefault->Visible = !this->CheckWeaponDefault->Checked;
244
			 if ( m_bUpdating ) return;
245
			 int value = (this->CheckWeaponDefault->Checked) ? -1 : 0;
246
 
247
			for ( SWeaponMasks *m = m_pWeapons->First(); m; m = m_pWeapons->Next() )
248
			{
249
				if ( m->iGame == this->ComboGameLaser->SelectedIndex )
250
				{
251
					if ( this->RadioMissiles->Checked )
252
						m->iMissileMask = value;
253
					else
254
						m->iLaserMask = value;
255
					break;
256
				}
257
			}
258
			this->UpdateWeaponsList();
259
		 }
260
private: System::Void ButCopyDefault_Click(System::Object^  sender, System::EventArgs^  e) {
261
			for ( SWeaponMasks *m = m_pWeapons->First(); m; m = m_pWeapons->Next() )
262
			{
263
				if ( m->iGame == this->ComboGameLaser->SelectedIndex )
264
				{
265
					if ( this->RadioMissiles->Checked )
266
						m->iMissileMask = m_pShipData->iMissileMask;
267
					else
268
						m->iLaserMask = m_pShipData->iLaserMask;
269
					break;
270
				}
271
			}
272
			this->UpdateWeaponsList();
273
		 }
274
};
275
}