Rev 191 | Go to most recent revision | 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 entriesif ( !m_pModels || m_pModels->Empty() ){// if no scene fileif ( this->PageAuto )delete this->PageAuto;this->PageAuto = nullptr;}// otherwise, fill in the dataelse{int i = 0;this->ComboAutoPrimary->Items->Add("None");this->ComboAutoSecondary->Items->Add("None");for ( SStringList *str = m_pModels->Head(); str; str = str->next ){String ^entry = SystemStringFromCyString(str->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 == "0") || w->sModel1.Empty() )this->ComboAutoPrimary->SelectedIndex = 0;elsethis->ComboAutoPrimary->SelectedIndex = w->iNode1 + 1;if ( w->iNode2 == -1 || (w->iNode2 == 0 && w->sModel2 == "0") || w->sModel2.Empty() )this->ComboAutoSecondary->SelectedIndex = 0;elsethis->ComboAutoSecondary->SelectedIndex = w->iNode2 + 1;}if ( w->iNode1 == -1 || w->sModel1.Empty() || w->sModel1 == "0" )this->CheckManualPrimary->Checked = false;elsethis->CheckManualPrimary->Checked = true;this->NumManualPrimary->Value = w->iNode1;this->TextManualPrimary->Text = SystemStringFromCyString(w->sModel1);if ( w->iNode2 == -1 || w->sModel2.Empty() || w->sModel2 == "0" )this->CheckManualSecondary->Checked = false;elsethis->CheckManualSecondary->Checked = true;this->NumManualSecondary->Value = w->iNode2;this->TextManualSecondary->Text = SystemStringFromCyString(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 == "0") || w->sModel1.Empty() )item->SubItems->Add("None");elseitem->SubItems->Add(SystemStringFromCyString(w->sModel1) + ":" + Convert::ToString(w->iNode1));if ( w->iNode2 == -1 || (w->iNode2 == 0 && w->sModel2 == "0") || w->sModel2.Empty() )item->SubItems->Add("None");elseitem->SubItems->Add(SystemStringFromCyString(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 positionif ( 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);}};