From 86bef1508c3fb3c21a10e3f35305f6eaf641a33e Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 3 Aug 2010 09:47:45 +0000 Subject: SWORD25: Converted the input engine to use the ScummVM event manager svn-id: r53203 --- engines/sword25/input/scummvminput.h | 103 +++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 engines/sword25/input/scummvminput.h (limited to 'engines/sword25/input/scummvminput.h') diff --git a/engines/sword25/input/scummvminput.h b/engines/sword25/input/scummvminput.h new file mode 100644 index 0000000000..a26060f4ab --- /dev/null +++ b/engines/sword25/input/scummvminput.h @@ -0,0 +1,103 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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$ + * + */ + +/* + * This code is based on Broken Sword 2.5 engine + * + * Copyright (c) Malte Thiesen, Daniel Queteschiner and Michael Elsdoerfer + * + * Licensed under GNU GPL v2 + * + */ + +#ifndef SWORD25_STDWININPUT_H +#define SWORD25_STDWININPUT_H + +/// Includes +#include "common/scummsys.h" +#include "common/list.h" +#include "sword25/kernel/common.h" +#include "sword25/input/inputengine.h" + +namespace Sword25 { + +/// Forward class definitions +class BS_Kernel; + +/// Class definitions +class ScummVMInput : public BS_InputEngine { +public: + ScummVMInput(BS_Kernel *pKernel); + virtual ~ScummVMInput(); + + virtual bool Init(); + virtual void Update(); + virtual bool IsLeftMouseDown(); + virtual bool IsRightMouseDown(); + virtual bool WasLeftMouseDown(); + virtual bool WasRightMouseDown(); + virtual bool IsLeftDoubleClick(); + virtual int GetMouseX(); + virtual int GetMouseY(); + virtual bool IsKeyDown(unsigned int KeyCode); + virtual bool WasKeyDown(unsigned int KeyCode); + virtual void SetMouseX(int PosX); + virtual void SetMouseY(int PosY); + virtual bool RegisterCharacterCallback(CharacterCallback Callback); + virtual bool UnregisterCharacterCallback(CharacterCallback Callback); + virtual bool RegisterCommandCallback(CommandCallback Callback); + virtual bool UnregisterCommandCallback(CommandCallback Callback); + virtual void ReportCharacter(unsigned char Character); + virtual void ReportCommand(KEY_COMMANDS Command); + + bool Persist(BS_OutputPersistenceBlock &Writer); + bool Unpersist(BS_InputPersistenceBlock &Reader); + +private: + void TestForLeftDoubleClick(); + void AlterKeyboardState(int keycode, byte newState); + + byte m_KeyboardState[2][256]; + bool m_LeftMouseState[2]; + bool m_RightMouseState[2]; + unsigned int m_CurrentState; + int m_MouseX; + int m_MouseY; + bool m_LeftMouseDown; + bool m_RightMouseDown; + bool m_LeftDoubleClick; + unsigned int m_DoubleClickTime; + int m_DoubleClickRectWidth; + int m_DoubleClickRectHeight; + unsigned int m_LastLeftClickTime; + int m_LastLeftClickMouseX; + int m_LastLeftClickMouseY; + Common::List m_CommandCallbacks; + Common::List m_CharacterCallbacks; +}; + +} // End of namespace Sword25 + +#endif -- cgit v1.2.3