summaryrefslogtreecommitdiff
path: root/src/client.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-10-07 17:00:02 +0300
committerAndrei Karas <akaras@inbox.ru>2013-10-07 17:07:42 +0300
commit60ad04e80489e73a0765530dbfffc18322043b1c (patch)
tree1018764a38a68418519d7606c43e20fea85ed161 /src/client.cpp
parent422d65e9407eb9a7ed18b894ad665a7925397ebf (diff)
downloadmv-60ad04e80489e73a0765530dbfffc18322043b1c.tar.gz
mv-60ad04e80489e73a0765530dbfffc18322043b1c.tar.bz2
mv-60ad04e80489e73a0765530dbfffc18322043b1c.tar.xz
mv-60ad04e80489e73a0765530dbfffc18322043b1c.zip
Create events manager class.
Move events logging into EventsManager.
Diffstat (limited to 'src/client.cpp')
-rw-r--r--src/client.cpp220
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)