| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- #include "Main.h"
- #include <Ogre.h>
- #include <OIS.h>
- #include "common/FileSystem.h"
- #include "common/Logger.h"
- #include "AkaoParser.h"
- #include "engine/SoundManager.h"
- int state;
- class DisplayFrameListener : public Ogre::FrameListener, public Ogre::WindowEventListener, public OIS::KeyListener
- {
- public:
- DisplayFrameListener(Ogre::RenderWindow* win):
- m_Window(win),
- m_InputManager(0),
- m_Keyboard(0),
- m_Timer(0)
- {
- using namespace OIS;
- Ogre::LogManager::getSingletonPtr()->logMessage("*** Initializing OIS ***");
- ParamList pl;
- size_t windowHnd = 0;
- std::ostringstream windowHndStr;
- win->getCustomAttribute("WINDOW", &windowHnd);
- windowHndStr << windowHnd;
- pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
- m_InputManager = InputManager::createInputSystem(pl);
- m_Keyboard = static_cast<Keyboard*>(m_InputManager->createInputObject(OIS::OISKeyboard, true));
- m_Keyboard->setEventCallback(this);
- //Register as a Window listener
- Ogre::WindowEventUtilities::addWindowEventListener(m_Window, this);
- }
- virtual
- ~DisplayFrameListener(void)
- {
- m_InputManager->destroyInputObject(m_Keyboard);
- OIS::InputManager::destroyInputSystem(m_InputManager);
- //Remove ourself as a Window listener
- Ogre::WindowEventUtilities::removeWindowEventListener(m_Window, this);
- windowClosed(m_Window);
- }
- virtual void
- windowClosed(Ogre::RenderWindow* rw)
- {
- state = EXIT;
- }
- bool
- frameStarted(const Ogre::FrameEvent& evt)
- {
- if (state == EXIT)
- {
- return false;
- }
- if (m_Keyboard)
- {
- m_Keyboard->capture();
- }
- if (m_Timer >= 0.003)
- {
- m_Timer = 0;
- AKAOPARSER->Update();
- }
- m_Timer += evt.timeSinceLastFrame;
- SOUNDMAN->Update();
- return true;
- }
- bool
- keyPressed(const OIS::KeyEvent& e)
- {
- switch (e.key)
- {
- case OIS::KC_ESCAPE:
- {
- state = EXIT;
- }
- break;
- }
- return true;
- }
- bool
- keyReleased(const OIS::KeyEvent& e)
- {
- return true;
- }
- protected:
- Ogre::RenderWindow* m_Window;
- OIS::InputManager* m_InputManager;
- OIS::Keyboard* m_Keyboard;
- float m_Timer;
- };
- int
- main( int argc, char *argv[] )
- {
- Ogre::Root* root;
- Ogre::RenderWindow* window;
- root = new Ogre::Root( "", "" );
- #ifndef _DEBUG
- root->loadPlugin( "RenderSystem_GL.dll" );
- #else
- root->loadPlugin( "RenderSystem_GL_d.dll" );
- #endif
- root->setRenderSystem( root->getAvailableRenderers()[ 0 ] );
- root->initialise( false );
- Ogre::NameValuePairList misc;
- misc[ "title" ] = "FFVII Exporter";
- window = root->createRenderWindow( "QGearsWindow", 800, 600, false, &misc );
- LOGGER = new Logger( "game.log" );
- state = GAME;
- DisplayFrameListener* frame_listener = new DisplayFrameListener( window );
- root->addFrameListener( frame_listener );
- Ogre::SceneManager* scene_manager = root->createSceneManager( Ogre::ST_GENERIC, "Scene" );
- scene_manager->setAmbientLight( Ogre::ColourValue( 1.0, 1.0, 1.0 ) );
- Ogre::Camera* camera = scene_manager->createCamera( "Camera" );
- camera->setNearClipDistance( 5 );
- Ogre::Viewport* viewport = window->addViewport( camera );
- viewport->setBackgroundColour( Ogre::ColourValue( 0, 0, 0 ) );
- camera->setAspectRatio( Ogre::Real( viewport->getActualWidth()) / Ogre::Real( viewport->getActualHeight() ) );
- SOUNDMAN = new SoundManager();
- AKAOPARSER = new AkaoParser();
- AKAOPARSER->LoadInstruments( "data/INSTR.ALL", "data/INSTR.DAT" );
- if( argc == 2 )
- {
- AKAOPARSER->PlayMusic( Ogre::String( "data/music/") + argv[ 1 ] );
- //AKAOPARSER->DumpSequenceData( Ogre::String( "dump_" ) + argv[ 1 ] + ".txt" );
- }
- else
- {
- AKAOPARSER->PlayMusic( "data/music/aeris_theme.snd" );
- //AKAOPARSER->DumpSequenceData( "dump_aeris_theme.txt" );
- }
- Ogre::Root::getSingleton().startRendering();
- delete AKAOPARSER;
- delete SOUNDMAN;
- delete root;
- delete frame_listener;
- delete LOGGER;
- return 0;
- }
|