diff options
author | Max Horn | 2007-03-17 00:07:34 +0000 |
---|---|---|
committer | Max Horn | 2007-03-17 00:07:34 +0000 |
commit | 8fc8c4847df493de85736447c1c8d9528a9b1299 (patch) | |
tree | 597b3d3da0b249ff9dc9ecd510b79a69592c87f0 /backends/events/default | |
parent | 4951f82c65d31e1f62041c9c07cf74181c035ce7 (diff) | |
download | scummvm-rg350-8fc8c4847df493de85736447c1c8d9528a9b1299.tar.gz scummvm-rg350-8fc8c4847df493de85736447c1c8d9528a9b1299.tar.bz2 scummvm-rg350-8fc8c4847df493de85736447c1c8d9528a9b1299.zip |
Implemented a simple EventManager class
svn-id: r26154
Diffstat (limited to 'backends/events/default')
-rw-r--r-- | backends/events/default/default-events.cpp | 87 | ||||
-rw-r--r-- | backends/events/default/default-events.h | 61 |
2 files changed, 148 insertions, 0 deletions
diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp new file mode 100644 index 0000000000..9c92eef1d2 --- /dev/null +++ b/backends/events/default/default-events.cpp @@ -0,0 +1,87 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2002-2007 The ScummVM project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + +#if !defined(DISABLE_DEFAULT_EVENTMANAGER) + +#include "common/stdafx.h" +#include "common/system.h" +#include "backends/events/default/default-events.h" + +DefaultEventManager::DefaultEventManager(OSystem *boss) : + _boss(boss), + _buttonState(0), + _modifierState(0), + _shouldQuit(false) { + + assert(_boss); +} + +DefaultEventManager::~DefaultEventManager() { + +} + +bool DefaultEventManager::pollEvent(OSystem::Event &event) { + bool result; + + result = _boss->pollEvent(event); + + if (result) { + switch (event.type) { + case OSystem::EVENT_KEYDOWN: + case OSystem::EVENT_KEYUP: + _modifierState = event.kbd.flags; + break; + case OSystem::EVENT_MOUSEMOVE: + _mousePos = event.mouse; + break; + + case OSystem::EVENT_LBUTTONDOWN: + _mousePos = event.mouse; + _buttonState |= LBUTTON; + break; + case OSystem::EVENT_LBUTTONUP: + _mousePos = event.mouse; + _buttonState &= ~LBUTTON; + break; + + case OSystem::EVENT_RBUTTONDOWN: + _mousePos = event.mouse; + _buttonState |= RBUTTON; + break; + case OSystem::EVENT_RBUTTONUP: + _mousePos = event.mouse; + _buttonState &= ~RBUTTON; + break; + + case OSystem::EVENT_QUIT: + _shouldQuit = true; + break; + + default: + break; + } + } + + return result; +} + +#endif // !defined(DISABLE_DEFAULT_EVENTMANAGER) diff --git a/backends/events/default/default-events.h b/backends/events/default/default-events.h new file mode 100644 index 0000000000..3291257f01 --- /dev/null +++ b/backends/events/default/default-events.h @@ -0,0 +1,61 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2002-2007 The ScummVM project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + +#if !defined(BACKEND_SAVES_DEFAULT_H) && !defined(DISABLE_DEFAULT_EVENTMANAGER) +#define BACKEND_SAVES_DEFAULT_H + +#include "common/stdafx.h" +#include "common/events.h" + +/* +At some point we will remove pollEvent from OSystem and change +DefaultEventManager to use a "boss" derived from this class: +class EventProvider { +public + virtual bool pollEvent(Common::Event &event) = 0; +}; + +Backends which wish to use the DefaultEventManager then simply can +use a subclass of EventProvider. +*/ + +class DefaultEventManager : public Common::EventManager { + OSystem *_boss; + + Common::Point _mousePos; + int _buttonState; + int _modifierState; + bool _shouldQuit; + +public: + DefaultEventManager(OSystem *boss); + ~DefaultEventManager(); + + virtual bool pollEvent(OSystem::Event &event); + + virtual Common::Point getMousePos() const { return _mousePos; } + virtual int getButtonState() const { return _buttonState; } + virtual int getModifierState() const { return _modifierState; } + virtual int shouldQuit() const { return _shouldQuit; } +}; + +#endif |