Rev 191 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "../StdAfx.h"
#include "CustomiseGuns.h"
namespace Creator {
String ^CustomiseGuns::GetPosition(int dir)
{
return ((CustomiseShip ^)m_pParent)->GetPosition(dir);
}
void CustomiseGuns::SetupControls()
{
this->Dock = System::Windows::Forms::DockStyle::Fill;
// update scene file entries
if (!_pModels || _pModels->empty())
{
// if no scene file
if ( this->PageAuto )
delete this->PageAuto;
this->PageAuto = nullptr;
}
// otherwise, fill in the data
else
{
int i = 0;
this->ComboAutoPrimary->Items->Add("None");
this->ComboAutoSecondary->Items->Add("None");
for(auto itr = _pModels->begin(); itr != _pModels->end(); itr++)
{
String ^entry = _US((*itr)->str) + ":" + Convert::ToString(i);
this->ComboAutoPrimary->Items->Add(entry);
this->ComboAutoSecondary->Items->Add(entry);
++i;
}
}
}
void CustomiseGuns::UpdateDisplay()
{
}
void CustomiseGuns::ChangeGunValues()
{
if ( m_bUpdatingGunLists )
return;
this->UpdateGunTurrets();
}
void CustomiseGuns::UpdateGunEntrys()
{
if ( !this->ListTurrets->SelectedItems->Count || !this->ListGuns->SelectedItems->Count )
return;
m_bUpdatingGunLists = true;
SGunGroup *g = m_pShipData->lGuns.Get(Convert::ToInt32(this->ListTurrets->SelectedItems[0]->Tag));
SWeaponGroup *w = g->lWeapons.Get(Convert::ToInt32(this->ListGuns->SelectedItems[0]->Tag));
if ( this->PageAuto )
{
if ( w->iNode1 == -1 || (w->iNode1 == 0 && w->sModel1 == L"0") || w->sModel1.empty() )
this->ComboAutoPrimary->SelectedIndex = 0;
else
this->ComboAutoPrimary->SelectedIndex = w->iNode1 + 1;
if ( w->iNode2 == -1 || (w->iNode2 == 0 && w->sModel2 == L"0") || w->sModel2.empty() )
this->ComboAutoSecondary->SelectedIndex = 0;
else
this->ComboAutoSecondary->SelectedIndex = w->iNode2 + 1;
}
if ( w->iNode1 == -1 || w->sModel1.empty() || w->sModel1 == L"0" )
this->CheckManualPrimary->Checked = false;
else
this->CheckManualPrimary->Checked = true;
this->NumManualPrimary->Value = w->iNode1;
this->TextManualPrimary->Text = _US(w->sModel1);
if ( w->iNode2 == -1 || w->sModel2.empty() || w->sModel2 == L"0" )
this->CheckManualSecondary->Checked = false;
else
this->CheckManualSecondary->Checked = true;
this->NumManualSecondary->Value = w->iNode2;
this->TextManualSecondary->Text = _US(w->sModel2);
m_bUpdatingGunLists = false;
}
void CustomiseGuns::UpdateGunsList()
{
m_bUpdatingGunLists = true;
int selected = -1;
if ( this->ListTurrets->SelectedItems->Count )
selected = Convert::ToInt32(this->ListTurrets->SelectedItems[0]->Tag);
this->ListGuns->Items->Clear();
if ( this->ListTurrets->SelectedItems->Count )
{
int pos = Convert::ToInt32(this->ListTurrets->SelectedItems[0]->Tag);
SGunGroup *g = m_pShipData->lGuns.Get(pos);
STurretEntry *t = m_pShipData->lTurrets.Get(pos);
int i = 0;
for ( SWeaponGroup *w = g->lWeapons.First(); w; w = g->lWeapons.Next(), i++ )
{
ListViewItem ^item = this->ListGuns->Items->Add(gcnew ListViewItem(Convert::ToString(i)));
item->SubItems->Add(Convert::ToString(w->iGunIndex));
item->SubItems->Add(Convert::ToString(w->iLaser));
if ( w->iNode1 == -1 || (w->iNode1 == 0 && w->sModel1 == L"0") || w->sModel1.empty() )
item->SubItems->Add("None");
else
item->SubItems->Add(_US(w->sModel1) + ":" + Convert::ToString(w->iNode1));
if ( w->iNode2 == -1 || (w->iNode2 == 0 && w->sModel2 == L"0") || w->sModel2.empty() )
item->SubItems->Add("None");
else
item->SubItems->Add(_US(w->sModel2) + ":" + Convert::ToString(w->iNode2));
item->Tag = i;
item->ImageKey = "gun";
if ( i == selected )
item->Selected = true;
}
}
this->ListGuns->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
m_bUpdatingGunLists = false;
}
void CustomiseGuns::UpdateGunTurrets()
{
int selected = -1;
if ( this->ListTurrets->SelectedItems->Count )
selected = Convert::ToInt32(this->ListTurrets->SelectedItems[0]->Tag);
this->ListTurrets->Items->Clear();
int i = 0;
for ( SGunGroup *g = m_pShipData->lGuns.First(); g; g = m_pShipData->lGuns.Next(), i++ )
{
STurretEntry *t = m_pShipData->lTurrets.Get(i);
ListViewItem ^item = this->ListTurrets->Items->Add(gcnew ListViewItem(Convert::ToString(g->iIndex)));
item->SubItems->Add(Convert::ToString(g->iGunIndex));
item->SubItems->Add(Convert::ToString(g->iLaserCount));
item->SubItems->Add(Convert::ToString(g->iWeaponCount));
// turret position
if ( i == 0 ) item->SubItems->Add(this->GetPosition(0));
else item->SubItems->Add(this->GetPosition(m_pShipData->cockpits[t->iTurret - 1].iPos));
item->ImageKey = "turret";
item->Tag = i;
if ( i == selected )
{
item->Selected = true;
this->UpdateGunsList();
}
}
this->ListTurrets->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
}
};