X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FYoinkApp.cc;h=d36f6da3ef8f52f9f8e61d82c85a4f5cb6f655b4;hp=626fe1aea9ab18e823c49635573a19dad9dfac8c;hb=57b78ebe21b1b48acd337daa5a1cb8c383959cfa;hpb=a5f0d391406a68275b41448fc3f49e8d8396c497 diff --git a/src/YoinkApp.cc b/src/YoinkApp.cc index 626fe1a..d36f6da 100644 --- a/src/YoinkApp.cc +++ b/src/YoinkApp.cc @@ -32,6 +32,8 @@ #include +#include +#include #include #include #include @@ -40,10 +42,6 @@ #include "YoinkApp.hh" -#include -#include -#include - #if HAVE_CONFIG_H #include "config.h" #endif @@ -104,20 +102,18 @@ static std::string iconFile() YoinkApp::YoinkApp(int argc, char* argv[]) : Mf::Engine(argc, argv, configFiles(), PACKAGE_STRING, iconFile()), - music("NightFusion"), + music("NightFusionIntro"), punchSound("RobotPunch") { - Mf::Dispatcher::getInstance().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; + music.setLooping(true); + music.enqueue("NightFusionLoop"); + music.stream(); - heroine = CharacterPtr(new Character("RobotTrooper")); + heroine = Character::alloc("RobotTrooper"); heroine->getAnimation().startSequence("Run"); font = new TilemapFont; @@ -132,18 +128,16 @@ YoinkApp::YoinkApp(int argc, char* argv[]) : Mf::Scalar coeff[2] = {1.0, 0.0}; fadeIn.init(coeff, 0.1); - testScene = new Mf::Scene("Test"); + testScene = Mf::Scene::alloc("Test"); heroine->treeNode = testScene->getOctree()->insert(heroine); } YoinkApp::~YoinkApp() { - std::cerr << "yoinkapp destructor" << std::endl; //delete heroine; delete font; - delete testScene; - Mf::Dispatcher::getInstance().removeHandler(this); + Mf::dispatcher::removeHandler(this); } @@ -189,18 +183,16 @@ void YoinkApp::contextRecreated(const Mf::Notification* note) void YoinkApp::update(Mf::Scalar t, Mf::Scalar dt) { - //dt *= 0.2; + //dt *= 0.5; - musicFade.update(dt); music.update(t, dt); - music.setGain(musicFade.getValue()); - fadeIn.update(dt); - camera.update(t, dt); - heroine->update(t, dt); + + // reinsert heroine heroine->treeNode = testScene->getOctree()->reinsert(heroine, heroine->treeNode); + testScene->getOctree()->print(heroine->treeNode); //camera.lookAt(heroine->getSphere().point); camera.setPosition(Mf::Vector3(-heroine->current.position[0], -heroine->current.position[1], -256)); @@ -208,44 +200,26 @@ void YoinkApp::update(Mf::Scalar t, Mf::Scalar dt) interp.update(dt); hud.setBar1Progress(interp.getValue()); hud.setBar2Progress(1.0 - interp.getValue()); - - prevstate = state; - state += dt; } void YoinkApp::draw(Mf::Scalar alpha) { - //Mf::Vector4 meh; - //meh.random(0.0, 1.0); - //static Mf::Vector4 c1(meh); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - //Mf::Scalar drawstate = cml::lerp(prevstate, state, alpha); - //Mf::Scalar sinstate = std::sin(drawstate); - //Mf::Scalar cosstate = std::cos(drawstate); - - glMatrixMode(GL_MODELVIEW); - //glLoadIdentity(); - - //glRotatef(drawstate*15.0f, 0.0, 1.0, 0.0); - //glTranslatef(x, y, z); glLoadMatrix(camera.getModelviewMatrix().data()); // DRAW THE SCENE Mf::Texture::resetBind(); testScene->draw(alpha, camera); - - //heroine->draw(alpha); - + heroine->getAabb().draw(); hud.draw(); - + // DRAW FADE glEnable(GL_BLEND); glMatrixMode(GL_PROJECTION); glPushMatrix(); @@ -270,123 +244,6 @@ void YoinkApp::draw(Mf::Scalar alpha) glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); - - /* - glLoadIdentity(); - - someChar->getTilemap().bind(); - glColor3f(1.0, 1.0, 1.0); - - Mf::Tilemap::Index heroFrame = someChar->getAnimation().getFrame(); - - Mf::Scalar coords[8]; - someChar->getTilemap().getTileCoords(heroFrame, coords); - - glBegin(GL_QUADS); - glTexCoord2f(coords[0], coords[1]); - glVertex3f(-1.0, 0.0, 0.0); - glTexCoord2f(coords[2], coords[3]); - glVertex3f(0.0, 0.0, 0.0); - glTexCoord2f(coords[4], coords[5]); - glVertex3f(0.0, 1.0, 0.0); - glTexCoord2f(coords[6], coords[7]); - glVertex3f(-1.0, 1.0, 0.0); - glEnd(); - - - someChar->getTilemap().getTileCoords(heroFrame, coords, - Mf::Tilemap::REVERSE); - - glBegin(GL_QUADS); - glTexCoord2f(coords[0], coords[1]); - glVertex3f(0.0, 0.0, 0.0); - glTexCoord2f(coords[2], coords[3]); - glVertex3f(1.0, 0.0, 0.0); - glTexCoord2f(coords[4], coords[5]); - glVertex3f(1.0, 1.0, 0.0); - glTexCoord2f(coords[6], coords[7]); - glVertex3f(0.0, 1.0, 0.0); - glEnd(); - - glColor4f(1.0,0.0,0.0,0.5); - - glBindTexture(GL_TEXTURE_2D, 0); - glColor4v(c1.data()); - - glRectd(-cosstate, -sinstate, sinstate, cosstate); - glRectf(0.0f, 0.0f, sinstate, cosstate); - - font->bind(); - - font->getTileCoords('c', coords); - - glBegin(GL_QUADS); - glTexCoord2f(coords[0], coords[1]); - glVertex3f(-1.0, 0.0, 0.0); - glTexCoord2f(coords[2], coords[3]); - glVertex3f(0.0, 0.0, 0.0); - glTexCoord2f(coords[4], coords[5]); - glVertex3f(0.0, 1.0, 0.0); - glTexCoord2f(coords[6], coords[7]); - glVertex3f(-1.0, 1.0, 0.0); - glEnd(); - - font->getTileCoords('h', coords); - - glBegin(GL_QUADS); - glTexCoord2f(coords[0], coords[1]); - glVertex3f(0.0, 0.0, 0.0); - glTexCoord2f(coords[2], coords[3]); - glVertex3f(1.0, 0.0, 0.0); - glTexCoord2f(coords[4], coords[5]); - glVertex3f(1.0, 1.0, 0.0); - glTexCoord2f(coords[6], coords[7]); - glVertex3f(0.0, 1.0, 0.0); - glEnd(); - - font->getTileCoords('a', coords); - - glBegin(GL_QUADS); - glTexCoord2f(coords[0], coords[1]); - glVertex3f(-1.0, -1.0, 0.0); - glTexCoord2f(coords[2], coords[3]); - glVertex3f(0.0, -1.0, 0.0); - glTexCoord2f(coords[4], coords[5]); - glVertex3f(0.0, 0.0, 0.0); - glTexCoord2f(coords[6], coords[7]); - glVertex3f(-1.0, 0.0, 0.0); - glEnd(); - - font->getTileCoords('z', coords); - - glBegin(GL_QUADS); - glTexCoord2f(coords[0], coords[1]); - glVertex3(0.0, -1.0, 0.0); - glTexCoord2f(coords[2], coords[3]); - glVertex3(1.0, -1.0, 0.0); - glTexCoord2f(coords[4], coords[5]); - glVertex3(1.0, 0.0, 0.0); - glTexCoord2f(coords[6], coords[7]); - glVertex3(0.0, 0.0, 0.0); - glEnd(); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDisable(GL_DEPTH_TEST); - - glBindTexture(GL_TEXTURE_2D, 0); - glColor4f(0.0f, 0.0f, 0.0f, 1.0f); - - glBegin(GL_LINES); - glVertex2f(0.0f, 0.0f); - glVertex2v(interp.getState(alpha).data()); - glEnd(); - - glColor4f(0.0f, 0.0f, 0.0f, fadeIn.getState(alpha)); - glRectf(-1.0f, -1.0f, 1.0f, 1.0f); - - glDisable(GL_BLEND); - glEnable(GL_DEPTH_TEST);*/ } void YoinkApp::handleEvent(const Mf::Event& event) @@ -417,12 +274,12 @@ void YoinkApp::handleEvent(const Mf::Event& event) } else if (event.key.keysym.sym == SDLK_t) { - Mf::Dispatcher::getInstance().dispatch("video.context_recreated"); + Mf::dispatcher::dispatch("video.context_recreated"); break; } else if (event.key.keysym.sym == SDLK_p) { - music.togglePlayPause(); + music.toggle(); break; } else if (event.key.keysym.sym == SDLK_l) @@ -457,26 +314,38 @@ 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 YOINK_LOGLEVEL >= 4 + Mf::setLogLevel(Mf::LOG_DEBUG); +#elif YOINK_LOGLEVEL >= 3 + Mf::setLogLevel(Mf::LOG_INFO); +#elif YOINK_LOGLEVEL >= 2 + Mf::setLogLevel(Mf::LOG_WARNING); +#elif YOINK_LOGLEVEL >= 1 + Mf::setLogLevel(Mf::LOG_ERROR); +#elif YOINK_LOGLEVEL + Mf::setLogLevel(Mf::LOG_NONE); +#endif + int status = 0; try { - YoinkApp* app = new YoinkApp(argc, argv); - status = app->run(); - delete app; + 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; }