X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FGameLayer.cc;h=33710696107bd5f0f8b4c91ef0867384e34c5b6e;hp=dfdadaa5f2c19fbe809193f9eebcc971569adfd6;hb=a4debfe4a5f5d339410788971b698ba00cb7f09c;hpb=892da43bf5796e7c5f593a6d0f53bd797a36bd3e diff --git a/src/GameLayer.cc b/src/GameLayer.cc index dfdadaa..3371069 100644 --- a/src/GameLayer.cc +++ b/src/GameLayer.cc @@ -30,6 +30,7 @@ #include #include #include +#include #include "GameLayer.hh" @@ -39,58 +40,46 @@ GameLayer::GameLayer() : - music("NightFusionIntro"), + music("BeatTheCube"), punchSound("Thump") { music.setLooping(true); music.enqueue("NightFusionLoop"); music.stream(); - heroine = Character::alloc("RobotTrooper"); - heroine->getAnimation().startSequence("Run"); + heroine = Heroine::alloc(); + heroine->getAnimation().startSequence("FlyDiagonallyUp"); Mf::Scalar a[6] = {0.0, 1.5, -0.5, 3.0, -2.0, 1.0}; interp.init(a, 2.0, Mf::Interpolator::OSCILLATE); - Mf::Scalar b[2] = {1.0, 0.0}; - fadeIn.init(b, 1.0); + scene = Scene::alloc("Classic"); - octree = Mf::loadScene("Classic"); - heroine->treeNode = octree->insert(heroine); + setProjection(); - camera.setProjection(cml::rad(60.0), 1.33333, 32.0, 2500.0); - camera.uploadProjectionToGL(); + hud = Hud::alloc(); } void GameLayer::pushed(Mf::Engine& engine) { - hud = Hud::alloc(); - engine.pushLayer(hud); + engine.push(hud); } void GameLayer::update(Mf::Scalar t, Mf::Scalar dt) { - //dt *= 0.7; - - fadeIn.update(dt); camera.update(t, dt); heroine->update(t, dt); - // reinsert heroine - heroine->treeNode = octree->reinsert(heroine, heroine->treeNode); - octree->print(heroine->treeNode); - //camera.lookAt(heroine->getSphere().point); camera.setPosition(Mf::Vector3(-heroine->current.position[0], -heroine->current.position[1], -256)); - Mf::Vector3 heroinePosition; - Mf::promoteVector(heroinePosition, heroine->current.position); - Mf::Sound::setListenerPosition(heroinePosition); - - interp.update(dt); + //Mf::Vector3 heroinePosition = Mf::promote(heroine->current.position); + //Mf::Sound::setListenerPosition(heroinePosition); + + interp.update(t, dt); hud->setBar1Progress(interp.getState(dt)); hud->setBar2Progress(1.0 - interp.getState(dt)); } @@ -98,8 +87,7 @@ void GameLayer::update(Mf::Scalar t, Mf::Scalar dt) void GameLayer::draw(Mf::Scalar alpha) const { - glMatrixMode(GL_MODELVIEW); - glLoadMatrix(camera.getModelviewMatrix().data()); + camera.uploadToGL(); // DRAW THE SCENE Mf::Texture::resetBind(); @@ -107,36 +95,9 @@ void GameLayer::draw(Mf::Scalar alpha) const glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); - octree->drawIfVisible(alpha, camera.getFrustum()); - - //heroine->draw(alpha); - heroine->getAabb().draw(); - - // DRAW FADE - glEnable(GL_BLEND); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - glColor4f(0.0f, 0.0f, 0.0f, fadeIn.getState(alpha)); - Mf::Texture::resetBind(); - - //glRectf(-1.0f, -1.0f, 1.0f, 1.0f); - glBegin(GL_QUADS); - glVertex3f(-1.0, -1.0, -0.1); - glVertex3f(1.0, -1.0, -0.1); - glVertex3f(1.0, 1.0, -0.1); - glVertex3f(-1.0, 1.0, -0.1); - glEnd(); - - glDisable(GL_BLEND); + scene->drawIfVisible(alpha, camera.getFrustum()); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); + heroine->draw(alpha); } bool GameLayer::handleEvent(const Mf::Event& event) @@ -146,7 +107,7 @@ bool GameLayer::handleEvent(const Mf::Event& event) case SDL_KEYDOWN: if (event.key.keysym.sym == SDLK_SPACE) { - heroine->getAnimation().startSequence("Punch"); + heroine->getAnimation().startSequence("Flattened"); Mf::logInfo("thump!"); punchSound.play(); return true; @@ -158,7 +119,7 @@ bool GameLayer::handleEvent(const Mf::Event& event) } else if (event.key.keysym.sym == SDLK_y) { - Mf::Engine::getInstance().popLayer(); + Mf::Engine::getInstance().pop(); return true; } @@ -172,10 +133,7 @@ bool GameLayer::handleEvent(const Mf::Event& event) return true; case SDL_VIDEORESIZE: - glViewport(0, 0, event.resize.w, event.resize.h); - camera.setProjection(cml::rad(60.0), - double(event.resize.w) / double(event.resize.h), 32.0, 2500.0); - camera.uploadProjectionToGL(); + setProjection(Mf::Scalar(event.resize.w), Mf::Scalar(event.resize.h)); break; } @@ -183,5 +141,17 @@ bool GameLayer::handleEvent(const Mf::Event& event) } +void GameLayer::setProjection() +{ + Mf::Video& video = Mf::Engine::getInstance().getVideo(); + setProjection(video.getWidth(), video.getHeight()); +} + +void GameLayer::setProjection(Mf::Scalar width, Mf::Scalar height) +{ + camera.setProjection(cml::rad(60.0), width / height, 32.0, 2500.0); +} + + /** vim: set ts=4 sw=4 tw=80: *************************************************/