Subversion Repositories spk

Rev

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

Rev Author Line No. Line
88 cycrow 1
//#include "stdafx.h"
2
#include "EditWares.h"
3
 
4
#include "Utils/StringList.h"
5
#include "../../common/spknet.h"
6
#include "EditPrice.h"
7
 
8
namespace PluginManager {
9
 
10
	void EditWares::loadWares()
11
	{
12
		this->listView1->Items->Clear();
13
		this->listView1->Groups->Clear();
14
 
15
		for (CBaseFile *package = _pPackages->FirstPackage(); package; package = _pPackages->NextPackage()) {
16
			if ( !package->IsEnabled() ) continue;
17
 
18
			CLinkList<SWareEntry> list;
19
			if ( package->readWares(_pPackages->GetLanguage(), list, _pPackages->empWaresForGame()) ) {
20
 
21
				ListViewGroup ^group = gcnew ListViewGroup(_US(package->GetFullPackageName(44).ToString()), HorizontalAlignment::Left);
22
				this->listView1->Groups->Add(group);
23
 
24
				for(CListNode<SWareEntry> *node = list.Front(); node; node = node->next()) {
25
					ListViewItem ^item = gcnew ListViewItem(_US(node->Data()->name));
26
					item->UseItemStyleForSubItems = false;
27
 
28
					int price = 0;
29
					bool notoOverride = false;
30
					int noto = 0;
31
 
32
					switch(node->Data()->type) {
33
						case Ware_EMP:
34
							price = _pPackages->empOveridePrice(node->Data()->position);
35
							notoOverride = _pPackages->empOverideNoto(node->Data()->position, &noto);
36
							item->SubItems->Add("EMP");
37
							break;
38
 
39
						case Ware_BuiltIn:
40
							item->SubItems->Add("Built-In");
41
							price = _pPackages->builtInWareOveridePrice(node->Data()->position);
42
							notoOverride = _pPackages->builtInWareOverideNoto(node->Data()->position, &noto);
43
							break;
44
 
45
						case Ware_Custom:
46
							price = _pPackages->customWareOveridePrice(node->Data()->id);
47
							notoOverride = _pPackages->customWareOverideNoto(node->Data()->id, &noto);
48
							item->SubItems->Add("Custom");
49
							break;
50
 
51
						default:
52
							item->SubItems->Add("");
53
					}
54
 
55
					bool priceOverride = true;
56
					if ( !price ) {
57
						price = node->Data()->relval;
58
						priceOverride = false;
59
					}
60
					item->SubItems->Add(_price(price));
61
					item->SubItems->Add(_noto((notoOverride) ? noto :  node->Data()->notority));
62
					item->SubItems->Add(_US(node->Data()->description));
63
					item->SubItems->Add(_US(node->Data()->id));
64
					item->SubItems->Add(Convert::ToString(node->Data()->type));
65
					item->SubItems->Add(Convert::ToString(price));
66
					item->ImageIndex = 0;
67
					item->Group = group;
68
					item->Tag = node->Data()->position;
69
					this->listView1->Items->Add(item);
70
 
71
					item->SubItems[2]->ForeColor = (priceOverride) ? Color::Green : Color::Black;
72
					item->SubItems[3]->ForeColor = (notoOverride) ? Color::Green : Color::Black;
73
				}
74
			}
75
		}
76
 
77
		this->listView1->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
78
		this->listView1->Columns[6]->Width = 0;
79
		this->listView1->Columns[7]->Width = 0;
80
	}
81
 
82
	String ^EditWares::_price(int iPrice)
83
	{
84
		return "€" + String::Format("{0:#,##0}", (iPrice * 28) * 1.00268550164);
85
	}
86
 
87
	String ^EditWares::_noto(int iNoto)
88
	{
89
		return String::Format("{0:#,##0}", iNoto);
90
	}
91
 
92
	void EditWares::editPrice()
93
	{
94
		if ( !this->listView1->SelectedItems->Count ) return;
95
 
96
		ListViewItem ^item = this->listView1->SelectedItems[0];
97
 
98
		EditPrice ^priceDlg = gcnew EditPrice(Convert::ToInt32(item->SubItems[7]->Text));
99
 
100
		if ( priceDlg->ShowDialog(this) == System::Windows::Forms::DialogResult::OK ) {
101
			enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);
102
			int position = Convert::ToInt32(item->Tag);
103
 
104
			int price = priceDlg->price();
105
 
106
			switch(type) {
107
				case Ware_EMP:
108
					_pPackages->addEMPPriceOverride(position, price);
109
					break;
110
				case Ware_BuiltIn:
111
					_pPackages->addBuiltInWarePriceOverride(position, price);
112
					break;
113
				case Ware_Custom:
114
					_pPackages->addCustomWarePriceOverride(_S(item->SubItems[5]->Text), price);
115
					break;
116
			}
117
 
118
			item->SubItems[2]->ForeColor = Color::Green;
119
			item->SubItems[2]->Text = _price(price);
120
		}
121
	}
122
 
123
	void EditWares::editNoto(int iNoto)
124
	{
125
		if ( !this->listView1->SelectedItems->Count ) return;
126
 
127
		ListViewItem ^item = this->listView1->SelectedItems[0];
128
 
129
		enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);
130
		int position = Convert::ToInt32(item->Tag);
131
 
132
		switch(type) {
133
			case Ware_EMP:
134
				_pPackages->addEMPNotoOverride(position, iNoto);
135
				break;
136
			case Ware_BuiltIn:
137
				_pPackages->addBuiltInWareNotoOverride(position, iNoto);
138
				break;
139
			case Ware_Custom:
140
				_pPackages->addCustomWareNotoOverride(_S(item->SubItems[5]->Text), iNoto);
141
				break;
142
		}
143
 
144
		item->SubItems[3]->ForeColor = Color::Green;
145
		item->SubItems[3]->Text = _noto(iNoto);
146
	}
147
 
148
	void EditWares::reset()
149
	{
150
		if ( !this->listView1->SelectedItems->Count ) return;
151
 
152
		ListViewItem ^item = this->listView1->SelectedItems[0];
153
 
154
		enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);
155
		int position = Convert::ToInt32(item->Tag);
156
 
157
		switch(type) {
158
			case Ware_EMP:
159
				_pPackages->removeEmpOverride(position);
160
				break;
161
			case Ware_BuiltIn:
162
				_pPackages->removeBuiltinWareOverride(position);
163
				break;
164
			case Ware_Custom:
165
				_pPackages->removeCustomWareOverride(_S(item->SubItems[5]->Text));
166
				break;
167
		}
168
 
169
		this->loadWares();
170
	}
171
}