Rev 197 | 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 _addToList(Utils::WStringList &list, std::pair<Utils::WString, Utils::WString> &pair, int idPos){Utils::WString group = pair.first.token(L";", idPos);if (list.contains(group)){Utils::WString data = list.findString(group);list.changeData(group, data + L", " + pair.second);}elselist.pushBack(group, pair.second);}void CustomiseWeapons::UpdateWeaponsList(){m_bUpdating = true;this->ListWeapons->Items->Clear();bool added = false;Utils::WStringList List;int idPos = 23;int mask = 0;int defaultMask = 0;CGameDirectories *gameDir = ((CustomiseShip ^)m_pParent)->gameDirectories();if ( this->ComboGameLaser->SelectedIndex > 0 ){this->CheckWeaponDefault->Visible = true;this->ButCopyDefault->Visible = true;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 ( this->RadioMissiles->Checked )defaultMask = m_pShipData->iMissileMask;elsedefaultMask = m_pShipData->iLaserMask;if ( defaultMask == -1 ) defaultMask = 0;if ( mask == -1 ) mask = 0;if ( this->ComboGameLaser->SelectedIndex > 0 ) {gameDir->setSelectedGameDirectory(this->ComboGameLaser->SelectedIndex, true);if ( gameDir->selectedVFS() )((CustomiseShip ^)m_pParent)->LoadText(gameDir->selectedVFS());}if ( !this->RadioMissiles->Checked ) {for ( std::pair<Utils::WString, Utils::WString> laser = gameDir->firstLaser(); !laser.first.empty(); laser = gameDir->nextLaser() ) {_addToList(List, laser, 6);}}else {for ( std::pair<Utils::WString, Utils::WString> missile = gameDir->firstMissile(); !missile.first.empty(); missile = gameDir->nextMissile() ) {_addToList(List, missile, 6);}}if ( this->ComboGameLaser->SelectedIndex > 0 )gameDir->reselectTemporaryDirectory();if ( this->ComboGameLaser->SelectedIndex > 0 && this->CheckWeaponDefault->Checked )mask = defaultMask;for (size_t i = 0; i < 32; i++ ){if ( List.size() > i ){ListViewItem ^item = gcnew ListViewItem(_US(List[i]->str));item->SubItems->Add(_US(List[i]->data));this->ListWeapons->Items->Add(item);if ( this->RadioMissiles->Checked ){if ( List[i]->str.isNumber())item->Tag = List[i]->str.toInt();elseitem->Tag = CShipData::ConvertMissileGroupToID(List[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;}}}}};