#include "screen_fade.hpp"
#include "timer.hpp"
#include "player_status.hpp"
+#include "video/renderer.hpp"
#include "random_generator.hpp"
// the engine will be run with a logical framerate of 64fps.
char str[60];
snprintf(str, sizeof(str), "%3.1f", fps_fps);
const char* fpstext = "FPS";
- context.draw_text(white_text, fpstext, Vector(SCREEN_WIDTH - white_text->get_text_width(fpstext) - gold_text->get_text_width(" 99999") - BORDER_X, BORDER_Y + 20), ALIGN_LEFT, LAYER_HUD);
- context.draw_text(gold_text, str, Vector(SCREEN_WIDTH - BORDER_X, BORDER_Y + 20), ALIGN_RIGHT, LAYER_HUD);
+ context.draw_text(small_font, fpstext, Vector(SCREEN_WIDTH - small_font->get_text_width(fpstext) - small_font->get_text_width(" 99999") - BORDER_X, BORDER_Y + 20), ALIGN_LEFT, LAYER_HUD);
+ context.draw_text(small_font, str, Vector(SCREEN_WIDTH - BORDER_X, BORDER_Y + 20), ALIGN_RIGHT, LAYER_HUD);
}
void
MainLoop::process_events()
{
main_controller->update();
+ Uint8* keystate = SDL_GetKeyState(NULL);
SDL_Event event;
- while(SDL_PollEvent(&event)) {
- main_controller->process_event(event);
- if(Menu::current() != NULL)
- Menu::current()->event(event);
- if(event.type == SDL_QUIT)
- quit();
- else if (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_F11) {
- config->use_fullscreen = !config->use_fullscreen;
- init_video();
- }
- else if (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_PRINT) {
- take_screenshot();
+ while(SDL_PollEvent(&event))
+ {
+ main_controller->process_event(event);
+
+ if(Menu::current() != NULL)
+ Menu::current()->event(event);
+
+ switch(event.type)
+ {
+ case SDL_QUIT:
+ quit();
+ break;
+
+ case SDL_VIDEORESIZE:
+ Renderer::instance()->resize(event.resize.w, event.resize.h);
+ Menu::recalc_pos();
+ break;
+
+ case SDL_KEYDOWN:
+ if (event.key.keysym.sym == SDLK_F10)
+ {
+ config->show_fps = !config->show_fps;
+ }
+ if (event.key.keysym.sym == SDLK_F11)
+ {
+ config->use_fullscreen = !config->use_fullscreen;
+ init_video();
+ Menu::recalc_pos();
+ }
+ else if (event.key.keysym.sym == SDLK_PRINT ||
+ event.key.keysym.sym == SDLK_F12)
+ {
+ take_screenshot();
+ }
+ else if (event.key.keysym.sym == SDLK_F1 &&
+ (keystate[SDLK_LCTRL] || keystate[SDLK_RCTRL]) &&
+ keystate[SDLK_c])
+ {
+ Console::instance->toggle();
+ config->console_enabled = true;
+ config->save();
+ }
+ break;
+ }
}
- }
}
void
nextpush = false;
nextpop = false;
speed = 1.0;
- if(next_screen.get() != NULL)
- next_screen->setup();
- current_screen.reset(next_screen.release());
+ Screen* next_screen_ptr = next_screen.release();
+ next_screen.reset(0);
+ if(next_screen_ptr)
+ next_screen_ptr->setup();
+ current_screen.reset(next_screen_ptr);
screen_fade.reset(NULL);
waiting_threads.wakeup();
elapsed_ticks += ticks - last_ticks;
last_ticks = ticks;
- Uint32 ticks_per_frame = TICKS_PER_FRAME * game_speed;
+ Uint32 ticks_per_frame = (Uint32) (TICKS_PER_FRAME * game_speed);
if (elapsed_ticks > ticks_per_frame*4) {
// when the game loads up or levels are switched the
- // elapsed_ticks grows extremly large, so we just ignore those
+ // elapsed_ticks grows extremely large, so we just ignore those
// large time jumps
elapsed_ticks = 0;
}