aboutsummaryrefslogtreecommitdiff
path: root/queen/input.cpp
diff options
context:
space:
mode:
authorDavid Eriksson2003-10-23 06:44:35 +0000
committerDavid Eriksson2003-10-23 06:44:35 +0000
commitad98347eb0f17cf9ff2b72b86589866943ef28dd (patch)
tree53bbb70d19c3c2163483db83e1797570dec03765 /queen/input.cpp
parent3ccd6704bdc4a6fad19d2fb68a75c089dc4f60ca (diff)
downloadscummvm-rg350-ad98347eb0f17cf9ff2b72b86589866943ef28dd.tar.gz
scummvm-rg350-ad98347eb0f17cf9ff2b72b86589866943ef28dd.tar.bz2
scummvm-rg350-ad98347eb0f17cf9ff2b72b86589866943ef28dd.zip
Initial version of the Input class. Some things still missing.
svn-id: r10944
Diffstat (limited to 'queen/input.cpp')
-rw-r--r--queen/input.cpp116
1 files changed, 116 insertions, 0 deletions
diff --git a/queen/input.cpp b/queen/input.cpp
new file mode 100644
index 0000000000..79b3e22aa8
--- /dev/null
+++ b/queen/input.cpp
@@ -0,0 +1,116 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ *
+ */
+
+#include "stdafx.h"
+#include "queen/input.h"
+#include "common/system.h"
+#include "common/util.h"
+
+namespace Queen {
+
+
+Input::Input(OSystem *system) :
+ _system(system), _fastMode(false), _keyVerb(VERB_NONE),
+ _cutawayRunning(false), _cutQuit(false), _talkQuit(false) {
+}
+
+void Input::delay() {
+ delay(_fastMode ? DELAY_SHORT : DELAY_NORMAL);
+}
+
+void Input::delay(uint amount) {
+
+ OSystem::Event event;
+
+ uint32 start = _system->get_msecs();
+ uint32 cur = start;
+ _key_pressed = 0; //reset
+
+ do {
+ while (_system->poll_event(&event)) {
+ switch (event.event_code) {
+ case OSystem::EVENT_KEYDOWN:
+ if (event.kbd.flags == OSystem::KBD_CTRL) {
+ if (event.kbd.keycode == 'f') {
+ _fastMode ^= 1;
+ break;
+ }
+ if (event.kbd.keycode == 'g') {
+ _fastMode ^= 2;
+ break;
+ }
+ }
+
+ debug(1, "event.kbd.keycode = %i (%c)",
+ event.kbd.keycode,
+ isprint(event.kbd.keycode) ? event.kbd.keycode : '.');
+
+ // Make sure backspace works right (this fixes a small issue on OS X)
+ if (event.kbd.keycode == 8)
+ _key_pressed = 8;
+ else
+ _key_pressed = (byte)event.kbd.ascii;
+ break;
+
+ case OSystem::EVENT_MOUSEMOVE:
+ _sdl_mouse_x = event.mouse.x;
+ _sdl_mouse_y = event.mouse.y;
+
+ break;
+
+ case OSystem::EVENT_LBUTTONDOWN:
+#ifdef _WIN32_WCE
+ _sdl_mouse_x = event.mouse.x;
+ _sdl_mouse_y = event.mouse.y;
+#endif
+ break;
+
+ case OSystem::EVENT_RBUTTONDOWN:
+ break;
+
+ case OSystem::EVENT_QUIT:
+ _system->quit();
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if (amount == 0)
+ break;
+
+ {
+ uint this_delay = 20; // 1?
+ if (this_delay > amount)
+ this_delay = amount;
+ _system->delay_msecs(this_delay);
+ }
+ cur = _system->get_msecs();
+ } while (cur < start + amount);
+}
+
+void Input::checkKeys() {
+}
+
+
+} // End of namespace Queen
+