Rev 94 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "../StdAfx.h"#include "CustomiseWeapons.h"namespace Creator {void CustomiseWeapons::SetupControls(){this->Dock = System::Windows::Forms::DockStyle::Fill;this->ComboGameLaser->Items->Clear();this->ComboGameLaser->Items->Add("- Default -");}void CustomiseWeapons::UpdateWeaponsList(){m_bUpdating = true;this->ListWeapons->Items->Clear();bool added = false;CyStringList List;CyStringList *list = NULL;int idPos = 23;int mask = 0;if ( this->ComboGameLaser->SelectedIndex > 0 ){this->CheckWeaponDefault->Visible = true;this->ButCopyDefault->Visible = true;if ( this->RadioMissiles->Checked ){list = ((CustomiseShip ^)m_pParent)->GetMissiles(this->ComboGameLaser->SelectedIndex);idPos = 37;}elselist = ((CustomiseShip ^)m_pParent)->GetLasers(this->ComboGameLaser->SelectedIndex);for ( SWeaponMasks *m = m_pWeapons->First(); m; m = m_pWeapons->Next() ){if ( m->iGame == this->ComboGameLaser->SelectedIndex ){if ( this->RadioMissiles->Checked )mask = m->iMissileMask;elsemask = m->iLaserMask;break;}}this->CheckWeaponDefault->Checked = (mask == -1) ? true : false;}else{this->ButCopyDefault->Visible = false;this->CheckWeaponDefault->Visible = false;this->CheckWeaponDefault->Checked = false;if ( this->RadioMissiles->Checked )mask = m_pShipData->iMissileMask;elsemask = m_pShipData->iLaserMask;}if ( mask == -1 ) mask = 0;if ( list ){for ( SStringList *strNode = list->Head(); strNode; strNode = strNode->next ){CyString id = strNode->str.GetToken(";", 6, 6);SStringList *found = List.FindString(id);CyString str = (strNode->data.Empty()) ? strNode->str.GetToken(";", idPos, idPos) : strNode->data;if ( found ){found->data += ", ";found->data += str;}elseList.PushBack(id, str);}}for ( int i = 0; i < 32; i++ ){if ( List.Count() > i ){ListViewItem ^item = gcnew ListViewItem(SystemStringFromCyString(List.GetAt(i)->str));item->SubItems->Add(SystemStringFromCyString(List.GetAt(i)->data));this->ListWeapons->Items->Add(item);if ( this->RadioMissiles->Checked ){if ( List.GetAt(i)->str.IsNumber() )item->Tag = List.GetAt(i)->str.ToInt();elseitem->Tag = CShipData::ConvertMissileGroupToID(List.GetAt(i)->str);}elseitem->Tag = i;int flag = (1 << Convert::ToInt32(item->Tag));if ( mask & flag )item->Checked = true;added = true;}if ( !added ){ListViewItem ^added;if ( this->RadioMissiles->Checked )added = this->ListWeapons->Items->Add("MISSILEGROUP_" + Convert::ToString(i + 1));elseadded = this->ListWeapons->Items->Add("LASERGROUP_" + Convert::ToString(i + 1));added->Tag = i;if ( mask & (1 << i) )added->Checked = true;}}this->ListWeapons->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);m_bUpdating = false;}void CustomiseWeapons::SaveWeaponsList(){if ( m_bUpdating )return;// compute the maskint mask = 0;for ( int i = 0; i < this->ListWeapons->Items->Count; i++ ){ListViewItem ^item = this->ListWeapons->Items[i];if ( !item->Checked )continue;mask += (1 << Convert::ToInt32(item->Tag));}// edit the default lasersif ( !this->ComboGameLaser->SelectedIndex ){if ( this->RadioMissiles->Checked )m_pShipData->iMissileMask = mask;elsem_pShipData->iLaserMask = mask;}// otherwise adjust for the gameelse{for ( SWeaponMasks *m = m_pWeapons->First(); m; m = m_pWeapons->Next() ){if ( m->iGame == this->ComboGameLaser->SelectedIndex ){if ( this->RadioMissiles->Checked )m->iMissileMask = mask;elsem->iLaserMask = mask;break;}}}}};