Rev 217 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "../StdAfx.h"
#include "CustomiseShip.h"
#include "Form1.h"
namespace Creator {
CustomiseShip::CustomiseShip(CXspFile *shipFile, Windows::Forms::Form ^mainForm, CPackages *p, ImageList ^imagesSmall, ImageList ^imagesLarge, CGameDirectories *gameDir)
{
InitializeComponent();
m_bUpdateing = false;
m_pPackages = p;
m_pMainForm = mainForm;
m_pShipFile = shipFile;
m_pShipData = new CShipData(m_pShipFile->shipData());
m_pWeapons = new CLinkList<SWeaponMasks>;
m_pShipFile->readSceneModels(*_pModels);
this->Text = "Customise Ship: " + _US(m_pShipData->sID);
m_pCustomiseInfo = gcnew CustomiseInfo(this, m_pShipData);
this->tabPage1->Controls->Add(m_pCustomiseInfo);
m_pCustomisePerformance = gcnew CustomisePerformance(m_pShipData);
this->tabPage2->Controls->Add(m_pCustomisePerformance);
m_pCustomiseWeapons1 = gcnew CustomiseWeapons1(this, m_pShipData);
this->tabPage3->Controls->Add(m_pCustomiseWeapons1);
m_pCustomiseModel = gcnew CustomiseModel(m_pShipData);
this->tabPage4->Controls->Add(m_pCustomiseModel);
m_pCustomiseWeapons = gcnew CustomiseWeapons(this, m_pWeapons, m_pShipData);
this->tabPage5->Controls->Add(m_pCustomiseWeapons);
m_pCustomiseGuns = gcnew CustomiseGuns(this, imagesSmall, imagesLarge, m_pShipData, _pModels);
this->tabPage7->Controls->Add(m_pCustomiseGuns);
m_pCustomiseTurret = gcnew CustomiseTurret(this, imagesSmall, imagesLarge, _pModels, m_pShipData, m_pShipFile);
this->tabPage6->Controls->Add(m_pCustomiseTurret);
_pGameDir = gameDir;
this->SetupControls();
}
void CustomiseShip::SwitchGame()
{
bool m_bUpdateding = true;
Utils::WString dir = _WS(this->ComboGame->Items[this->ComboGame->SelectedIndex]->ToString());
dir = dir.token(L"[", -1).token(L"]", 1);
_pGameDir->setSelectedDirectory(dir);
((Form1 ^)m_pMainForm)->LoadText(_pGameDir->selectedVFS());
// the ship info
m_pCustomiseInfo->UpdateInfo();
// the shield entries
m_pCustomiseWeapons1->UpdateShields();
// the cockpit entries
m_pCustomiseTurret->UpdateCockpits();
// notority preset
this->UpdateDisplay();
bool m_bUpdateing = false;
}
void CustomiseShip::LoadText(CVirtualFileSystem *vfs)
{
((Form1 ^)m_pMainForm)->LoadText(vfs);
}
void CustomiseShip::SetupControls()
{
this->ComboGame->Enabled = true;
this->ComboGame->Items->Clear();
int selectedGame = 0;
int highestGame = 0;
for ( Utils::WString dir = _pGameDir->first(); !dir.empty(); dir = _pGameDir->next() ) {
if ( _pGameDir->currentGame() > highestGame ) {
selectedGame = this->ComboGame->Items->Count;
highestGame = _pGameDir->currentGame();
}
this->ComboGame->Items->Add(_US(_pGameDir->currentName() + L" [" + dir + L"]"));
}
//((Form1 ^)m_pMainForm)->LoadText(NULL);
for ( int i = 1; i < m_pPackages->GetGameExe()->numGames(); i++ )
{
SGameExe *gameExe = m_pPackages->GetGameExe()->game(i);
if ( gameExe )
{
//this->ComboGame->Items->Add(_US(gameExe->sName));
m_pCustomiseTurret->AddGameEntry(_US(gameExe->sName));
m_pCustomiseWeapons->AddGameEntry(_US(gameExe->sName));
}
SWeaponMasks *m = m_pWeapons->push_back(new SWeaponMasks);
m->iGame = i;
m->iLaserMask = m_pShipFile->GetLaserMask(i, true);
m->iMissileMask = m_pShipFile->GetMissileMask(i, true);
}
// find heighest game we have added
if ( !this->ComboGame->Items->Count ) {
this->ComboGame->Items->Add(":: None Found ::");
this->ComboGame->Enabled = false;
}
this->ComboGame->SelectedIndex = selectedGame;
m_pCustomiseWeapons->SetupControlsEnd();
m_pCustomiseTurret->SetupControlsEnd();
}
CGameDirectories *CustomiseShip::gameDirectories()
{
return _pGameDir;
}
}