aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/gamemodule.cpp
diff options
context:
space:
mode:
authorjohndoe1232012-10-27 22:18:54 +0000
committerWillem Jan Palenstijn2013-05-08 20:47:37 +0200
commit6be5c1171332764dacad9113250ede7e765bb361 (patch)
tree120fe627fe506f8644a03ad2f835c8e8210a4715 /engines/neverhood/gamemodule.cpp
parent0022c57858f5cac3544692ad134a2446c4f3be3a (diff)
downloadscummvm-rg350-6be5c1171332764dacad9113250ede7e765bb361.tar.gz
scummvm-rg350-6be5c1171332764dacad9113250ede7e765bb361.tar.bz2
scummvm-rg350-6be5c1171332764dacad9113250ede7e765bb361.zip
NEVERHOOD: More work on the menu system:
- Add handling of ascii and system key input - Fix TextSurface::drawChar() - Pause audio when entering the menu, resume it again afterwards - Add TextEditWidget - Add SaveGameMenu (doesn't actually save anything yet and needs more work)
Diffstat (limited to 'engines/neverhood/gamemodule.cpp')
-rw-r--r--engines/neverhood/gamemodule.cpp32
1 files changed, 25 insertions, 7 deletions
diff --git a/engines/neverhood/gamemodule.cpp b/engines/neverhood/gamemodule.cpp
index 65164859c9..ce72a22835 100644
--- a/engines/neverhood/gamemodule.cpp
+++ b/engines/neverhood/gamemodule.cpp
@@ -123,13 +123,6 @@ void GameModule::handleMouseUp(int16 x, int16 y) {
}
}
-void GameModule::handleEscapeKey() {
- if (!_prevChildObject /* && _canRequestMainMenu TODO?*/)
- _mainMenuRequested = true;
- else
- sendMessage(_childObject, 0x000C, 0);
-}
-
void GameModule::handleSpaceKey() {
if (_childObject) {
debug(2, "GameModule::handleSpaceKey()");
@@ -137,6 +130,31 @@ void GameModule::handleSpaceKey() {
}
}
+void GameModule::handleAsciiKey(char key) {
+ if (_childObject) {
+ debug(2, "GameModule::handleAsciiKey()");
+ sendMessage(_childObject, 0x000A, (uint32)key);
+ }
+}
+
+void GameModule::handleKeyDown(Common::KeyCode keyCode) {
+ if (_childObject) {
+ if (keyCode == Common::KEYCODE_ESCAPE)
+ handleEscapeKey();
+ else if (keyCode == Common::KEYCODE_SPACE)
+ handleSpaceKey();
+ debug(2, "GameModule::handleKeyDown()");
+ sendMessage(_childObject, 0x000B, keyCode);
+ }
+}
+
+void GameModule::handleEscapeKey() {
+ if (!_prevChildObject /* && _canRequestMainMenu TODO?*/)
+ _mainMenuRequested = true;
+ else if (_childObject)
+ sendMessage(_childObject, 0x000C, 0);
+}
+
void GameModule::initKeySlotsPuzzle() {
if (!getSubVar(VA_IS_PUZZLE_INIT, 0x25400B10)) {
NonRepeatingRandomNumbers keySlots(_vm->_rnd, 16);