aboutsummaryrefslogtreecommitdiff
path: root/saga/sysinput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'saga/sysinput.cpp')
-rw-r--r--saga/sysinput.cpp238
1 files changed, 238 insertions, 0 deletions
diff --git a/saga/sysinput.cpp b/saga/sysinput.cpp
new file mode 100644
index 0000000000..4edab7ce22
--- /dev/null
+++ b/saga/sysinput.cpp
@@ -0,0 +1,238 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2004 The ScummVM project
+ *
+ * The ReInherit Engine is (C)2000-2003 by Daniel Balsom.
+ *
+ * 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 "reinherit.h"
+
+#include <SDL.h>
+
+/*
+ * Uses the following modules:
+\*--------------------------------------------------------------------------*/
+#include "actor_mod.h"
+#include "console_mod.h"
+#include "interface_mod.h"
+#include "render_mod.h"
+#include "scene_mod.h"
+#include "script_mod.h"
+
+namespace Saga {
+
+/*
+ * Begin module component
+\*--------------------------------------------------------------------------*/
+
+int SYSINPUT_Init(void)
+{
+
+ SDL_EnableUNICODE(1);
+ SDL_EnableKeyRepeat(200, 30);
+
+ return R_SUCCESS;
+}
+
+int SYSINPUT_ProcessInput(void)
+{
+ SDL_Event sdl_event;
+
+ int mouse_x, mouse_y;
+ R_POINT imouse_pt;
+
+ SYSINPUT_GetMousePos(&mouse_x, &mouse_y);
+
+ imouse_pt.x = mouse_x;
+ imouse_pt.y = mouse_y;
+
+ RENDER_ConvertMousePt(&imouse_pt);
+
+ while (SDL_PollEvent(&sdl_event)) {
+
+ int in_char;
+
+ switch (sdl_event.type) {
+
+ case SDL_KEYDOWN:
+
+ if (CON_IsActive()) {
+
+ in_char = sdl_event.key.keysym.sym;
+
+ switch (sdl_event.key.keysym.sym) {
+
+ case SDLK_BACKQUOTE:
+ CON_Deactivate();
+ break;
+
+ case SDLK_PAGEUP:
+ CON_PageUp();
+ break;
+
+ case SDLK_PAGEDOWN:
+ CON_PageDown();
+ break;
+
+ case SDLK_UP:
+ case SDLK_KP8:
+ CON_CmdUp();
+ break;
+
+ case SDLK_DOWN:
+ case SDLK_KP2:
+ CON_CmdDown();
+ break;
+
+ default:
+
+ if ((sdl_event.key.keysym.
+ unicode & 0xFF80) == 0) {
+
+ in_char =
+ sdl_event.key.keysym.
+ unicode & 0x7F;
+ if (in_char) {
+ CON_Type(in_char);
+ }
+ } else {
+ R_printf(R_STDOUT,
+ "Ignored UNICODE character.\n");
+ }
+
+ break;
+ }
+
+ break;
+ }
+
+ switch (sdl_event.key.keysym.sym) {
+
+ case SDLK_BACKQUOTE:
+ CON_Activate();
+ break;
+
+ case SDLK_q:
+ R_printf(R_STDOUT, "Quit key pressed.\n");
+ /*goto done; */
+ break;
+
+ case SDLK_r:
+ INTERFACE_Draw();
+ break;
+
+ case SDLK_F1:
+ RENDER_ToggleFlag(RF_SHOW_FPS);
+ break;
+
+ case SDLK_F2:
+ RENDER_ToggleFlag(RF_PALETTE_TEST);
+ break;
+
+ case SDLK_F3:
+ RENDER_ToggleFlag(RF_TEXT_TEST);
+ break;
+
+ case SDLK_F4:
+ RENDER_ToggleFlag(RF_OBJECTMAP_TEST);
+ break;
+
+ case SDLK_1:
+ RENDER_SetMode(RM_NORMAL);
+ break;
+
+ case SDLK_4:
+ RENDER_SetMode(RM_2XSAI);
+ break;
+
+ case SDLK_5:
+ RENDER_SetMode(RM_SUPER2XSAI);
+ break;
+
+ case SDLK_6:
+ RENDER_SetMode(RM_SUPEREAGLE);
+ break;
+
+ case SDLK_TAB:
+ STHREAD_DebugStep();
+ break;
+
+ /* Actual game keys */
+
+ case SDLK_SPACE:
+
+ ACTOR_SkipDialogue();
+ break;
+
+ case SDLK_PAUSE:
+ case SDLK_p:
+ RENDER_ToggleFlag(RF_RENDERPAUSE);
+ break;
+
+ case SDLK_ESCAPE:
+ /* Skip to next scene skip target */
+ SCENE_Skip();
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case SDL_KEYUP:
+ break;
+
+ case SDL_MOUSEBUTTONDOWN:
+ INTERFACE_Update(&imouse_pt, UPDATE_MOUSECLICK);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return R_SUCCESS;
+}
+
+int SYSINPUT_GetMousePos(int *mouse_x, int *mouse_y)
+{
+
+ SDL_GetMouseState(mouse_x, mouse_y);
+
+ return R_SUCCESS;
+}
+
+int SYSINPUT_HideMouse(void)
+{
+
+ SDL_ShowCursor(SDL_DISABLE);
+
+ return R_SUCCESS;
+}
+
+int SYSINPUT_ShowMouse(void)
+{
+
+ SDL_ShowCursor(SDL_ENABLE);
+
+ return R_SUCCESS;
+}
+
+} // End of namespace Saga
+