[Scummvm-git-logs] scummvm master -> 812b82e4b3ddb6ff8fb7217b07569a24b69f2294
bluegr
noreply at scummvm.org
Thu Oct 31 06:52:18 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
812b82e4b3 TSAGE: Add keymapper support
Commit: 812b82e4b3ddb6ff8fb7217b07569a24b69f2294
https://github.com/scummvm/scummvm/commit/812b82e4b3ddb6ff8fb7217b07569a24b69f2294
Author: NabeelShabbir (128056426+NabeelShabbir at users.noreply.github.com)
Date: 2024-10-31T08:52:14+02:00
Commit Message:
TSAGE: Add keymapper support
Changed paths:
engines/tsage/blue_force/blueforce_dialogs.cpp
engines/tsage/blue_force/blueforce_logic.cpp
engines/tsage/blue_force/blueforce_scenes1.cpp
engines/tsage/converse.cpp
engines/tsage/core.cpp
engines/tsage/events.cpp
engines/tsage/events.h
engines/tsage/graphics.cpp
engines/tsage/metaengine.cpp
engines/tsage/ringworld/ringworld_demo.cpp
engines/tsage/ringworld/ringworld_dialogs.cpp
engines/tsage/ringworld/ringworld_logic.cpp
engines/tsage/ringworld/ringworld_scenes1.cpp
engines/tsage/ringworld/ringworld_scenes5.cpp
engines/tsage/ringworld2/ringworld2_airduct.cpp
engines/tsage/ringworld2/ringworld2_airduct.h
engines/tsage/ringworld2/ringworld2_dialogs.cpp
engines/tsage/ringworld2/ringworld2_logic.cpp
engines/tsage/ringworld2/ringworld2_outpost.cpp
engines/tsage/ringworld2/ringworld2_scenes0.cpp
engines/tsage/ringworld2/ringworld2_scenes1.cpp
engines/tsage/ringworld2/ringworld2_scenes3.cpp
engines/tsage/tsage.h
diff --git a/engines/tsage/blue_force/blueforce_dialogs.cpp b/engines/tsage/blue_force/blueforce_dialogs.cpp
index e1f28e3bc22..8d4c3ae6ce2 100644
--- a/engines/tsage/blue_force/blueforce_dialogs.cpp
+++ b/engines/tsage/blue_force/blueforce_dialogs.cpp
@@ -299,12 +299,17 @@ bool AmmoBeltDialog::process(Event &event) {
return true;
- case EVENT_KEYPRESS:
- if ((event.kbd.keycode == Common::KEYCODE_ESCAPE) || (event.kbd.keycode == Common::KEYCODE_RETURN)) {
+ case EVENT_CUSTOM_ACTIONSTART:
+ if (event.customType == kActionEscape) {
// Escape pressed, so flag to close dialog
_closeFlag = true;
return true;
}
+ if (event.customType == kActionReturn) {
+ // Return pressed, so flag to close dialog
+ _closeFlag = true;
+ return true;
+ }
break;
default:
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index 04d3b57b17e..88c870d65d4 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -291,9 +291,9 @@ void BlueForceGame::rightClick() {
}
void BlueForceGame::processEvent(Event &event) {
- if (event.eventType == EVENT_KEYPRESS) {
- switch (event.kbd.keycode) {
- case Common::KEYCODE_F1:
+ if (event.eventType == EVENT_CUSTOM_ACTIONSTART) {
+ switch (event.customType) {
+ case kActionHelp:
// F1 - Help
int tmp;
tmp = BF_GLOBALS._dialogCenter.y;
@@ -306,30 +306,30 @@ void BlueForceGame::processEvent(Event &event) {
BF_GLOBALS._dialogCenter.y = tmp;
break;
- case Common::KEYCODE_F2:
+ case kActionSoundOptions:
// F2 - Sound Options
SoundDialog::execute();
break;
- case Common::KEYCODE_F3:
+ case kActionQuitGame:
// F3 - Quit
quitGame();
event.handled = false;
break;
- case Common::KEYCODE_F4:
+ case kActionRestartGame:
// F4 - Restart
restartGame();
g_globals->_events.setCursorFromFlag();
break;
- case Common::KEYCODE_F7:
+ case kActionRestoreGame:
// F7 - Restore
restoreGame();
g_globals->_events.setCursorFromFlag();
break;
- case Common::KEYCODE_F10:
+ case kActionPauseGame:
// F10 - Pause
GfxDialog::setPalette();
if (g_vm->getLanguage() == Common::ES_ESP) {
@@ -1421,7 +1421,7 @@ void SceneMessage::signal() {
void SceneMessage::process(Event &event) {
if ((event.eventType == EVENT_BUTTON_DOWN) ||
- ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN))) {
+ ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionReturn))) {
signal();
}
}
diff --git a/engines/tsage/blue_force/blueforce_scenes1.cpp b/engines/tsage/blue_force/blueforce_scenes1.cpp
index 7951cd6995d..02143f6df59 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes1.cpp
@@ -2666,7 +2666,8 @@ void Scene160::Action2::signal() {
}
void Scene160::Action2::process(Event &event) {
- if ((event.handled) || ((event.eventType != EVENT_BUTTON_DOWN) && (event.eventType != EVENT_KEYPRESS)))
+ if ((event.handled) || ((event.eventType != EVENT_BUTTON_DOWN)
+ && (event.eventType != EVENT_KEYPRESS || event.eventType != EVENT_CUSTOM_ACTIONSTART)))
return;
if (_actionIndex == 25) {
diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp
index 684bdf753f6..59e60101e20 100644
--- a/engines/tsage/converse.cpp
+++ b/engines/tsage/converse.cpp
@@ -320,7 +320,7 @@ void SequenceManager::signal() {
}
void SequenceManager::process(Event &event) {
- if (((event.eventType == EVENT_BUTTON_DOWN) || (event.eventType == EVENT_KEYPRESS)) &&
+ if (((event.eventType == EVENT_BUTTON_DOWN) || (event.eventType == EVENT_KEYPRESS) || (event.eventType == EVENT_CUSTOM_ACTIONSTART)) &&
!event.handled && g_globals->_sceneObjects->contains(&_sceneText)) {
// Remove the text item
_sceneText.remove();
@@ -465,7 +465,7 @@ int ConversationChoiceDialog::execute(const Common::StringArray &choiceList) {
// Event handling loop
Event event;
while (!g_vm->shouldQuit()) {
- while (!g_globals->_events.getEvent(event, EVENT_KEYPRESS | EVENT_BUTTON_DOWN | EVENT_MOUSE_MOVE) &&
+ while (!g_globals->_events.getEvent(event, EVENT_CUSTOM_ACTIONSTART | EVENT_KEYPRESS | EVENT_BUTTON_DOWN | EVENT_MOUSE_MOVE) &&
!g_vm->shouldQuit()) {
g_system->delayMillis(10);
GLOBALS._screen.update();
@@ -994,7 +994,7 @@ void StripManager::process(Event &event) {
if (event.handled)
return;
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape)) {
if (_obj44ListIndex != 10000) {
int currIndex = _obj44ListIndex;
while (!_obj44List[_obj44ListIndex]._list[1]._id) {
@@ -1011,7 +1011,7 @@ void StripManager::process(Event &event) {
_delayFrames = 0;
event.handled = true;
signal();
- } else if (event.eventType & (EVENT_BUTTON_DOWN | EVENT_KEYPRESS)) {
+ } else if (event.eventType & (EVENT_BUTTON_DOWN | EVENT_KEYPRESS | EVENT_CUSTOM_ACTIONSTART)) {
// Move to next sequence in the strip
_delayFrames = 0;
event.handled = true;
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 51a09684ceb..e3d3699598b 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -1834,7 +1834,7 @@ void SceneItem::display(int resNum, int lineNum, ...) {
// Keep event on-screen until a mouse or keypress
while (!g_vm->shouldQuit() && !g_globals->_events.getEvent(event,
- EVENT_BUTTON_DOWN | EVENT_KEYPRESS)) {
+ EVENT_BUTTON_DOWN | EVENT_KEYPRESS | EVENT_CUSTOM_ACTIONSTART)) {
GLOBALS._screen.update();
g_system->delayMillis(10);
@@ -4419,7 +4419,7 @@ void SceneHandler::process(Event &event) {
if (!event.handled) {
g_globals->_game->processEvent(event);
- if (event.eventType == EVENT_KEYPRESS)
+ if (event.eventType == EVENT_KEYPRESS || event.eventType == EVENT_CUSTOM_ACTIONSTART)
g_globals->_events.setCursorFromFlag();
}
@@ -4439,29 +4439,29 @@ void SceneHandler::process(Event &event) {
if (!event.handled) {
// Separate check for F5 - Save key
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_F5)) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionSaveGame)) {
// F5 - Save
g_globals->_game->saveGame();
event.handled = true;
g_globals->_events.setCursorFromFlag();
}
- if ((event.eventType == EVENT_KEYPRESS) && g_globals->_player._enabled) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && g_globals->_player._enabled) {
// Keyboard shortcuts for different actions
- switch (event.kbd.keycode) {
- case Common::KEYCODE_w:
+ switch (event.customType) {
+ case kActionWalk:
g_globals->_events.setCursor(GLOBALS._player._canWalk ? CURSOR_WALK : CURSOR_USE);
event.handled = true;
break;
- case Common::KEYCODE_l:
+ case kActionLook:
g_globals->_events.setCursor(CURSOR_LOOK);
event.handled = true;
break;
- case Common::KEYCODE_u:
+ case kActionUse:
g_globals->_events.setCursor(CURSOR_USE);
event.handled = true;
break;
- case Common::KEYCODE_t:
+ case kActionTalk:
g_globals->_events.setCursor(CURSOR_TALK);
event.handled = true;
break;
diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp
index 3a579ed725a..129a184ffb8 100644
--- a/engines/tsage/events.cpp
+++ b/engines/tsage/events.cpp
@@ -118,6 +118,10 @@ bool EventsClass::getEvent(Event &evt, int eventMask) {
evt.eventType = EVENT_KEYPRESS;
evt.kbd = _event.kbd;
break;
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+ evt.eventType = EVENT_CUSTOM_ACTIONSTART;
+ evt.customType = _event.customType;
+ break;
default:
break;
}
diff --git a/engines/tsage/events.h b/engines/tsage/events.h
index f54794c31dc..9d9d8b75863 100644
--- a/engines/tsage/events.h
+++ b/engines/tsage/events.h
@@ -30,8 +30,8 @@
namespace TsAGE {
-enum EventType {EVENT_NONE = 0, EVENT_BUTTON_DOWN = 1, EVENT_BUTTON_UP = 2, EVENT_KEYPRESS = 4,
- EVENT_MOUSE_MOVE = 8, EVENT_UNK27 = 27};
+enum EventType {EVENT_NONE = 0, EVENT_BUTTON_DOWN = 1, EVENT_BUTTON_UP = 2, EVENT_KEYPRESS = 4,
+ EVENT_MOUSE_MOVE = 8, EVENT_CUSTOM_ACTIONSTART = 16, EVENT_UNK27 = 27};
enum ButtonShiftFlags {BTNSHIFT_LEFT = 0, BTNSHIFT_RIGHT = 3, BTNSHIFT_MIDDLE = 4};
@@ -50,6 +50,7 @@ public:
Common::Point mousePos;
int btnState;
Common::KeyState kbd;
+ Common::CustomEventType customType;
int ctr;
GfxManager *gfxMan;
bool handled;
@@ -142,7 +143,7 @@ public:
bool isCursorVisible() const;
bool pollEvent();
- void waitForPress(int eventMask = EVENT_BUTTON_DOWN | EVENT_KEYPRESS);
+ void waitForPress(int eventMask = EVENT_BUTTON_DOWN | EVENT_CUSTOM_ACTIONSTART | EVENT_KEYPRESS);
bool getEvent(Event &evt, int eventMask = ~EVENT_MOUSE_MOVE);
Common::Event event() { return _event; }
diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp
index fcd348eed20..30eca3fdb5e 100644
--- a/engines/tsage/graphics.cpp
+++ b/engines/tsage/graphics.cpp
@@ -355,7 +355,7 @@ bool GfxSurface::displayText(const Common::String &msg, const Common::Point &pt)
// Wait for a mouse or keypress
Event event;
- while (!g_globals->_events.getEvent(event, EVENT_BUTTON_DOWN | EVENT_KEYPRESS) && !g_vm->shouldQuit())
+ while (!g_globals->_events.getEvent(event, EVENT_BUTTON_DOWN | EVENT_CUSTOM_ACTIONSTART | EVENT_KEYPRESS) && !g_vm->shouldQuit())
;
// Restore the display area
@@ -363,7 +363,7 @@ bool GfxSurface::displayText(const Common::String &msg, const Common::Point &pt)
delete savedArea;
gfxManager.deactivate();
- return (event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN);
+ return (event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionReturn);
}
/**
@@ -1069,11 +1069,11 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) {
breakFlag = true;
break;
} else if (!event.handled) {
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape)) {
selectedButton = NULL;
breakFlag = true;
break;
- } else if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN)) {
+ } else if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionReturn)) {
selectedButton = defaultButton;
breakFlag = true;
break;
diff --git a/engines/tsage/metaengine.cpp b/engines/tsage/metaengine.cpp
index a906e760949..3108bb86b3a 100644
--- a/engines/tsage/metaengine.cpp
+++ b/engines/tsage/metaengine.cpp
@@ -22,6 +22,11 @@
#include "common/config-manager.h"
#include "common/system.h"
#include "common/savefile.h"
+#include "common/translation.h"
+
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymapper.h"
+#include "backends/keymapper/standard-actions.h"
#include "engines/advancedDetector.h"
@@ -154,10 +159,182 @@ public:
return SaveStateDescriptor();
}
+ Common::KeymapArray initKeymaps(const char *target) const override;
};
+Common::KeymapArray TSageMetaEngine::initKeymaps(const char *target) const {
+ using namespace Common;
+ using namespace TsAGE;
+
+ Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "tsage-default", _("Default keymappings"));
+ Keymap *gameKeyMap = new Keymap(Keymap::kKeymapTypeGame, "game-shortcuts", _("Game keymappings"));
+
+ Common::Action *act;
+
+ Common::String gameId = ConfMan.get("gameid", target);
+ Common::String extra = ConfMan.get("extra", target);
+ const bool isDemo = extra.contains("Demo");
+
+ act = new Common::Action(kStandardActionLeftClick, _("Left click"));
+ act->setLeftClickEvent();
+ act->addDefaultInputMapping("MOUSE_LEFT");
+ act->addDefaultInputMapping("JOY_A");
+ engineKeyMap->addAction(act);
+
+ act = new Common::Action(kStandardActionRightClick, _("Right click"));
+ act->setRightClickEvent();
+ act->addDefaultInputMapping("MOUSE_RIGHT");
+ act->addDefaultInputMapping("JOY_B");
+ engineKeyMap->addAction(act);
+
+ act = new Common::Action("ESCAPE", _("Escape"));
+ act->setCustomEngineActionEvent(kActionEscape);
+ act->addDefaultInputMapping("ESCAPE");
+ gameKeyMap->addAction(act);
+
+ // I18N: Return refers to return/enter key
+ act = new Common::Action("RETURN", _("Return"));
+ act->setCustomEngineActionEvent(kActionReturn);
+ act->addDefaultInputMapping("RETURN");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("WALK", _("Walk"));
+ act->setCustomEngineActionEvent(kActionWalk);
+ act->addDefaultInputMapping("w");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("LOOK", _("Look"));
+ act->setCustomEngineActionEvent(kActionLook);
+ act->addDefaultInputMapping("l");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("USE", _("Use"));
+ act->setCustomEngineActionEvent(kActionUse);
+ act->addDefaultInputMapping("u");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("TALK", _("Talk"));
+ act->setCustomEngineActionEvent(kActionTalk);
+ act->addDefaultInputMapping("t");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("HELP", _("View Help"));
+ act->setCustomEngineActionEvent(kActionHelp);
+ act->addDefaultInputMapping("F1");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("SOUNDOPTIONS", _("Sound options"));
+ act->setCustomEngineActionEvent(kActionSoundOptions);
+ act->addDefaultInputMapping("F2");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("QUITGAME", _("Quit game"));
+ act->setCustomEngineActionEvent(kActionQuitGame);
+ act->addDefaultInputMapping("F3");
+ gameKeyMap->addAction(act);
+
+ if (!isDemo) {
+ act = new Common::Action("RESTARTGAME", _("Restart game"));
+ act->setCustomEngineActionEvent(kActionRestartGame);
+ act->addDefaultInputMapping("F4");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("SAVEGAME", _("Save game"));
+ act->setCustomEngineActionEvent(kActionSaveGame);
+ act->addDefaultInputMapping("F5");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("RESTOREGAME", _("Restore game"));
+ act->setCustomEngineActionEvent(kActionRestoreGame);
+ act->addDefaultInputMapping("F7");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("PAUSEGAME", _("Pause game"));
+ act->setCustomEngineActionEvent(kActionPauseGame);
+ act->addDefaultInputMapping("F10");
+ gameKeyMap->addAction(act);
+ }
+
+ if (gameId == "ringworld2") {
+ act = new Common::Action("CREDITS", _("Show credits"));
+ act->setCustomEngineActionEvent(kActionCredits);
+ act->addDefaultInputMapping("F8");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("UP", _("Crawl North"));
+ act->setCustomEngineActionEvent(kActionMoveUpCrawlNorth);
+ act->addDefaultInputMapping("UP");
+ act->addDefaultInputMapping("KP8");
+ act->allowKbdRepeats();
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("DOWN", _("Crawl South"));
+ act->setCustomEngineActionEvent(kActionMoveDownCrawlSouth);
+ act->addDefaultInputMapping("DOWN");
+ act->addDefaultInputMapping("KP2");
+ act->allowKbdRepeats();
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("LEFT", _("Turn Left/Crawl West"));
+ act->setCustomEngineActionEvent(kActionMoveLeftCrawlWest);
+ act->addDefaultInputMapping("LEFT");
+ act->addDefaultInputMapping("KP4");
+ act->allowKbdRepeats();
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("RIGHT", _("Turn Right/Crawl East"));
+ act->setCustomEngineActionEvent(kActionMoveRightCrawlEast);
+ act->addDefaultInputMapping("RIGHT");
+ act->addDefaultInputMapping("KP6");
+ act->allowKbdRepeats();
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("INCREASESPEED", _("Increase speed"));
+ act->setCustomEngineActionEvent(kActionIncreaseSpeed);
+ act->addDefaultInputMapping("KP9");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("DECREASESPEED", _("Decrease speed"));
+ act->setCustomEngineActionEvent(kActionDecreaseSpeed);
+ act->addDefaultInputMapping("KP3");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("MINIMUMSPEED", _("Minimum speed"));
+ act->setCustomEngineActionEvent(kActionMinimumSpeed);
+ act->addDefaultInputMapping("KP1");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("MAXIMUMSPEED", _("Maximum speed"));
+ act->setCustomEngineActionEvent(kActionMaximumSpeed);
+ act->addDefaultInputMapping("KP7");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("LOWSPEED", _("Low speed"));
+ act->setCustomEngineActionEvent(kActionLowSpeed);
+ act->addDefaultInputMapping("KP_PERIOD");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("MEDIUMSPEED", _("Medium speed"));
+ act->setCustomEngineActionEvent(kActionMediumSpeed);
+ act->addDefaultInputMapping("KP0");
+ gameKeyMap->addAction(act);
+
+ act = new Common::Action("DRAWCARDS", _("Draw Cards"));
+ act->setCustomEngineActionEvent(kActionDrawCards);
+ act->addDefaultInputMapping("SPACE");
+ gameKeyMap->addAction(act);
+ }
+
+ KeymapArray keymaps(2);
+ keymaps[0] = engineKeyMap;
+ keymaps[1] = gameKeyMap;
+
+ return keymaps;
+}
+
#if PLUGIN_ENABLED_DYNAMIC(TSAGE)
REGISTER_PLUGIN_DYNAMIC(TSAGE, PLUGIN_TYPE_ENGINE, TSageMetaEngine);
#else
REGISTER_PLUGIN_STATIC(TSAGE, PLUGIN_TYPE_ENGINE, TSageMetaEngine);
#endif
+
diff --git a/engines/tsage/ringworld/ringworld_demo.cpp b/engines/tsage/ringworld/ringworld_demo.cpp
index 54104b4af8a..6ec24449141 100644
--- a/engines/tsage/ringworld/ringworld_demo.cpp
+++ b/engines/tsage/ringworld/ringworld_demo.cpp
@@ -70,20 +70,20 @@ void RingworldDemoGame::pauseGame() {
}
void RingworldDemoGame::processEvent(Event &event) {
- if (event.eventType == EVENT_KEYPRESS) {
- switch (event.kbd.keycode) {
- case Common::KEYCODE_F1:
+ if (event.eventType == EVENT_CUSTOM_ACTIONSTART) {
+ switch (event.customType) {
+ case kActionHelp:
// F1 - Help
MessageDialog::show(DEMO_HELP_MSG, OK_BTN_STRING);
break;
- case Common::KEYCODE_F2: {
+ case kActionSoundOptions: {
// F2 - Sound Options
SoundDialog::execute();
break;
}
- case Common::KEYCODE_F3:
+ case kActionQuitGame:
// F3 - Quit
quitGame();
event.handled = false;
diff --git a/engines/tsage/ringworld/ringworld_dialogs.cpp b/engines/tsage/ringworld/ringworld_dialogs.cpp
index 1ca7f0222b4..19976bf0cf8 100644
--- a/engines/tsage/ringworld/ringworld_dialogs.cpp
+++ b/engines/tsage/ringworld/ringworld_dialogs.cpp
@@ -447,8 +447,8 @@ void InventoryDialog::execute() {
hiliteObj = *i;
}
- if (!event.handled && event.eventType == EVENT_KEYPRESS) {
- if ((event.kbd.keycode == Common::KEYCODE_RETURN) || (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if (!event.handled && (event.eventType == EVENT_CUSTOM_ACTIONSTART)) {
+ if ((event.customType == kActionReturn) || (event.customType == kActionEscape)) {
// Exit the dialog
//hiliteObj = &_btnOk;
break;
diff --git a/engines/tsage/ringworld/ringworld_logic.cpp b/engines/tsage/ringworld/ringworld_logic.cpp
index 8e54361896a..28b80eb2431 100644
--- a/engines/tsage/ringworld/ringworld_logic.cpp
+++ b/engines/tsage/ringworld/ringworld_logic.cpp
@@ -563,9 +563,9 @@ void RingworldGame::endGame(int resNum, int lineNum) {
}
void RingworldGame::processEvent(Event &event) {
- if (event.eventType == EVENT_KEYPRESS) {
- switch (event.kbd.keycode) {
- case Common::KEYCODE_F1:
+ if (event.eventType == EVENT_CUSTOM_ACTIONSTART) {
+ switch (event.customType) {
+ case kActionHelp:
// F1 - Help
if (g_vm->getLanguage() == Common::ES_ESP) {
MessageDialog::show(ESP_HELP_MSG, ESP_OK_BTN_STRING);
@@ -576,30 +576,30 @@ void RingworldGame::processEvent(Event &event) {
}
break;
- case Common::KEYCODE_F2:
+ case kActionSoundOptions:
// F2 - Sound Options
SoundDialog::execute();
break;
- case Common::KEYCODE_F3:
+ case kActionQuitGame:
// F3 - Quit
quitGame();
event.handled = false;
break;
- case Common::KEYCODE_F4:
+ case kActionRestartGame:
// F4 - Restart
restartGame();
g_globals->_events.setCursorFromFlag();
break;
- case Common::KEYCODE_F7:
+ case kActionRestoreGame:
// F7 - Restore
restoreGame();
g_globals->_events.setCursorFromFlag();
break;
- case Common::KEYCODE_F10:
+ case kActionPauseGame:
// F10 - Pause
GfxDialog::setPalette();
if (g_vm->getLanguage() == Common::ES_ESP) {
diff --git a/engines/tsage/ringworld/ringworld_scenes1.cpp b/engines/tsage/ringworld/ringworld_scenes1.cpp
index 882e4694ea3..16003e6fbc1 100644
--- a/engines/tsage/ringworld/ringworld_scenes1.cpp
+++ b/engines/tsage/ringworld/ringworld_scenes1.cpp
@@ -3412,11 +3412,11 @@ void Scene6100::remove() {
void Scene6100::process(Event &event) {
Scene::process(event);
- if (event.eventType == EVENT_KEYPRESS) {
+ if (event.eventType == EVENT_CUSTOM_ACTIONSTART) {
// Handle incremental turning speeds with arrow keys
- if ((event.kbd.keycode == Common::KEYCODE_LEFT) || (event.kbd.keycode == Common::KEYCODE_KP4)) {
+ if (event.customType == kActionMoveLeftCrawlWest) {
_turnAmount = MIN(_turnAmount + 1, 8);
- } else if ((event.kbd.keycode == Common::KEYCODE_RIGHT) || (event.kbd.keycode == Common::KEYCODE_KP6)) {
+ } else if (event.customType == kActionMoveRightCrawlEast) {
_turnAmount = MAX(_turnAmount - 1, -8);
}
}
diff --git a/engines/tsage/ringworld/ringworld_scenes5.cpp b/engines/tsage/ringworld/ringworld_scenes5.cpp
index 4c692f3e55a..f1e834bcb12 100644
--- a/engines/tsage/ringworld/ringworld_scenes5.cpp
+++ b/engines/tsage/ringworld/ringworld_scenes5.cpp
@@ -4483,7 +4483,7 @@ void Scene4301::Action1::process(Event &event) {
}
}
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape)) {
event.handled = true;
remove();
}
diff --git a/engines/tsage/ringworld2/ringworld2_airduct.cpp b/engines/tsage/ringworld2/ringworld2_airduct.cpp
index 7b4b91c099e..a51d4fc5f4e 100644
--- a/engines/tsage/ringworld2/ringworld2_airduct.cpp
+++ b/engines/tsage/ringworld2/ringworld2_airduct.cpp
@@ -623,27 +623,23 @@ void Scene1200::process(Event &event) {
default:
return;
}
- } else if (event.eventType == EVENT_KEYPRESS) {
+ } else if (event.eventType == EVENT_CUSTOM_ACTIONSTART) {
if (_field414) {
event.handled = false;
return;
}
- switch (event.kbd.keycode) {
- case Common::KEYCODE_KP8:
- case Common::KEYCODE_UP:
+ switch (event.customType) {
+ case kActionMoveUpCrawlNorth:
startCrawling(CRAWL_NORTH);
break;
- case Common::KEYCODE_KP4:
- case Common::KEYCODE_LEFT:
+ case kActionMoveLeftCrawlWest:
startCrawling(CRAWL_WEST);
break;
- case Common::KEYCODE_KP6:
- case Common::KEYCODE_RIGHT:
+ case kActionMoveRightCrawlEast:
startCrawling(CRAWL_EAST);
break;
- case Common::KEYCODE_KP2:
- case Common::KEYCODE_DOWN:
+ case kActionMoveDownCrawlSouth:
startCrawling(CRAWL_SOUTH);
break;
default:
diff --git a/engines/tsage/ringworld2/ringworld2_airduct.h b/engines/tsage/ringworld2/ringworld2_airduct.h
index 559ec888950..ad8618d3d53 100644
--- a/engines/tsage/ringworld2/ringworld2_airduct.h
+++ b/engines/tsage/ringworld2/ringworld2_airduct.h
@@ -22,6 +22,7 @@
#ifndef TSAGE_RINGWORLD2_AIRDUCT_H
#define TSAGE_RINGWORLD2_AIRDUCT_H
+#include "tsage/tsage.h"
#include "tsage/events.h"
#include "tsage/core.h"
#include "tsage/scenes.h"
diff --git a/engines/tsage/ringworld2/ringworld2_dialogs.cpp b/engines/tsage/ringworld2/ringworld2_dialogs.cpp
index a26e28b4d34..bf555429c31 100644
--- a/engines/tsage/ringworld2/ringworld2_dialogs.cpp
+++ b/engines/tsage/ringworld2/ringworld2_dialogs.cpp
@@ -366,22 +366,23 @@ void HelpDialog::show() {
// If a function button was selected, take care of it
Event evt;
- evt.eventType = EVENT_KEYPRESS;
+ evt.eventType = EVENT_CUSTOM_ACTIONSTART;
evt.kbd.keycode = Common::KEYCODE_INVALID;
+ evt.customType = kActionNone;
if (btn == &dlg->_btnList[0]) {
- evt.kbd.keycode = Common::KEYCODE_F2;
+ evt.customType = kActionSoundOptions;
} else if (btn == &dlg->_btnList[1]) {
- evt.kbd.keycode = Common::KEYCODE_F3;
+ evt.customType = kActionQuitGame;
} else if (btn == &dlg->_btnList[2]) {
- evt.kbd.keycode = Common::KEYCODE_F4;
+ evt.customType = kActionRestartGame;
} else if (btn == &dlg->_btnList[3]) {
- evt.kbd.keycode = Common::KEYCODE_F5;
+ evt.customType = kActionSaveGame;
} else if (btn == &dlg->_btnList[4]) {
- evt.kbd.keycode = Common::KEYCODE_F7;
+ evt.customType = kActionRestoreGame;
} else if (btn == &dlg->_btnList[5]) {
- evt.kbd.keycode = Common::KEYCODE_F8;
+ evt.customType = kActionCredits;
} else if (btn == &dlg->_btnList[6]) {
- evt.kbd.keycode = Common::KEYCODE_F10;
+ evt.customType = kActionPauseGame;
}
// Remove the dialog
@@ -389,7 +390,7 @@ void HelpDialog::show() {
delete dlg;
// If a action button was selected, dispatch to handle it
- if (evt.kbd.keycode != Common::KEYCODE_INVALID)
+ if (evt.kbd.keycode != Common::KEYCODE_INVALID || evt.customType != kActionNone)
R2_GLOBALS._game->processEvent(evt);
else
R2_GLOBALS._events.setCursorFromFlag();
@@ -455,26 +456,26 @@ HelpDialog::HelpDialog() {
}
bool HelpDialog::handleKeypress(Event &event, GfxButton *&btn) {
- switch (event.kbd.keycode) {
- case Common::KEYCODE_F2:
+ switch (event.customType) {
+ case kActionSoundOptions:
btn = &_btnList[0];
break;
- case Common::KEYCODE_F3:
+ case kActionQuitGame:
btn = &_btnList[1];
break;
- case Common::KEYCODE_F4:
+ case kActionRestartGame:
btn = &_btnList[2];
break;
- case Common::KEYCODE_F5:
+ case kActionSaveGame:
btn = &_btnList[3];
break;
- case Common::KEYCODE_F7:
+ case kActionRestoreGame:
btn = &_btnList[4];
break;
- case Common::KEYCODE_F8:
+ case kActionCredits:
btn = &_btnList[5];
break;
- case Common::KEYCODE_F10:
+ case kActionPauseGame:
btn = &_btnList[6];
break;
default:
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 6b091b2b9ac..1b35dedc808 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -1199,50 +1199,50 @@ void Ringworld2Game::endGame(int resNum, int lineNum) {
}
void Ringworld2Game::processEvent(Event &event) {
- if (event.eventType == EVENT_KEYPRESS) {
- switch (event.kbd.keycode) {
- case Common::KEYCODE_F1:
+ if (event.eventType == EVENT_CUSTOM_ACTIONSTART) {
+ switch (event.customType) {
+ case kActionHelp:
// F1 - Help
HelpDialog::show();
break;
- case Common::KEYCODE_F2:
+ case kActionSoundOptions:
// F2 - Sound Options
SoundDialog::execute();
break;
- case Common::KEYCODE_F3:
+ case kActionQuitGame:
// F3 - Quit
quitGame();
event.handled = false;
break;
- case Common::KEYCODE_F4:
+ case kActionRestartGame:
// F4 - Restart
restartGame();
R2_GLOBALS._events.setCursorFromFlag();
break;
- case Common::KEYCODE_F5:
+ case kActionSaveGame:
// F5 - Save
saveGame();
R2_GLOBALS._events.setCursorFromFlag();
event.handled = true;
break;
- case Common::KEYCODE_F7:
+ case kActionRestoreGame:
// F7 - Restore
restoreGame();
R2_GLOBALS._events.setCursorFromFlag();
break;
- case Common::KEYCODE_F8:
+ case kActionCredits:
// F8 - Credits
if (R2_GLOBALS._sceneManager._sceneNumber != 205)
R2_GLOBALS._sceneManager.changeScene(205);
break;
- case Common::KEYCODE_F10:
+ case kActionPauseGame:
// F10 - Pause
GfxDialog::setPalette();
MessageDialog::show(GAME_PAUSED_MSG, OK_BTN_STRING);
@@ -1840,7 +1840,7 @@ void AnimationPlayer::remove() {
}
void AnimationPlayer::process(Event &event) {
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE) && _canSkip) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape) && _canSkip) {
// Move the current position to the end
_position = _subData._duration;
}
diff --git a/engines/tsage/ringworld2/ringworld2_outpost.cpp b/engines/tsage/ringworld2/ringworld2_outpost.cpp
index 360992edc39..11a0d18fae0 100644
--- a/engines/tsage/ringworld2/ringworld2_outpost.cpp
+++ b/engines/tsage/ringworld2/ringworld2_outpost.cpp
@@ -1770,7 +1770,7 @@ void Scene1337::Action10::signal() {
// Wait for a mouse or keypress
Event event;
- while (!g_globals->_events.getEvent(event, EVENT_BUTTON_DOWN | EVENT_KEYPRESS) && !g_vm->shouldQuit()) {
+ while (!g_globals->_events.getEvent(event, EVENT_CUSTOM_ACTIONSTART | EVENT_BUTTON_DOWN | EVENT_KEYPRESS) && !g_vm->shouldQuit()) {
g_globals->_scenePalette.signalListeners();
R2_GLOBALS._sceneObjects->draw();
g_globals->_events.delay(g_globals->_sceneHandler->_delayTicks);
@@ -1967,7 +1967,7 @@ void Scene1337::Action11::signal() {
}
Event event;
- while (!g_globals->_events.getEvent(event, EVENT_BUTTON_DOWN | EVENT_KEYPRESS) && !g_vm->shouldQuit()) {
+ while (!g_globals->_events.getEvent(event, EVENT_CUSTOM_ACTIONSTART | EVENT_BUTTON_DOWN | EVENT_KEYPRESS) && !g_vm->shouldQuit()) {
g_globals->_scenePalette.signalListeners();
R2_GLOBALS._sceneObjects->draw();
g_globals->_events.delay(g_globals->_sceneHandler->_delayTicks);
@@ -2115,7 +2115,7 @@ void Scene1337::Action12::signal() {
}
Event event;
- while (!g_globals->_events.getEvent(event, EVENT_BUTTON_DOWN | EVENT_KEYPRESS) && !g_vm->shouldQuit()) {
+ while (!g_globals->_events.getEvent(event,EVENT_CUSTOM_ACTIONSTART | EVENT_BUTTON_DOWN | EVENT_KEYPRESS) && !g_vm->shouldQuit()) {
g_globals->_scenePalette.signalListeners();
R2_GLOBALS._sceneObjects->draw();
g_globals->_events.delay(g_globals->_sceneHandler->_delayTicks);
@@ -2397,8 +2397,8 @@ void Scene1337::process(Event &event) {
(this->*tmpFctPtr)();
event.handled = true;
}
- } else if (event.eventType == EVENT_KEYPRESS) {
- if (event.kbd.keycode == Common::KEYCODE_SPACE) {
+ } else if (event.eventType == EVENT_CUSTOM_ACTIONSTART) {
+ if (event.customType == kActionDrawCards) {
if (_delayedFunction) {
FunctionPtrType tmpFctPtr = _delayedFunction;
_delayedFunction = nullptr;
@@ -4191,7 +4191,7 @@ void Scene1337::handlePlayer2() {
bool found;
for (;;) {
if ( ((g_globals->_events.getEvent(event, EVENT_BUTTON_DOWN)) && (event.btnState == BTNSHIFT_RIGHT))
- || (g_globals->_events.getEvent(event, EVENT_KEYPRESS)) ){
+ || (g_globals->_events.getEvent(event, EVENT_CUSTOM_ACTIONSTART | EVENT_KEYPRESS)) ){
_selectedCard._stationPos = g_globals->_events._mousePos;
found = false;
@@ -4680,7 +4680,7 @@ GfxButton *Scene1337::OptionsDialog::execute(GfxButton *defaultButton) {
breakFlag = true;
break;
} else if (!event.handled) {
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape)) {
selectedButton = NULL;
breakFlag = true;
break;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.cpp b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
index 6a9da378336..a0390741be3 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes0.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
@@ -65,7 +65,8 @@ void Scene50::postInit(SceneObjectList *OwnerList) {
}
void Scene50::process(Event &event) {
- if ((event.eventType != EVENT_BUTTON_DOWN) && (event.eventType != EVENT_KEYPRESS) && (event.eventType == EVENT_UNK27)) {
+ if ((event.eventType != EVENT_BUTTON_DOWN) && (event.eventType == EVENT_CUSTOM_ACTIONSTART)
+ && (event.eventType != EVENT_KEYPRESS) && (event.eventType == EVENT_UNK27)) {
event.handled = true;
g_globals->_events.setCursor(CURSOR_ARROW);
HelpDialog::show();
@@ -1477,7 +1478,7 @@ void Scene160::remove() {
}
void Scene160::process(Event &event) {
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape)) {
event.handled = true;
HelpDialog::show();
}
@@ -1911,7 +1912,7 @@ void Scene180::setSceneDelay(int v) {
}
void Scene180::process(Event &event) {
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape)) {
event.handled = true;
if (_helpEnabled) {
if (R2_GLOBALS._scenePalette._listeners.size() == 0)
@@ -2408,7 +2409,7 @@ void Scene205::remove() {
}
void Scene205::process(Event &event) {
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape)) {
event.handled = true;
R2_GLOBALS._sceneManager.changeScene(R2_GLOBALS._sceneManager._previousScene);
} else {
@@ -2584,7 +2585,7 @@ void Scene205Demo::remove() {
}
void Scene205Demo::process(Event &event) {
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape)) {
event.handled = true;
leaveScene();
} else {
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index 037186bdf32..52832f85c22 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -4717,7 +4717,7 @@ void Scene1625::signal() {
}
void Scene1625::process(Event &event) {
- if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE))
+ if ((event.eventType == EVENT_CUSTOM_ACTIONSTART) && (event.customType == kActionEscape))
event.handled = true;
else
Scene::process(event);
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 53cf63bcdcc..1c577ca4bda 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3791,60 +3791,56 @@ void Scene3500::process(Event &event) {
if (!_directionChangesEnabled)
return;
- if (event.eventType == EVENT_KEYPRESS) {
- switch (event.kbd.keycode) {
- case Common::KEYCODE_KP7:
+ if (event.eventType == EVENT_CUSTOM_ACTIONSTART) {
+ switch (event.customType) {
+ case kActionMaximumSpeed:
R2_GLOBALS._sound2.play(338);
doMovement(16);
event.handled = true;
break;
- case Common::KEYCODE_UP:
- case Common::KEYCODE_KP8:
+ case kActionMoveUpCrawlNorth:
R2_GLOBALS._sound2.play(14, NULL, 63);
doMovement(88);
event.handled = true;
break;
- case Common::KEYCODE_KP9:
+ case kActionIncreaseSpeed:
if (_speed < 16)
R2_GLOBALS._sound2.play(338);
doMovement(1);
event.handled = true;
break;
- case Common::KEYCODE_KP4:
- case Common::KEYCODE_LEFT:
+ case kActionMoveLeftCrawlWest:
R2_GLOBALS._sound2.play(14, NULL, 63);
doMovement(112);
event.handled = true;
break;
- case Common::KEYCODE_KP6:
- case Common::KEYCODE_RIGHT:
+ case kActionMoveRightCrawlEast:
R2_GLOBALS._sound2.play(14, NULL, 63);
doMovement(96);
event.handled = true;
break;
- case Common::KEYCODE_KP1:
+ case kActionMinimumSpeed:
R2_GLOBALS._sound2.play(338);
doMovement(0);
event.handled = true;
break;
- case Common::KEYCODE_KP2:
- case Common::KEYCODE_DOWN:
+ case kActionMoveDownCrawlSouth:
R2_GLOBALS._sound2.play(14, NULL, 63);
doMovement(104);
event.handled = true;
break;
- case Common::KEYCODE_KP3:
+ case kActionDecreaseSpeed:
if (_speed != 0)
R2_GLOBALS._sound2.play(338);
doMovement(-1);
event.handled = true;
break;
- case Common::KEYCODE_KP0:
+ case kActionMediumSpeed:
R2_GLOBALS._sound2.play(338);
doMovement(8);
event.handled = true;
break;
- case Common::KEYCODE_KP_PERIOD:
+ case kActionLowSpeed:
R2_GLOBALS._sound2.play(338);
doMovement(4);
event.handled = true;
diff --git a/engines/tsage/tsage.h b/engines/tsage/tsage.h
index 6e4d811ee54..1aa117717be 100644
--- a/engines/tsage/tsage.h
+++ b/engines/tsage/tsage.h
@@ -34,6 +34,35 @@
namespace TsAGE {
+enum TSAGEAction {
+ kActionNone,
+ kActionEscape,
+ kActionReturn,
+ kActionHelp,
+ kActionSoundOptions,
+ kActionQuitGame,
+ kActionRestartGame,
+ kActionSaveGame,
+ kActionRestoreGame,
+ kActionCredits,
+ kActionPauseGame,
+ kActionWalk,
+ kActionLook,
+ kActionUse,
+ kActionTalk,
+ kActionMoveUpCrawlNorth,
+ kActionMoveDownCrawlSouth,
+ kActionMoveLeftCrawlWest,
+ kActionMoveRightCrawlEast,
+ kActionIncreaseSpeed,
+ kActionDecreaseSpeed,
+ kActionMinimumSpeed,
+ kActionMaximumSpeed,
+ kActionLowSpeed,
+ kActionMediumSpeed,
+ kActionDrawCards
+};
+
enum {
kRingDebugScripts = 1 << 0,
ktSageSound = 1 << 1,
More information about the Scummvm-git-logs
mailing list