Subversion Repositories spk

Rev

Rev 197 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "..\StdAfx.h"
#include "StartUp.h"

namespace PluginManager {

        bool StartUp::LoadDirectory()
        {
                if (_sDir->empty())
                {
                        m_bLoaded = false;
                        return false;
                }

                bool ret = m_pPackages->read(*_sDir, 0);
                if (ret)
                {
                        m_pPackages->UpdatePackages();
                        m_pPackages->ReadGameLanguage(false);
                }

                m_bLoaded = ret;
                return m_bLoaded;
        }

        void StartUp::Background_DoWork(System::Object ^Sender, DoWorkEventArgs ^E)
        {
                switch ( m_iLoadStatus )
                {
                        case 0:
                                if (_sDir->empty())
                                        m_bLoaded = false;
                                else if (m_pPackages->read(*_sDir, 0))
                                        m_bLoaded = true;
                                break;

                        case 1:
                                m_pPackages->UpdatePackages(0);
                                break;

                        case 2:
                                m_pPackages->UpdatePackages(1, true);
                                break;

                        case 3:
                                m_pPackages->UpdatePackages(2);
                                break;

                        case 4:
                                m_pPackages->UpdatePackages(3);
                                break;

                        case 5:
                                break;                          
                }

                if ( m_iProgressMax )
                        backgroundWorker1->ReportProgress((int)(((float)m_iProgressCount / (float)m_iProgressMax) * 100.0f));
        }
        
        void StartUp::Background_Progress(System::Object ^Sender, ProgressChangedEventArgs ^E)
        {
                this->progressBar1->Value = E->ProgressPercentage;
        }

        void StartUp::Background_Finished(System::Object ^Sender, RunWorkerCompletedEventArgs ^E)
        {
                bool dontInc = false;
                switch ( m_iLoadStatus )
                {
                        case 0:
                                if (!m_bLoaded)
                                {
                                        this->Close();
                                        return;
                                }
                                else
                                {
                                        this->label1->Text = "Checking for Original Files";
                                        this->label2->Text = "Please Wait...";
                                }
                                break;

                        case 1:
                                this->label1->Text = "Updating Package";
                                m_pPackages->StartPackage();
                                m_iProgressCount = 1;
                                m_iProgressMax = m_pPackages->countPackages(TYPE_BASE, false);
                                this->progressBar1->Show();
                                this->progressBar1->Value = 0;
                                if ( m_pPackages->GetCurrentPackage() )
                                        this->label2->Text = _US(m_pPackages->GetCurrentPackage()->getFullPackageName(m_pPackages->GetLanguage()));
                                else
                                        ++m_iLoadStatus;
                                break;

                        case 2:
                                ++m_iProgressCount;
                                if ( m_pPackages->GetCurrentPackage() )
                                {
                                        this->label2->Text = _US(m_pPackages->GetCurrentPackage()->getFullPackageName(m_pPackages->GetLanguage()));
                                        dontInc = true;
                                }
                                else
                                {
                                        this->label1->Text = "Reading Virtual File System";
                                        this->label2->Text = "Please Wait...";
                                        m_iProgressMax = 0;
                                        this->progressBar1->Hide();
                                }
                                break;

                        case 3:
                                this->label1->Text = "Organising Save Games";
                                break;

                        case 4:
                                this->label1->Text = "Reading Game Type";
                                break;

                        case 5:
                                m_pPackages->ReadGameLanguage(false);
                                this->Close();
                                return;

                        default:
                                this->Close();
                }

                if ( !dontInc )
                        ++m_iLoadStatus;
                backgroundWorker1->RunWorkerAsync();
        }
}