[Scummvm-git-logs] scummvm master -> 4df5222c56292882c6c517bd90600880d0371de9
scemino
noreply at scummvm.org
Wed Apr 24 21:28:07 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:
4df5222c56 TWP: Improve keymap
Commit: 4df5222c56292882c6c517bd90600880d0371de9
https://github.com/scummvm/scummvm/commit/4df5222c56292882c6c517bd90600880d0371de9
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-24T23:27:59+02:00
Commit Message:
TWP: Improve keymap
Changed paths:
engines/twp/actions.h
engines/twp/metaengine.cpp
engines/twp/twp.cpp
engines/twp/twp.h
diff --git a/engines/twp/actions.h b/engines/twp/actions.h
index 7c3d9cc4093..199c0f3ea01 100644
--- a/engines/twp/actions.h
+++ b/engines/twp/actions.h
@@ -25,6 +25,11 @@
namespace Twp {
enum TwpAction {
+ kDefaultAction,
+ kMoveLeft,
+ kMoveRight,
+ kMoveUp,
+ kMoveDown,
kSkipCutscene,
kSelectActor1,
kSelectActor2,
diff --git a/engines/twp/metaengine.cpp b/engines/twp/metaengine.cpp
index 77c9719d33d..29571a6debe 100644
--- a/engines/twp/metaengine.cpp
+++ b/engines/twp/metaengine.cpp
@@ -21,6 +21,7 @@
#include "backends/keymapper/keymapper.h"
#include "backends/keymapper/action.h"
+#include "backends/keymapper/standard-actions.h"
#include "common/translation.h"
#include "common/savefile.h"
#include "engines/advancedDetector.h"
@@ -142,41 +143,58 @@ Common::Array<Common::Keymap *> TwpMetaEngine::initKeymaps(const char *target) c
const char *name;
const char *desc;
Twp::TwpAction action;
- const char *input;
+ char inputs[32];
+ Common::EventType event;
+ Common::KeyCode key;
} actions[] = {
- {"SKIPCUTSCENE", _s("Skip cutscene"), Twp::kSkipCutscene, "ESCAPE"},
- {"SELECTACTOR1", _s("Select Actor 1"), Twp::kSelectActor1, "1"},
- {"SELECTACTOR2", _s("Select Actor 2"), Twp::kSelectActor2, "2"},
- {"SELECTACTOR3", _s("Select Actor 3"), Twp::kSelectActor3, "3"},
- {"SELECTACTOR4", _s("Select Actor 4"), Twp::kSelectActor4, "4"},
- {"SELECTACTOR5", _s("Select Actor 5"), Twp::kSelectActor5, "5"},
- {"SELECTACTOR6", _s("Select Actor 6"), Twp::kSelectActor6, "6"},
- {"SELECTCHOICE1", _s("Select Choice 1"), Twp::kSelectChoice1, "1"},
- {"SELECTCHOICE2", _s("Select Choice 2"), Twp::kSelectChoice2, "2"},
- {"SELECTCHOICE3", _s("Select Choice 3"), Twp::kSelectChoice3, "3"},
- {"SELECTCHOICE4", _s("Select Choice 4"), Twp::kSelectChoice4, "4"},
- {"SELECTCHOICE5", _s("Select Choice 5"), Twp::kSelectChoice5, "5"},
- {"SELECTCHOICE6", _s("Select Choice 6"), Twp::kSelectChoice6, "6"},
- {"SELECTNEXTACTOR", _s("Select Next Actor"), Twp::kSelectNextActor, "0"},
- {"SELECTPREVACTOR", _s("Select Previous Actor"), Twp::kSelectPreviousActor, "9"},
- {"SKIPTEXT", _s("Skip Text"), Twp::kSkipText, "PERIOD"},
- {"SHOWHOTSPOTS", _s("Show hotspots"), Twp::kShowHotspots, "TAB"},
- {"OPEN", _s("Open"), Twp::kOpen, "q"},
- {"CLOSE", _s("Close"), Twp::kClose, "a"},
- {"GIVE", _s("Give"), Twp::kGive, "z"},
- {"PICKUP", _s("Pick up"), Twp::kPickUp, "w"},
- {"LOOKAT", _s("Look at"), Twp::kLookAt, "s"},
- {"TALKTO", _s("Talk to"), Twp::kTalkTo, "x"},
- {"PUSH", _s("Push"), Twp::kPush, "e"},
- {"PULL", _s("Pull"), Twp::kPull, "d"},
- {"USE", _s("Use"), Twp::kUse, "c"},
- {0, 0, Twp::kSkipCutscene, 0}};
+ {"ACTION", _s("Action"), Twp::kDefaultAction, "MOUSE_LEFT|JOY_A|RETURN", Common::EVENT_LBUTTONDOWN, Common::KEYCODE_INVALID},
+ {Common::kStandardActionMoveLeft, _s("Left"), Twp::kMoveLeft, "LEFT|JOY_LEFT", Common::EVENT_INVALID, Common::KEYCODE_LEFT},
+ {Common::kStandardActionMoveRight, _s("Right"), Twp::kMoveRight, "RIGHT|JOY_RIGHT", Common::EVENT_INVALID, Common::KEYCODE_RIGHT},
+ {Common::kStandardActionMoveUp, _s("Up"), Twp::kMoveUp, "UP|JOY_UP", Common::EVENT_INVALID, Common::KEYCODE_UP},
+ {Common::kStandardActionMoveDown, _s("Down"), Twp::kMoveDown, "DOWN|JOY_DOWN", Common::EVENT_INVALID, Common::KEYCODE_DOWN},
+ {"SKIPCUTSCENE", _s("Skip cutscene"), Twp::kSkipCutscene, "ESCAPE", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTACTOR1", _s("Select Actor 1"), Twp::kSelectActor1, "1", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTACTOR2", _s("Select Actor 2"), Twp::kSelectActor2, "2", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTACTOR3", _s("Select Actor 3"), Twp::kSelectActor3, "3", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTACTOR4", _s("Select Actor 4"), Twp::kSelectActor4, "4", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTACTOR5", _s("Select Actor 5"), Twp::kSelectActor5, "5", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTACTOR6", _s("Select Actor 6"), Twp::kSelectActor6, "6", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTCHOICE1", _s("Select Choice 1"), Twp::kSelectChoice1, "1", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTCHOICE2", _s("Select Choice 2"), Twp::kSelectChoice2, "2", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTCHOICE3", _s("Select Choice 3"), Twp::kSelectChoice3, "3", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTCHOICE4", _s("Select Choice 4"), Twp::kSelectChoice4, "4", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTCHOICE5", _s("Select Choice 5"), Twp::kSelectChoice5, "5", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTCHOICE6", _s("Select Choice 6"), Twp::kSelectChoice6, "6", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTNEXTACTOR", _s("Select Next Actor"), Twp::kSelectNextActor, "0", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SELECTPREVACTOR", _s("Select Previous Actor"), Twp::kSelectPreviousActor, "9", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"SKIPTEXT", _s("Skip Text"), Twp::kSkipText, "MOUSE_MIDDLE|PERIOD", Common::EVENT_MBUTTONDOWN, Common::KEYCODE_INVALID},
+ {"SHOWHOTSPOTS", _s("Show hotspots"), Twp::kShowHotspots, "TAB", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"OPEN", _s("Open"), Twp::kOpen, "q", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"CLOSE", _s("Close"), Twp::kClose, "a", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"GIVE", _s("Give"), Twp::kGive, "z", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"PICKUP", _s("Pick up"), Twp::kPickUp, "w", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"LOOKAT", _s("Look at"), Twp::kLookAt, "s", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"TALKTO", _s("Talk to"), Twp::kTalkTo, "x", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"PUSH", _s("Push"), Twp::kPush, "e", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"PULL", _s("Pull"), Twp::kPull, "d", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {"USE", _s("Use"), Twp::kUse, "c", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+ {0, 0, Twp::kSkipCutscene, {}, Common::EVENT_INVALID, Common::KEYCODE_INVALID}};
Common::Action *act;
for (int i = 0; actions[i].name; i++) {
act = new Common::Action(actions[i].name, _(actions[i].desc));
act->setCustomEngineActionEvent(actions[i].action);
- act->addDefaultInputMapping(actions[i].input);
+ char *strToken = strtok(actions[i].inputs, "|");
+ while (strToken) {
+ act->addDefaultInputMapping(strToken);
+ strToken = strtok(nullptr, "|");
+ }
+ if (actions[i].event != Common::EVENT_INVALID) {
+ act->setEvent(actions[i].event);
+ }
+ if (actions[i].key != Common::KEYCODE_INVALID) {
+ act->setKeyEvent(actions[i].key);
+ }
engineKeyMap->addAction(act);
}
diff --git a/engines/twp/twp.cpp b/engines/twp/twp.cpp
index 1106a1345f9..24acada2e9a 100644
--- a/engines/twp/twp.cpp
+++ b/engines/twp/twp.cpp
@@ -965,16 +965,27 @@ Common::Error TwpEngine::run() {
case TwpAction::kUse:
setVerbAction(1 + (int)e.customType - (int)TwpAction::kOpen);
break;
- }
+ default:
break;
+ }
} break;
case Common::EVENT_KEYDOWN:
switch (e.kbd.keycode) {
case Common::KEYCODE_LEFT:
- _speed = MAX(_speed - 1, 1);
+ if(_control)
+ _speed = MAX(_speed - 1, 1);
+ _cursor.holdLeft = true;
break;
case Common::KEYCODE_RIGHT:
- _speed = MIN(_speed + 1, 8);
+ if(_control)
+ _speed = MIN(_speed + 1, 8);
+ _cursor.holdRight = true;
+ break;
+ case Common::KEYCODE_UP:
+ _cursor.holdUp = true;
+ break;
+ case Common::KEYCODE_DOWN:
+ _cursor.holdDown = true;
break;
case Common::KEYCODE_LCTRL:
_control = true;
@@ -985,6 +996,18 @@ Common::Error TwpEngine::run() {
break;
case Common::EVENT_KEYUP:
switch (e.kbd.keycode) {
+ case Common::KEYCODE_LEFT:
+ _cursor.holdLeft = false;
+ break;
+ case Common::KEYCODE_RIGHT:
+ _cursor.holdRight = false;
+ break;
+ case Common::KEYCODE_UP:
+ _cursor.holdUp = false;
+ break;
+ case Common::KEYCODE_DOWN:
+ _cursor.holdDown = false;
+ break;
case Common::KEYCODE_LCTRL:
_control = false;
break;
@@ -1045,6 +1068,20 @@ Common::Error TwpEngine::run() {
}
}
+ const float mouseMoveSpeed = 4.f;
+ if(_cursor.holdLeft) {
+ _cursor.pos.setX(MAX(_cursor.pos.getX() - mouseMoveSpeed, 0.f));
+ }
+ if(_cursor.holdRight) {
+ _cursor.pos.setX(MIN(_cursor.pos.getX() + mouseMoveSpeed, (float)SCREEN_WIDTH));
+ }
+ if(_cursor.holdUp) {
+ _cursor.pos.setY(MAX(_cursor.pos.getY() - mouseMoveSpeed, 0.f));
+ }
+ if(_cursor.holdDown) {
+ _cursor.pos.setY(MIN(_cursor.pos.getY() + mouseMoveSpeed, (float)SCREEN_HEIGHT));
+ }
+
uint32 newTime = _system->getMillis();
uint32 delta = newTime - time;
time = newTime;
diff --git a/engines/twp/twp.h b/engines/twp/twp.h
index fb90a1fd73e..798fc5095cc 100644
--- a/engines/twp/twp.h
+++ b/engines/twp/twp.h
@@ -234,6 +234,10 @@ public:
bool oldRightDown = false;
bool rightDown = false;
int doubleClick = false;
+ bool holdLeft = false;
+ bool holdRight = false;
+ bool holdUp = false;
+ bool holdDown = false;
void update() {
oldLeftDown = leftDown;
More information about the Scummvm-git-logs
mailing list