Subversion Repositories spk

Rev

Rev 224 | 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();

                _pModels = new Utils::WStringList;
                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;
        }
}