aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Boutonné2010-12-31 22:44:16 +0000
committerArnaud Boutonné2010-12-31 22:44:16 +0000
commit3358001c3951240562bf4fdbcf9f03dc36977fe1 (patch)
tree370b52d1242d78e9c53e4b166ce09466f31d209a
parent11d47425205d7d26f2368a4326f96657f590d6f1 (diff)
downloadscummvm-rg350-3358001c3951240562bf4fdbcf9f03dc36977fe1.tar.gz
scummvm-rg350-3358001c3951240562bf4fdbcf9f03dc36977fe1.tar.bz2
scummvm-rg350-3358001c3951240562bf4fdbcf9f03dc36977fe1.zip
HUGO: Add CTRL-l and CTRL-s keys used in Win versions.
CTRL-n has been added too, but is currently only a STUB svn-id: r55081
-rw-r--r--engines/hugo/parser_v1d.cpp62
-rw-r--r--engines/hugo/parser_v1w.cpp55
2 files changed, 116 insertions, 1 deletions
diff --git a/engines/hugo/parser_v1d.cpp b/engines/hugo/parser_v1d.cpp
index 6fa0eb735b..405dd55c13 100644
--- a/engines/hugo/parser_v1d.cpp
+++ b/engines/hugo/parser_v1d.cpp
@@ -360,7 +360,12 @@ void Parser_v1d::keyHandler(Common::Event event) {
gameStatus.viewState = V_PLAY;
break;
case Common::KEYCODE_F6: // Inventory
- showDosInventory();
+ if (gameStatus.viewState == V_PLAY) {
+ if (gameStatus.gameOverFl)
+ Utils::gameOverMsg();
+ else
+ showDosInventory();
+ }
break;
case Common::KEYCODE_F8: // Turbo mode
_config.turboFl = !_config.turboFl;
@@ -368,6 +373,61 @@ void Parser_v1d::keyHandler(Common::Event event) {
case Common::KEYCODE_F9: // Boss button
warning("STUB: F9 (DOS) - BossKey");
break;
+ case Common::KEYCODE_l:
+ if (event.kbd.hasFlags(Common::KBD_CTRL)) {
+ _vm->_file->restoreGame(-1);
+ _vm->_scheduler->restoreScreen(*_vm->_screen_p);
+ gameStatus.viewState = V_PLAY;
+ } else {
+ if (!gameStatus.storyModeFl) { // Keyboard disabled
+ // Add printable keys to ring buffer
+ uint16 bnext = _putIndex + 1;
+ if (bnext >= sizeof(_ringBuffer))
+ bnext = 0;
+ if (bnext != _getIndex) {
+ _ringBuffer[_putIndex] = event.kbd.ascii;
+ _putIndex = bnext;
+ }
+ }
+ }
+ break;
+ case Common::KEYCODE_n:
+ if (event.kbd.hasFlags(Common::KBD_CTRL)) {
+ warning("STUB: CTRL-N (WIN) - New Game");
+ } else {
+ if (!gameStatus.storyModeFl) { // Keyboard disabled
+ // Add printable keys to ring buffer
+ uint16 bnext = _putIndex + 1;
+ if (bnext >= sizeof(_ringBuffer))
+ bnext = 0;
+ if (bnext != _getIndex) {
+ _ringBuffer[_putIndex] = event.kbd.ascii;
+ _putIndex = bnext;
+ }
+ }
+ }
+ break;
+ case Common::KEYCODE_s:
+ if (event.kbd.hasFlags(Common::KBD_CTRL)) {
+ if (gameStatus.viewState == V_PLAY) {
+ if (gameStatus.gameOverFl)
+ Utils::gameOverMsg();
+ else
+ _vm->_file->saveGame(-1, Common::String());
+ }
+ } else {
+ if (!gameStatus.storyModeFl) { // Keyboard disabled
+ // Add printable keys to ring buffer
+ uint16 bnext = _putIndex + 1;
+ if (bnext >= sizeof(_ringBuffer))
+ bnext = 0;
+ if (bnext != _getIndex) {
+ _ringBuffer[_putIndex] = event.kbd.ascii;
+ _putIndex = bnext;
+ }
+ }
+ }
+ break;
default: // Any other key
if (!gameStatus.storyModeFl) { // Keyboard disabled
// Add printable keys to ring buffer
diff --git a/engines/hugo/parser_v1w.cpp b/engines/hugo/parser_v1w.cpp
index 36d2c532a8..27eb7093ad 100644
--- a/engines/hugo/parser_v1w.cpp
+++ b/engines/hugo/parser_v1w.cpp
@@ -128,6 +128,61 @@ void Parser_v1w::keyHandler(Common::Event event) {
case Common::KEYCODE_F9: // Boss button
warning("STUB: F9 (DOS) - BossKey");
break;
+ case Common::KEYCODE_l:
+ if (event.kbd.hasFlags(Common::KBD_CTRL)) {
+ _vm->_file->restoreGame(-1);
+ _vm->_scheduler->restoreScreen(*_vm->_screen_p);
+ gameStatus.viewState = V_PLAY;
+ } else {
+ if (!gameStatus.storyModeFl) { // Keyboard disabled
+ // Add printable keys to ring buffer
+ uint16 bnext = _putIndex + 1;
+ if (bnext >= sizeof(_ringBuffer))
+ bnext = 0;
+ if (bnext != _getIndex) {
+ _ringBuffer[_putIndex] = event.kbd.ascii;
+ _putIndex = bnext;
+ }
+ }
+ }
+ break;
+ case Common::KEYCODE_n:
+ if (event.kbd.hasFlags(Common::KBD_CTRL)) {
+ warning("STUB: CTRL-N (WIN) - New Game");
+ } else {
+ if (!gameStatus.storyModeFl) { // Keyboard disabled
+ // Add printable keys to ring buffer
+ uint16 bnext = _putIndex + 1;
+ if (bnext >= sizeof(_ringBuffer))
+ bnext = 0;
+ if (bnext != _getIndex) {
+ _ringBuffer[_putIndex] = event.kbd.ascii;
+ _putIndex = bnext;
+ }
+ }
+ }
+ break;
+ case Common::KEYCODE_s:
+ if (event.kbd.hasFlags(Common::KBD_CTRL)) {
+ if (gameStatus.viewState == V_PLAY) {
+ if (gameStatus.gameOverFl)
+ Utils::gameOverMsg();
+ else
+ _vm->_file->saveGame(-1, Common::String());
+ }
+ } else {
+ if (!gameStatus.storyModeFl) { // Keyboard disabled
+ // Add printable keys to ring buffer
+ uint16 bnext = _putIndex + 1;
+ if (bnext >= sizeof(_ringBuffer))
+ bnext = 0;
+ if (bnext != _getIndex) {
+ _ringBuffer[_putIndex] = event.kbd.ascii;
+ _putIndex = bnext;
+ }
+ }
+ }
+ break;
default: // Any other key
if (!gameStatus.storyModeFl) { // Keyboard disabled
// Add printable keys to ring buffer