diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-10-07 17:00:02 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-10-07 17:07:42 +0300 |
commit | 60ad04e80489e73a0765530dbfffc18322043b1c (patch) | |
tree | 1018764a38a68418519d7606c43e20fea85ed161 /src/client.cpp | |
parent | 422d65e9407eb9a7ed18b894ad665a7925397ebf (diff) | |
download | manaplus-60ad04e80489e73a0765530dbfffc18322043b1c.tar.gz manaplus-60ad04e80489e73a0765530dbfffc18322043b1c.tar.bz2 manaplus-60ad04e80489e73a0765530dbfffc18322043b1c.tar.xz manaplus-60ad04e80489e73a0765530dbfffc18322043b1c.zip |
Create events manager class.
Move events logging into EventsManager.
Diffstat (limited to 'src/client.cpp')
-rw-r--r-- | src/client.cpp | 220 |
1 files changed, 7 insertions, 213 deletions
diff --git a/src/client.cpp b/src/client.cpp index 8762a0456..5d1fbdb93 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -29,6 +29,7 @@ #include "configuration.h" #include "dropshortcut.h" #include "emoteshortcut.h" +#include "eventsmanager.h" #include "game.h" #include "guild.h" #include "guildmanager.h" @@ -321,8 +322,7 @@ Client::Client(const Options &options) : mIsMinimized(false), mInputFocused(true), mMouseFocused(true), - mNewMessageFlag(false), - mLogInput(false) + mNewMessageFlag(false) { // Initialize frame limiting mFpsManager.framecount = 0; @@ -654,6 +654,8 @@ void Client::gameInit() logger->log("Warning: %s", err); } + eventsManager.init(); + // Initialize keyboard keyboard.init(); inputManager.init(); @@ -724,7 +726,6 @@ void Client::gameInit() config.addListener("repeateInterval", this); config.addListener("logInput", this); setGuiAlpha(config.getFloatValue("guialpha")); - mLogInput = config.getBoolValue("logInput"); optionChanged("fpslimit"); start_time = static_cast<int>(time(nullptr)); @@ -987,8 +988,9 @@ int Client::gameExec() while (SDL_PollEvent(&event)) #endif { - if (mLogInput) - logEvent(event); + if (eventsManager.handleEvent(event)) + continue; + switch (event.type) { case SDL_QUIT: @@ -1890,10 +1892,6 @@ void Client::optionChanged(const std::string &name) { applyKeyRepeat(); } - else if (name == "logInput") - { - mLogInput = config.getBoolValue("logInput"); - } } void Client::action(const gcn::ActionEvent &event) @@ -2926,210 +2924,6 @@ void Client::logVars() #endif } -void Client::logEvent(const SDL_Event &event) -{ - switch (event.type) - { - case SDL_MOUSEMOTION: - logger->log("event: SDL_MOUSEMOTION: %d,%d,%d", - event.motion.state, event.motion.x, event.motion.y); - break; -#ifdef USE_SDL2 -#define winEventLog(name, name2) \ - case name: \ - str = name2; \ - break - - case SDL_FINGERDOWN: - { - const SDL_TouchFingerEvent &touch = event.tfinger; - const int w = mainGraphics->mWidth; - const int h = mainGraphics->mHeight; - logger->log("event: SDL_FINGERDOWN: %lld,%lld (%f,%f) (%f,%f)", - touch.touchId, touch.fingerId, touch.x * w, touch.y * w, - touch.dx * w, touch.dy * h); - break; - } - case SDL_FINGERUP: - { - const SDL_TouchFingerEvent &touch = event.tfinger; - const int w = mainGraphics->mWidth; - const int h = mainGraphics->mHeight; - logger->log("event: SDL_FINGERUP: %lld,%lld (%f,%f) (%f,%f)", - touch.touchId, touch.fingerId, touch.x * w, touch.y * h, - touch.dx * w, touch.dy * h); - break; - } - case SDL_FINGERMOTION: - { - const SDL_TouchFingerEvent &touch = event.tfinger; - const int w = mainGraphics->mWidth; - const int h = mainGraphics->mHeight; - logger->log("event: SDL_FINGERMOTION: %lld,%lld (%f,%f) (%f,%f)", - touch.touchId, touch.fingerId, - touch.x * w, touch.y * h, - touch.dx * w, touch.dy * h); - break; - } - case SDL_MULTIGESTURE: - { - const SDL_MultiGestureEvent &gesture = event.mgesture; - const int w = mainGraphics->mWidth; - const int h = mainGraphics->mHeight; - logger->log("event: SDL_MULTIGESTURE: %lld %f,%f (%f,%f) %d,%d", - gesture.touchId, gesture.dTheta, gesture.dDist, - gesture.x * w, gesture.y * h, (int)gesture.numFingers, - (int)gesture.padding); - break; - } - case SDL_KEYDOWN: - logger->log("event: SDL_KEYDOWN: %d,%d", event.key.state, - event.key.keysym.scancode); - break; - case SDL_KEYUP: - logger->log("event: SDL_KEYUP: %d,%d", event.key.state, - event.key.keysym.scancode); - break; - case SDL_WINDOWEVENT: - { - const int data1 = event.window.data1; - const int data2 = event.window.data2; - std::string str; - switch (event.window.event) - { - winEventLog(SDL_WINDOWEVENT_NONE, "SDL_WINDOWEVENT_NONE"); - winEventLog(SDL_WINDOWEVENT_SHOWN, "SDL_WINDOWEVENT_SHOWN"); - winEventLog(SDL_WINDOWEVENT_HIDDEN, "SDL_WINDOWEVENT_HIDDEN"); - winEventLog(SDL_WINDOWEVENT_EXPOSED, - "SDL_WINDOWEVENT_EXPOSED"); - winEventLog(SDL_WINDOWEVENT_MOVED, "SDL_WINDOWEVENT_MOVED"); - winEventLog(SDL_WINDOWEVENT_RESIZED, - "SDL_WINDOWEVENT_RESIZED"); - winEventLog(SDL_WINDOWEVENT_SIZE_CHANGED, - "SDL_WINDOWEVENT_SIZE_CHANGED"); - winEventLog(SDL_WINDOWEVENT_MINIMIZED, - "SDL_WINDOWEVENT_MINIMIZED"); - winEventLog(SDL_WINDOWEVENT_MAXIMIZED, - "SDL_WINDOWEVENT_MAXIMIZED"); - winEventLog(SDL_WINDOWEVENT_RESTORED, - "SDL_WINDOWEVENT_RESTORED"); - winEventLog(SDL_WINDOWEVENT_ENTER, "SDL_WINDOWEVENT_ENTER"); - winEventLog(SDL_WINDOWEVENT_LEAVE, "SDL_WINDOWEVENT_LEAVE"); - winEventLog(SDL_WINDOWEVENT_FOCUS_GAINED, - "SDL_WINDOWEVENT_FOCUS_GAINED"); - winEventLog(SDL_WINDOWEVENT_FOCUS_LOST, - "SDL_WINDOWEVENT_FOCUS_LOST"); - winEventLog(SDL_WINDOWEVENT_CLOSE, "SDL_WINDOWEVENT_CLOSE"); - default: - str = "unknown"; - break; - } - logger->log("event: SDL_WINDOWEVENT: %s: %d,%d", - str.c_str(), data1, data2); - break; - } - case SDL_TEXTINPUT: - { - const char *const text = event.text.text; - logger->log("event: SDL_TEXTINPUT: %s", text); - const int sz = strlen(event.text.text); - for (int f = 0; f < sz; f ++) - logger->log("dec: %d", text[f]); - break; - } - case SDL_APP_TERMINATING: - logger->log("SDL_APP_TERMINATING"); - break; - case SDL_APP_LOWMEMORY: - logger->log("SDL_APP_LOWMEMORY"); - break; - case SDL_APP_WILLENTERBACKGROUND: - logger->log("SDL_APP_WILLENTERBACKGROUND"); - break; - case SDL_APP_WILLENTERFOREGROUND: - logger->log("SDL_APP_WILLENTERFOREGROUND"); - break; - case SDL_APP_DIDENTERFOREGROUND: - logger->log("SDL_APP_DIDENTERFOREGROUND"); - break; - case SDL_APP_DIDENTERBACKGROUND: - logger->log("SDL_APP_DIDENTERBACKGROUND"); - break; -#else - case SDL_KEYDOWN: - logger->log("event: SDL_KEYDOWN: %d,%d,%d", event.key.state, - event.key.keysym.scancode, event.key.keysym.unicode); - break; - case SDL_KEYUP: - logger->log("event: SDL_KEYUP: %d,%d,%d", event.key.state, - event.key.keysym.scancode, event.key.keysym.unicode); - break; - case SDL_VIDEORESIZE: - logger->log("event: SDL_VIDEORESIZE"); - break; - case SDL_VIDEOEXPOSE: - logger->log("event: SDL_VIDEOEXPOSE"); - break; - case SDL_ACTIVEEVENT: - logger->log("event: SDL_ACTIVEEVENT: %d %d", - event.active.state, event.active.gain); - break; -#endif - case SDL_MOUSEBUTTONDOWN: - logger->log("event: SDL_MOUSEBUTTONDOWN: %d,%d,%d,%d", - event.button.button, event.button.state, - event.button.x, event.button.y); - break; - case SDL_MOUSEBUTTONUP: - logger->log("event: SDL_MOUSEBUTTONUP: %d,%d,%d,%d", - event.button.button, event.button.state, - event.button.x, event.button.y); - break; - case SDL_JOYAXISMOTION: - logger->log("event: SDL_JOYAXISMOTION: %d,%d,%d", - event.jaxis.which, event.jaxis.axis, event.jaxis.value); - break; - case SDL_JOYBALLMOTION: - logger->log("event: SDL_JOYBALLMOTION: %d,%d,%d,%d", - event.jball.which, event.jball.ball, - event.jball.xrel, event.jball.yrel); - break; - case SDL_JOYHATMOTION: - logger->log("event: SDL_JOYHATMOTION: %d,%d,%d", event.jhat.which, - event.jhat.hat, event.jhat.value); - break; - case SDL_JOYBUTTONDOWN: - logger->log("event: SDL_JOYBUTTONDOWN: %d,%d,%d", - event.jbutton.which, event.jbutton.button, - event.jbutton.state); - break; - case SDL_JOYBUTTONUP: - logger->log("event: SDL_JOYBUTTONUP: %d,%d,%d", - event.jbutton.which, event.jbutton.button, - event.jbutton.state); - break; - case SDL_QUIT: - logger->log("event: SDL_QUIT"); - break; - case SDL_SYSWMEVENT: - logger->log("event: SDL_SYSWMEVENT"); - break; - case SDL_USEREVENT: - logger->log("event: SDL_USEREVENT"); - break; -#ifdef ANDROID -#ifndef USE_SDL2 - case SDL_ACCELEROMETER: - logger->log("event: SDL_ACCELEROMETER"); - break; -#endif -#endif - default: - logger->log("event: other: %d", event.type); - break; - }; -} - void Client::windowRemoved(const Window *const window) { if (mCurrentDialog == window) |