From 29cae530ae1796f37fe923fe372c695783b559de Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 7 Oct 2013 18:35:19 +0300 Subject: Move some events code from game into eventsmanager. --- src/eventsmanager.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) (limited to 'src/eventsmanager.cpp') diff --git a/src/eventsmanager.cpp b/src/eventsmanager.cpp index c2b4b4c72..203a7679f 100644 --- a/src/eventsmanager.cpp +++ b/src/eventsmanager.cpp @@ -153,6 +153,68 @@ bool EventsManager::handleEvents() return false; } +void EventsManager::handleGameEvents() +{ + Game *const game = Game::instance(); + + // Events + SDL_Event event; +#ifdef USE_SDL2 + while (SDL_WaitEventTimeout(&event, 0)) +#else + while (SDL_PollEvent(&event)) +#endif + { + BLOCK_START("Game::handleInput 2") + if (mLogInput) + logEvent(event); + + if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) + game->updateHistory(event); + game->checkKeys(); + + if (inputManager.handleEvent(event)) + { + BLOCK_END("Game::handleInput 2") + BLOCK_END("Game::handleInput 1") + return; + } + + switch (event.type) + { +#ifdef USE_SDL2 + case SDL_WINDOWEVENT: + { + game->handleSDL2WindowEvent(event); + break; + } +#else + case SDL_VIDEORESIZE: + client->resizeVideo(event.resize.w, event.resize.h); + break; + // Active event + case SDL_ACTIVEEVENT: + game->handleActive(event); + break; +#endif + // Quit event + case SDL_QUIT: + client->setState(STATE_EXIT); + break; +#ifdef ANDROID +#ifndef USE_SDL2 + case SDL_KEYBOARDSHOW: + client->updateScreenKeyboard(event.user.code); + break; +#endif +#endif + default: + break; + } + BLOCK_END("Game::handleInput 2") + } // End while +} + void EventsManager::optionChanged(const std::string &name) { if (name == "logInput") -- cgit v1.2.3-60-g2f50