Rev 89 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
//#include "stdafx.h"
#include "EditWares.h"
#include "Utils/StringList.h"
#include "../../common/spknet.h"
#include "EditPrice.h"
namespace PluginManager {
void EditWares::loadWares()
{
this->listView1->Items->Clear();
this->listView1->Groups->Clear();
for (CBaseFile *package = _pPackages->FirstPackage(); package; package = _pPackages->NextPackage()) {
if ( !package->IsEnabled() ) continue;
CLinkList<SWareEntry> list;
if ( package->readWares(_pPackages->GetLanguage(), list, _pPackages->empWaresForGame()) ) {
ListViewGroup ^group = gcnew ListViewGroup(_US(package->GetFullPackageName(44).ToString()), HorizontalAlignment::Left);
this->listView1->Groups->Add(group);
for(CListNode<SWareEntry> *node = list.Front(); node; node = node->next()) {
ListViewItem ^item = gcnew ListViewItem(_US(node->Data()->name));
item->UseItemStyleForSubItems = false;
int price = 0;
bool notoOverride = false;
int noto = 0;
switch(node->Data()->type) {
case Ware_EMP:
price = _pPackages->empOveridePrice(node->Data()->position);
notoOverride = _pPackages->empOverideNoto(node->Data()->position, ¬o);
item->SubItems->Add("EMP");
break;
case Ware_BuiltIn:
item->SubItems->Add("Built-In");
price = _pPackages->builtInWareOveridePrice(node->Data()->position);
notoOverride = _pPackages->builtInWareOverideNoto(node->Data()->position, ¬o);
break;
case Ware_Custom:
price = _pPackages->customWareOveridePrice(node->Data()->id);
notoOverride = _pPackages->customWareOverideNoto(node->Data()->id, ¬o);
item->SubItems->Add("Custom");
break;
default:
item->SubItems->Add("");
}
bool priceOverride = true;
if ( !price ) {
price = node->Data()->relval;
priceOverride = false;
}
item->SubItems->Add(_price(price));
item->SubItems->Add(_noto((notoOverride) ? noto : node->Data()->notority));
item->SubItems->Add(_US(node->Data()->description));
item->SubItems->Add(_US(node->Data()->id));
item->SubItems->Add(Convert::ToString(node->Data()->type));
item->SubItems->Add(Convert::ToString(price));
item->ImageIndex = 0;
item->Group = group;
item->Tag = node->Data()->position;
this->listView1->Items->Add(item);
item->SubItems[2]->ForeColor = (priceOverride) ? Color::Green : Color::Black;
item->SubItems[3]->ForeColor = (notoOverride) ? Color::Green : Color::Black;
}
}
}
this->listView1->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
this->listView1->Columns[6]->Width = 0;
this->listView1->Columns[7]->Width = 0;
}
String ^EditWares::_price(int iPrice)
{
return "" + String::Format("{0:#,##0}", (iPrice * 28) * 1.00268550164);
}
String ^EditWares::_noto(int iNoto)
{
return String::Format("{0:#,##0}", iNoto);
}
void EditWares::editPrice()
{
if ( !this->listView1->SelectedItems->Count ) return;
ListViewItem ^item = this->listView1->SelectedItems[0];
EditPrice ^priceDlg = gcnew EditPrice(Convert::ToInt32(item->SubItems[7]->Text));
if ( priceDlg->ShowDialog(this) == System::Windows::Forms::DialogResult::OK ) {
enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);
int position = Convert::ToInt32(item->Tag);
int price = priceDlg->price();
switch(type) {
case Ware_EMP:
_pPackages->addEMPPriceOverride(position, price);
break;
case Ware_BuiltIn:
_pPackages->addBuiltInWarePriceOverride(position, price);
break;
case Ware_Custom:
_pPackages->addCustomWarePriceOverride(_S(item->SubItems[5]->Text), price);
break;
}
item->SubItems[2]->ForeColor = Color::Green;
item->SubItems[2]->Text = _price(price);
}
}
void EditWares::editNoto(int iNoto)
{
if ( !this->listView1->SelectedItems->Count ) return;
ListViewItem ^item = this->listView1->SelectedItems[0];
enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);
int position = Convert::ToInt32(item->Tag);
switch(type) {
case Ware_EMP:
_pPackages->addEMPNotoOverride(position, iNoto);
break;
case Ware_BuiltIn:
_pPackages->addBuiltInWareNotoOverride(position, iNoto);
break;
case Ware_Custom:
_pPackages->addCustomWareNotoOverride(_S(item->SubItems[5]->Text), iNoto);
break;
}
item->SubItems[3]->ForeColor = Color::Green;
item->SubItems[3]->Text = _noto(iNoto);
}
void EditWares::reset()
{
if ( !this->listView1->SelectedItems->Count ) return;
ListViewItem ^item = this->listView1->SelectedItems[0];
enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);
int position = Convert::ToInt32(item->Tag);
switch(type) {
case Ware_EMP:
_pPackages->removeEmpOverride(position);
break;
case Ware_BuiltIn:
_pPackages->removeBuiltinWareOverride(position);
break;
case Ware_Custom:
_pPackages->removeCustomWareOverride(_S(item->SubItems[5]->Text));
break;
}
this->loadWares();
}
}