Rev 36 | Rev 224 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "../StdAfx.h"#include "ImportShip.h"namespace Creator {ImportShip::ImportShip(String ^id, String ^shipName, CVirtualFileSystem *pVfs){InitializeComponent();if ( shipName && shipName->Length )this->Text = this->Text + ": " + shipName + " (" + id + ")";elsethis->Text = this->Text + " (" + id + ")";this->button1->Visible = false;this->pictureBox1->Visible = false;this->pictureBox2->Visible = false;this->pictureBox3->Visible = false;this->pictureBox4->Visible = false;this->pictureBox5->Visible = false;this->pictureBox6->Visible = false;this->pictureBox7->Visible = false;this->pictureBox8->Visible = false;this->pictureBox9->Visible = false;this->pictureBox10->Visible = false;m_pVfs = pVfs;m_bError = false;m_sID = id;m_pShip = NULL;m_pInfo = new CProgressInfoDone;m_pInfo->UpdateStatus(IMPORTSHIP_NONE);m_lModels = NULL;m_iStatus = IMPORTSHIP_SCENE;_sShipName = shipName;}void ImportShip::StartImport(){m_pShip = new CXspFile();if ( _sShipName ) m_pShip->setName(_S(_sShipName));m_bError = false;m_iStatus = IMPORTSHIP_SCENE;this->backgroundWorker1->RunWorkerAsync();}void ImportShip::Import(){m_bError = false;if ( m_iStatus <= IMPORTSHIP_SCENE ){// make sure the id is correctUtils::String data = CyStringFromSystemString(m_sID).ToString();data.removeChar('\r');while(data.right(1) == ";")data.truncate(-1);m_bError = !m_pShip->startExtractShip(m_pVfs, data, m_pInfo);if ( m_bError ) m_sError = "Unable to extract scene file";m_iStatus = IMPORTSHIP_EXTRACTSCENE;}else if ( m_iStatus == IMPORTSHIP_EXTRACTSCENE ){m_lModels = m_pShip->ReadSceneModels();if ( !m_lModels ) {m_bError = true;m_sError = "Unable to read the scene file to extract model data";}++m_iStatus;}else if ( m_iStatus == IMPORTSHIP_PACK ){m_pShip->PackAllFiles();m_iStatus = IMPORTSHIP_DONE;}else if ( m_iStatus > IMPORTSHIP_EXTRACTSCENE ){m_bError = !m_pShip->processSceneFileSection(m_iStatus, m_pVfs, m_lModels, m_pInfo);if ( m_bError ) m_sError = "Unable to process scene file (Status=" + (long)m_iStatus;++m_iStatus;}}void ImportShip::_runNext(){if ( m_bError ){this->Close();return;}if ( m_iStatus > IMPORTSHIP_SCENE )this->pictureBox2->Visible = true;if ( m_iStatus > IMPORTSHIP_EXTRACTSCENE )this->pictureBox1->Visible = true;if ( m_iStatus > IMPORTSHIP_DUMMIES )this->pictureBox3->Visible = true;if ( m_iStatus > IMPORTSHIP_COMPONANT )this->pictureBox4->Visible = true;if ( m_iStatus > IMPORTSHIP_MODELS )this->pictureBox5->Visible = true;if ( m_iStatus > IMPORTSHIP_TEXTURES )this->pictureBox6->Visible = true;if ( m_iStatus > IMPORTSHIP_TEXTS )this->pictureBox7->Visible = true;if ( m_iStatus > IMPORTSHIP_BODIES )this->pictureBox8->Visible = true;if ( m_iStatus > IMPORTSHIP_COCKPITS )this->pictureBox9->Visible = true;if ( m_iStatus > IMPORTSHIP_PACK )this->pictureBox10->Visible = true;if ( m_iStatus < IMPORTSHIP_DONE )this->backgroundWorker1->RunWorkerAsync();else {this->button1->Visible = true;if ( _sShipName && _sShipName->Length ) m_pShip->setName(_S(_sShipName));}}void ImportShip::_cleanUp(){delete m_pInfo;if ( m_lModels )delete m_lModels;}}