2004-04-12 21:40:49 +00:00
|
|
|
/* 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
|
|
|
|
2004-04-12 21:40:49 +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() {
|
2004-04-12 21:40:49 +00:00
|
|
|
SDL_EnableUNICODE(1);
|
|
|
|
SDL_EnableKeyRepeat(200, 30);
|
|
|
|
|
|
|
|
return R_SUCCESS;
|
|
|
|
}
|
|
|
|
|
2004-05-01 16:15:55 +00:00
|
|
|
int SYSINPUT_ProcessInput() {
|
2004-04-12 21:40:49 +00:00
|
|
|
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;
|
2004-04-12 21:40:49 +00:00
|
|
|
if (in_char) {
|
|
|
|
CON_Type(in_char);
|
|
|
|
}
|
|
|
|
} else {
|
2004-05-01 16:15:55 +00:00
|
|
|
R_printf(R_STDOUT, "Ignored UNICODE character.\n");
|
2004-04-12 21:40:49 +00:00
|
|
|
}
|
|
|
|
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;
|
2004-04-12 21:40:49 +00:00
|
|
|
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
|
2004-04-12 21:40:49 +00:00
|
|
|
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
|
2004-04-12 21:40:49 +00:00
|
|
|
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) {
|
2004-04-12 21:40:49 +00:00
|
|
|
SDL_GetMouseState(mouse_x, mouse_y);
|
|
|
|
|
|
|
|
return R_SUCCESS;
|
|
|
|
}
|
|
|
|
|
2004-05-01 16:15:55 +00:00
|
|
|
int SYSINPUT_HideMouse() {
|
2004-04-12 21:40:49 +00:00
|
|
|
SDL_ShowCursor(SDL_DISABLE);
|
|
|
|
|
|
|
|
return R_SUCCESS;
|
|
|
|
}
|
|
|
|
|
2004-05-01 16:15:55 +00:00
|
|
|
int SYSINPUT_ShowMouse() {
|
2004-04-12 21:40:49 +00:00
|
|
|
SDL_ShowCursor(SDL_ENABLE);
|
|
|
|
|
|
|
|
return R_SUCCESS;
|
|
|
|
}
|
|
|
|
|
|
|
|
} // End of namespace Saga
|
|
|
|
|