//|||||||||||||||||||||||||||||||||||||||||||||||

#include "DemoApp.hpp"
#include "MenuState.hpp"
#include "PauseState.hpp"
#include "ViewGestureState.hpp"

//|||||||||||||||||||||||||||||||||||||||||||||||

DemoApp::DemoApp()
{
	m_pAppStateManager = 0;
}

//|||||||||||||||||||||||||||||||||||||||||||||||

DemoApp::~DemoApp()
{
	delete m_pAppStateManager;
    delete OgreFramework::getSingletonPtr();
}

//|||||||||||||||||||||||||||||||||||||||||||||||

void DemoApp::startDemo()
{
	new OgreFramework();
	if(!OgreFramework::getSingletonPtr()->initOgre("AdvancedOgreFramework", 0, 0))
		return;

	// Mingyu: initialize the database
	OgreFramework::getSingletonPtr()->initializeDatabase();

	OgreFramework::getSingletonPtr()->m_pLog->logMessage("Demo initialized!");

	m_pAppStateManager = new AppStateManager();

	MenuState:: create(m_pAppStateManager, "MenuState");	
    PauseState::create(m_pAppStateManager, "PauseState");		
	ViewGestureState:: create(m_pAppStateManager, "ViewGestureState");	

	m_pAppStateManager->start(m_pAppStateManager->findByName("MenuState"));
}

//|||||||||||||||||||||||||||||||||||||||||||||||