From 357d7bb484d65701952fdc63a2c30550baa46545 Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Sat, 2 Oct 2010 02:01:01 +0200 Subject: Ported from SDL to SFML. --- engine/engine.cpp | 17 ++++++----------- engine/engine.h | 6 +++--- engine/player.cpp | 16 ++++++---------- 3 files changed, 15 insertions(+), 24 deletions(-) (limited to 'engine') diff --git a/engine/engine.cpp b/engine/engine.cpp index eccf495..278007e 100644 --- a/engine/engine.cpp +++ b/engine/engine.cpp @@ -12,9 +12,9 @@ #include -void Engine::event_keypress(SDLKey key) { +void Engine::event_keypress(sf::Key::Code key) { switch(key) { - case SDLK_SPACE: + case sf::Key::Space: paused = !paused; break; default: @@ -84,13 +84,10 @@ void Engine::update() { glDisable(GL_TEXTURE_2D); glColor4f(1, 1, 0, 1); - unsigned int tick = SDL_GetTicks(); - if(tick - lastframes >= 1000) { - fps = (float)frames * ((float)(tick - lastframes) / 1000.0f); - frames = 1; - lastframes = tick; - } else { - frames++; + if(++fps_frames >= 60) { + fps = float(fps_frames) / fps_clock.GetElapsedTime(); + fps_clock.Reset(); + fps_frames = 0; } glScalef(0.0005, 0.0005, 0.0005); @@ -108,6 +105,4 @@ void Engine::update() { stage->draw(); glDisable(GL_SCISSOR_TEST); - - SDL_GL_SwapBuffers(); } diff --git a/engine/engine.h b/engine/engine.h index 894143e..754342d 100644 --- a/engine/engine.h +++ b/engine/engine.h @@ -14,12 +14,12 @@ class Engine : public Application { bool paused; - unsigned int frames; - unsigned int lastframes; float fps; + unsigned int fps_frames; + sf::Clock fps_clock; protected: - virtual void event_keypress(SDLKey key); + virtual void event_keypress(sf::Key::Code key); virtual void update(); diff --git a/engine/player.cpp b/engine/player.cpp index c9a4ee2..091f874 100644 --- a/engine/player.cpp +++ b/engine/player.cpp @@ -1,10 +1,5 @@ -#ifndef __APPLE__ -#include -#else -#include -#endif +#include #include -#include #include "player.h" #include @@ -33,11 +28,12 @@ void Player::draw() { } void Player::update() { - Uint8 *keystate = SDL_GetKeyState(NULL); - float factor = move_factor * (SDL_GetModState() & KMOD_SHIFT ? focus_factor : 1); + sf::Input input; + + float factor = move_factor * (input.IsKeyDown(sf::Key::LShift) ? focus_factor : 1); - float x_speed = factor * keystate[SDLK_RIGHT] - factor * keystate[SDLK_LEFT]; - float y_speed = factor * keystate[SDLK_UP] - factor * keystate[SDLK_DOWN]; + float x_speed = factor * input.IsKeyDown(sf::Key::Right) - factor * input.IsKeyDown(sf::Key::Left); + float y_speed = factor * input.IsKeyDown(sf::Key::Up) - factor * input.IsKeyDown(sf::Key::Down); if(x_speed && y_speed) { x_speed /= sqrtf(2); -- cgit v1.2.3