scummvm/saga/sysinput.cpp

169 lines
3.4 KiB
C++
Raw Normal View History

/* 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$
*
*/
2004-05-01 16:15:55 +00:00
#include "reinherit.h"
#include <SDL.h>
#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 {
2004-05-01 16:15:55 +00:00
int SYSINPUT_Init() {
SDL_EnableUNICODE(1);
SDL_EnableKeyRepeat(200, 30);
return R_SUCCESS;
}
2004-05-01 16:15:55 +00:00
int SYSINPUT_ProcessInput() {
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;
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) {
2004-05-01 16:15:55 +00:00
in_char = sdl_event.key.keysym. unicode & 0x7F;
if (in_char) {
CON_Type(in_char);
}
} else {
2004-05-01 16:15:55 +00:00
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");
2004-05-01 16:15:55 +00:00
//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_TAB:
STHREAD_DebugStep();
break;
2004-05-01 16:15:55 +00:00
// Actual game keys
case SDLK_SPACE:
ACTOR_SkipDialogue();
break;
case SDLK_PAUSE:
case SDLK_p:
RENDER_ToggleFlag(RF_RENDERPAUSE);
break;
case SDLK_ESCAPE:
2004-05-01 16:15:55 +00:00
// 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;
}
2004-05-01 16:15:55 +00:00
int SYSINPUT_GetMousePos(int *mouse_x, int *mouse_y) {
SDL_GetMouseState(mouse_x, mouse_y);
return R_SUCCESS;
}
2004-05-01 16:15:55 +00:00
int SYSINPUT_HideMouse() {
SDL_ShowCursor(SDL_DISABLE);
return R_SUCCESS;
}
2004-05-01 16:15:55 +00:00
int SYSINPUT_ShowMouse() {
SDL_ShowCursor(SDL_ENABLE);
return R_SUCCESS;
}
} // End of namespace Saga