Subversion Repositories spk

Rev

Rev 191 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 cycrow 1
#include "../StdAfx.h"
2
#include "CustomiseGuns.h"
3
 
4
namespace Creator {
5
	String ^CustomiseGuns::GetPosition(int dir)
6
	{
7
		return ((CustomiseShip ^)m_pParent)->GetPosition(dir);
8
	}
9
 
10
	void CustomiseGuns::SetupControls()
11
	{
12
		this->Dock = System::Windows::Forms::DockStyle::Fill;
13
 
14
		// update scene file entries
170 cycrow 15
		if (!_pModels || _pModels->empty())
1 cycrow 16
		{
17
			// if no scene file
18
			if ( this->PageAuto )
19
				delete this->PageAuto;
20
			this->PageAuto = nullptr;
21
		}
22
		// otherwise, fill in the data
23
		else
24
		{
25
			int i = 0;
26
			this->ComboAutoPrimary->Items->Add("None");
27
			this->ComboAutoSecondary->Items->Add("None");
170 cycrow 28
			for(auto itr = _pModels->begin(); itr != _pModels->end(); itr++)
1 cycrow 29
			{
170 cycrow 30
				String ^entry = _US((*itr)->str) + ":" + Convert::ToString(i);
1 cycrow 31
				this->ComboAutoPrimary->Items->Add(entry);
32
				this->ComboAutoSecondary->Items->Add(entry);
33
				++i;
34
			}
35
		}
36
	}
37
 
38
	void CustomiseGuns::UpdateDisplay()
39
	{
40
	}
41
 
42
	void CustomiseGuns::ChangeGunValues()
43
	{
44
		if ( m_bUpdatingGunLists )
45
			return;
46
		this->UpdateGunTurrets();
47
	}
48
 
49
	void CustomiseGuns::UpdateGunEntrys()
50
	{
51
		if ( !this->ListTurrets->SelectedItems->Count || !this->ListGuns->SelectedItems->Count )
52
			return;
53
 
54
		m_bUpdatingGunLists = true;
55
 
56
		SGunGroup *g = m_pShipData->lGuns.Get(Convert::ToInt32(this->ListTurrets->SelectedItems[0]->Tag));
57
		SWeaponGroup *w = g->lWeapons.Get(Convert::ToInt32(this->ListGuns->SelectedItems[0]->Tag));
58
 
59
		if ( this->PageAuto )
60
		{
226 cycrow 61
			if ( w->iNode1 == -1 || (w->iNode1 == 0 && w->sModel1 == L"0") || w->sModel1.empty() )
1 cycrow 62
				this->ComboAutoPrimary->SelectedIndex = 0;
63
			else
64
				this->ComboAutoPrimary->SelectedIndex = w->iNode1 + 1;
65
 
226 cycrow 66
			if ( w->iNode2 == -1 || (w->iNode2 == 0 && w->sModel2 == L"0") || w->sModel2.empty() )
1 cycrow 67
				this->ComboAutoSecondary->SelectedIndex = 0;
68
			else
69
				this->ComboAutoSecondary->SelectedIndex = w->iNode2 + 1;
70
		}
71
 
226 cycrow 72
		if ( w->iNode1 == -1 || w->sModel1.empty() || w->sModel1 == L"0" )
1 cycrow 73
			this->CheckManualPrimary->Checked = false;
74
		else
75
			this->CheckManualPrimary->Checked = true;
76
		this->NumManualPrimary->Value = w->iNode1;
191 cycrow 77
		this->TextManualPrimary->Text = _US(w->sModel1);
1 cycrow 78
 
226 cycrow 79
		if ( w->iNode2 == -1 || w->sModel2.empty() || w->sModel2 == L"0" )
1 cycrow 80
			this->CheckManualSecondary->Checked = false;
81
		else
82
			this->CheckManualSecondary->Checked = true;
83
		this->NumManualSecondary->Value = w->iNode2;
191 cycrow 84
		this->TextManualSecondary->Text = _US(w->sModel2);
1 cycrow 85
 
86
		m_bUpdatingGunLists = false;
87
	}
88
 
89
	void CustomiseGuns::UpdateGunsList()
90
	{
91
		m_bUpdatingGunLists = true;
92
 
93
		int selected = -1;
94
		if ( this->ListTurrets->SelectedItems->Count )
95
			selected = Convert::ToInt32(this->ListTurrets->SelectedItems[0]->Tag);
96
 
97
		this->ListGuns->Items->Clear();
98
 
99
		if ( this->ListTurrets->SelectedItems->Count )
100
		{
101
			int pos = Convert::ToInt32(this->ListTurrets->SelectedItems[0]->Tag);
102
			SGunGroup *g = m_pShipData->lGuns.Get(pos);
103
			STurretEntry *t = m_pShipData->lTurrets.Get(pos);
104
 
105
			int i = 0;
106
			for ( SWeaponGroup *w = g->lWeapons.First(); w; w = g->lWeapons.Next(), i++ )
107
			{
108
				ListViewItem ^item = this->ListGuns->Items->Add(gcnew ListViewItem(Convert::ToString(i)));
109
				item->SubItems->Add(Convert::ToString(w->iGunIndex));
110
				item->SubItems->Add(Convert::ToString(w->iLaser));
226 cycrow 111
				if ( w->iNode1 == -1 || (w->iNode1 == 0 && w->sModel1 == L"0") || w->sModel1.empty() )
1 cycrow 112
					item->SubItems->Add("None");
113
				else
170 cycrow 114
					item->SubItems->Add(_US(w->sModel1) + ":" + Convert::ToString(w->iNode1));
226 cycrow 115
				if ( w->iNode2 == -1 || (w->iNode2 == 0 && w->sModel2 == L"0") || w->sModel2.empty() )
1 cycrow 116
					item->SubItems->Add("None");
117
				else
170 cycrow 118
					item->SubItems->Add(_US(w->sModel2) + ":" + Convert::ToString(w->iNode2));
1 cycrow 119
				item->Tag = i;
120
				item->ImageKey = "gun";
121
				if ( i == selected )
122
					item->Selected = true;
123
			}
124
		}
125
 
126
		this->ListGuns->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
127
 
128
		m_bUpdatingGunLists = false;
129
	}
130
 
131
	void CustomiseGuns::UpdateGunTurrets()
132
	{
133
		int selected = -1;
134
		if ( this->ListTurrets->SelectedItems->Count )
135
			selected = Convert::ToInt32(this->ListTurrets->SelectedItems[0]->Tag);
136
 
137
		this->ListTurrets->Items->Clear();
138
		int i = 0;
139
		for ( SGunGroup *g = m_pShipData->lGuns.First(); g; g = m_pShipData->lGuns.Next(), i++ )
140
		{
141
			STurretEntry *t = m_pShipData->lTurrets.Get(i);
142
			ListViewItem ^item = this->ListTurrets->Items->Add(gcnew ListViewItem(Convert::ToString(g->iIndex)));
143
 
144
			item->SubItems->Add(Convert::ToString(g->iGunIndex));
145
			item->SubItems->Add(Convert::ToString(g->iLaserCount));
146
			item->SubItems->Add(Convert::ToString(g->iWeaponCount));
147
			// turret position
148
			if ( i == 0 ) item->SubItems->Add(this->GetPosition(0));
149
			else item->SubItems->Add(this->GetPosition(m_pShipData->cockpits[t->iTurret - 1].iPos));
150
			item->ImageKey = "turret";
151
			item->Tag = i;
152
 
153
			if ( i == selected )
154
			{
155
				item->Selected = true;
156
				this->UpdateGunsList();
157
			}
158
		}
159
		this->ListTurrets->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
160
	}
161
};