[Scummvm-git-logs] scummvm master -> 8ed565b43c2c9cd37b37a338f973ad37eafff175
bluegr
noreply at scummvm.org
Wed Aug 28 14:39:09 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:
8ed565b43c TOON: Add keymapper support
Commit: 8ed565b43c2c9cd37b37a338f973ad37eafff175
https://github.com/scummvm/scummvm/commit/8ed565b43c2c9cd37b37a338f973ad37eafff175
Author: NabeelShabbir (i210443 at nu.edu.pk)
Date: 2024-08-28T17:39:05+03:00
Commit Message:
TOON: Add keymapper support
Changed paths:
engines/toon/metaengine.cpp
engines/toon/movie.cpp
engines/toon/toon.cpp
engines/toon/toon.h
diff --git a/engines/toon/metaengine.cpp b/engines/toon/metaengine.cpp
index 3e07ef6bae4..853776312c1 100644
--- a/engines/toon/metaengine.cpp
+++ b/engines/toon/metaengine.cpp
@@ -30,6 +30,12 @@
#include "engines/advancedDetector.h"
#include "common/savefile.h"
#include "common/system.h"
+#include "common/translation.h"
+
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymapper.h"
+#include "backends/keymapper/standard-actions.h"
+
#include "base/plugins.h"
#include "graphics/thumbnail.h"
#include "toon/toon.h"
@@ -47,6 +53,8 @@ public:
SaveStateList listSaves(const char *target) const override;
SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override;
void removeSaveState(const char *target, int slot) const override;
+
+ Common::KeymapArray initKeymaps(const char *target) const override;
};
bool ToonMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -66,6 +74,90 @@ void ToonMetaEngine::removeSaveState(const char *target, int slot) const {
g_system->getSavefileManager()->removeSavefile(fileName);
}
+Common::KeymapArray ToonMetaEngine::initKeymaps(const char *target) const {
+ using namespace Common;
+ using namespace Toon;
+
+ Keymap *engineKeyMap = new Keymap(Keymap::kKeymapTypeGame, "toon-default", _("Default keymappings"));
+ Keymap *gameKeyMap = new Keymap(Keymap::kKeymapTypeGame, "game-shortcuts", _("Game keymappings"));
+
+ Action *act;
+
+ act = new Action(kStandardActionLeftClick, _("Left click"));
+ act->setLeftClickEvent();
+ act->addDefaultInputMapping("MOUSE_LEFT");
+ act->addDefaultInputMapping("JOY_A");
+ engineKeyMap->addAction(act);
+
+ act = new Action(kStandardActionRightClick, _("Right click"));
+ act->setRightClickEvent();
+ act->addDefaultInputMapping("MOUSE_RIGHT");
+ act->addDefaultInputMapping("JOY_B");
+ engineKeyMap->addAction(act);
+
+ act = new Action("ESCAPE", _("Skip intro"));
+ act->setCustomEngineActionEvent(kActionEscape);
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("JOY_BACK");
+ gameKeyMap->addAction(act);
+
+ // I18N: Skips current line being spoken by a character
+ act = new Action("STOPCURRENTVOICE", _("Stop current voice"));
+ act->setCustomEngineActionEvent(kActionStopCurrentVoice);
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("SPACE");
+ act->addDefaultInputMapping("JOY_X");
+ gameKeyMap->addAction(act);
+
+ act = new Action("SAVEGAME", _("Save game"));
+ act->setCustomEngineActionEvent(kActionSaveGame);
+ act->addDefaultInputMapping("F5");
+ act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
+ gameKeyMap->addAction(act);
+
+ act = new Action("LOADGAME", _("Load game"));
+ act->setCustomEngineActionEvent(kActionLoadGame);
+ act->addDefaultInputMapping("F6");
+ act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
+ gameKeyMap->addAction(act);
+
+ act = new Action("SUBTITLES", _("Toggle subtitles"));
+ act->setCustomEngineActionEvent(kActionSubtitles);
+ act->addDefaultInputMapping("t");
+ act->addDefaultInputMapping("JOY_UP");
+ gameKeyMap->addAction(act);
+
+ act = new Action("MUTEMUSIC", _("Mute music"));
+ act->setCustomEngineActionEvent(kActionMuteMusic);
+ act->addDefaultInputMapping("m");
+ act->addDefaultInputMapping("JOY_DOWN");
+ gameKeyMap->addAction(act);
+
+ act = new Action("SPEECHMUTE", _("Mute speech"));
+ act->setCustomEngineActionEvent(kActionSpeechMute);
+ act->addDefaultInputMapping("d");
+ act->addDefaultInputMapping("JOY_LEFT");
+ gameKeyMap->addAction(act);
+
+ act = new Action("SFXMUTE", _("Mute sound effects"));
+ act->setCustomEngineActionEvent(kActionSFXMute);
+ act->addDefaultInputMapping("s");
+ act->addDefaultInputMapping("JOY_RIGHT");
+ gameKeyMap->addAction(act);
+
+ act = new Action("SHOWOPTIONS", _("Show options"));
+ act->setCustomEngineActionEvent(kActionShowOptions);
+ act->addDefaultInputMapping("F1");
+ act->addDefaultInputMapping("JOY_Y");
+ gameKeyMap->addAction(act);
+
+ KeymapArray keymaps(2);
+ keymaps[0] = engineKeyMap;
+ keymaps[1] = gameKeyMap;
+
+ return keymaps;
+}
+
int ToonMetaEngine::getMaximumSaveSlot() const { return MAX_SAVE_SLOT; }
SaveStateList ToonMetaEngine::listSaves(const char *target) const {
diff --git a/engines/toon/movie.cpp b/engines/toon/movie.cpp
index 49d043db2e2..e05e086d3bd 100644
--- a/engines/toon/movie.cpp
+++ b/engines/toon/movie.cpp
@@ -174,7 +174,7 @@ void Movie::playVideo(bool isFirstIntroVideo) {
Common::Event event;
while (_vm->_system->getEventManager()->pollEvent(event))
- if ((event.type == Common::EVENT_KEYDOWN && event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
+ if ((event.type == Common::EVENT_CUSTOM_ENGINE_ACTION_START && event.customType == kActionEscape)) {
_vm->dirtyAllScreen();
return;
}
diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp
index 3b9c93312ff..064e43fe88f 100644
--- a/engines/toon/toon.cpp
+++ b/engines/toon/toon.cpp
@@ -221,45 +221,49 @@ void ToonEngine::parseInput() {
breakPollEventloop = true;
break;
- case Common::EVENT_KEYDOWN:
- if ((event.kbd.keycode == Common::KEYCODE_ESCAPE || event.kbd.keycode == Common::KEYCODE_SPACE) && !hasModifier) {
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+ switch (event.customType) {
+ case kActionStopCurrentVoice:
_audioManager->stopCurrentVoice();
- }
- if (event.kbd.keycode == Common::KEYCODE_F5 && !hasModifier) {
+ break;
+ case kActionSaveGame:
if (_gameState->_inMenu) {
playSoundWrong();
} else if (canSaveGameStateCurrently())
saveGame(-1, "");
- }
- if (event.kbd.keycode == Common::KEYCODE_F6 && !hasModifier) {
+ break;
+ case kActionLoadGame:
if (_gameState->_inMenu) {
playSoundWrong();
} else if (canLoadGameStateCurrently())
loadGame(-1);
- }
- if (event.kbd.keycode == Common::KEYCODE_t && !hasModifier) {
+ break;
+ case kActionSubtitles:
ConfMan.setBool("subtitles", !ConfMan.getBool("subtitles"));
syncSoundSettings();
- }
- if (event.kbd.keycode == Common::KEYCODE_m && !hasModifier) {
+ break;
+ case kActionMuteMusic:
ConfMan.setBool("music_mute", !ConfMan.getBool("music_mute"));
syncSoundSettings();
- }
- if (event.kbd.keycode == Common::KEYCODE_d && !hasModifier) {
+ break;
+ case kActionSpeechMute:
ConfMan.setBool("speech_mute", !ConfMan.getBool("speech_mute"));
syncSoundSettings();
- }
- if (event.kbd.keycode == Common::KEYCODE_s && !hasModifier) {
+ break;
+ case kActionSFXMute:
ConfMan.setBool("sfx_mute", !ConfMan.getBool("sfx_mute"));
syncSoundSettings();
- }
- if (event.kbd.keycode == Common::KEYCODE_F1 && !hasModifier) {
+ break;
+ case kActionShowOptions:
if (_gameState->_inMenu) {
playSoundWrong();
} else
showOptions();
+ break;
+ default:
+ break;
}
-
+ case Common::EVENT_KEYDOWN:
if (event.kbd.flags & Common::KBD_ALT) {
int slotNum = event.kbd.keycode - (event.kbd.keycode >= Common::KEYCODE_KP0 ? Common::KEYCODE_KP0 : Common::KEYCODE_0);
if (slotNum >= 0 && slotNum <= 9 && canSaveGameStateCurrently()) {
diff --git a/engines/toon/toon.h b/engines/toon/toon.h
index c438d4baff7..1f26df8f437 100644
--- a/engines/toon/toon.h
+++ b/engines/toon/toon.h
@@ -72,6 +72,19 @@ struct ADGameDescription;
*/
namespace Toon {
+enum TOONAction {
+ kActionNone,
+ kActionEscape,
+ kActionStopCurrentVoice,
+ kActionSaveGame,
+ kActionLoadGame,
+ kActionSubtitles,
+ kActionMuteMusic,
+ kActionSpeechMute,
+ kActionSFXMute,
+ kActionShowOptions
+};
+
enum ToonGameType {
GType_TOON = 1
};
More information about the Scummvm-git-logs
mailing list