]> Dogcows Code - chaz/yoink/blobdiff - src/YoinkApp.cc
dispatcher alias methods
[chaz/yoink] / src / YoinkApp.cc
index a1c2dbbf8133f273e2aca98efdf2dc3f8db133ef..86816e5295a61d78e6dbb0ae02df255d06b6acc1 100644 (file)
@@ -32,6 +32,8 @@
 
 #include <boost/bind.hpp>
 
+#include <Moof/Exception.hh>
+#include <Moof/Log.hh>
 #include <Moof/Math.hh>
 #include <Moof/OpenGL.hh>
 #include <Moof/Settings.hh>
@@ -107,15 +109,17 @@ YoinkApp::YoinkApp(int argc, char* argv[]) :
        music("NightFusion"),
        punchSound("RobotPunch")
 {
-       Mf::Dispatcher::instance().addHandler("video.context_recreated",
+       Mf::dispatcher::addHandler("video.context_recreated",
                        boost::bind(&YoinkApp::contextRecreated, this, _1), this);
        setupGL();
 
+       Mf::Scalar fade[2] = {0.0, 1.0};
+       musicFade.init(fade, 0.0);
        music.play();
 
        state = 0.0;
 
-       heroine = CharacterPtr(new Character("RobotTrooper"));
+       heroine = Character::alloc("RobotTrooper");
        heroine->getAnimation().startSequence("Run");
 
        font = new TilemapFont;
@@ -140,7 +144,7 @@ YoinkApp::~YoinkApp()
        delete font;
        delete testScene;
 
-       Mf::Dispatcher::instance().removeHandler(this);
+       Mf::dispatcher::removeHandler(this);
 }
 
 
@@ -176,7 +180,7 @@ void YoinkApp::setupGL()
        //glLineWidth(10.0f);
 }
 
-void YoinkApp::contextRecreated(const Mf::Notification& note)
+void YoinkApp::contextRecreated(const Mf::Notification* note)
 {
        // Whenever the context and a new one created, it probably won't contain our
        // state so we need to set that up again.
@@ -187,6 +191,10 @@ void YoinkApp::contextRecreated(const Mf::Notification& note)
 void YoinkApp::update(Mf::Scalar t, Mf::Scalar dt)
 {
        //dt *= 0.2;
+
+       musicFade.update(dt);
+       music.update(t, dt);
+       music.setGain(musicFade.getValue());
        
        fadeIn.update(dt);
 
@@ -234,6 +242,7 @@ void YoinkApp::draw(Mf::Scalar alpha)
 
 
        //heroine->draw(alpha);
+       heroine->getAabb().draw();
 
 
        hud.draw();
@@ -390,24 +399,39 @@ void YoinkApp::handleEvent(const Mf::Event& event)
                        if (event.key.keysym.sym == SDLK_ESCAPE)
                        {
                                stop();
+                               break;
                        }
                        else if (event.key.keysym.sym == SDLK_f)
                        {
                                getVideo().toggleFull();
+                               break;
                        }
                        else if (event.key.keysym.sym == SDLK_SPACE)
                        {
                                heroine->getAnimation().startSequence("Punch");
                                punchSound.play();
+                               break;
                        }
                        else if (event.key.keysym.sym == SDLK_r)
                        {
                                testScene->refresh();
+                               break;
+                       }
+                       else if (event.key.keysym.sym == SDLK_t)
+                       {
+                               Mf::dispatcher::dispatch("video.context_recreated");
+                               break;
+                       }
+                       else if (event.key.keysym.sym == SDLK_p)
+                       {
+                               music.togglePlayPause();
+                               break;
                        }
                        else if (event.key.keysym.sym == SDLK_l)
                        {
                                getVideo().toggleCursorGrab();
                                getVideo().toggleCursorVisible();
+                               break;
                        }
 
                case SDL_KEYUP:
@@ -415,7 +439,7 @@ void YoinkApp::handleEvent(const Mf::Event& event)
 
                case SDL_MOUSEMOTION:
                case SDL_MOUSEBUTTONDOWN:
-                       camera.adjustFromInput(event);
+                       camera.handleEvent(event);
                        break;
 
                case SDL_QUIT:
@@ -435,11 +459,15 @@ void YoinkApp::handleEvent(const Mf::Event& event)
 
 int main(int argc, char* argv[])
 {
-       std::cout << PACKAGE_STRING << std::endl
+       std::cout << std::endl << PACKAGE_STRING << std::endl
                          << "Compiled " << __TIME__ " " __DATE__ << std::endl
                          << "Send patches and bug reports to <"
                          PACKAGE_BUGREPORT << ">." << std::endl << std::endl;
 
+#if ! NDEBUG
+       Mf::setLogLevel(Mf::DEBUGGING);
+#endif
+
        int status = 0;
 
        try
@@ -447,13 +475,14 @@ int main(int argc, char* argv[])
                YoinkApp app(argc, argv);
                status = app.run();
        }
-       catch (Mf::Engine::Exception e)
+       catch (Mf::Exception e)
        {
-               std::cerr << "Unhandled exception: " << e.what() << std::endl;
+               Mf::logError("unhandled exception: <<%s>>", e.what());
+               Mf::logInfo("it's time to crash now :-(");
                status = 1;
        }
 
-       std::cout << "Goodbye..." << std::endl;
+       std::cout << std::endl << "Goodbye..." << std::endl << std::endl;
        return status;
 }
 
This page took 0.022423 seconds and 4 git commands to generate.