[Scummvm-git-logs] scummvm master -> a98eb7b3074e5d113efe6fff2db075735b78d1ab
alxpnv
noreply at scummvm.org
Wed Jun 26 07:28:15 UTC 2024
This automated email contains information about 7 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
3e4640a7ed ASYLUM: Use the actor constants in more places
fe9dabec20 ASYLUM: Simplify the console code
7e9ed82d68 ASYLUM: Use the keymapper for binding the middle mouse button
bdc07c126d ASYLUM: Implement moving with the arrow keys
3922c71287 ASYLUM: Use keymapper actions for the resource viewer
c08d7e3193 ASYLUM: Unify cancel event handling for puzzles and encounters
a98eb7b307 ASYLUM: Allow skipping cutscenes with any key or joystick button
Commit: 3e4640a7ed4134b4a7095ba65e4246de3ebd5223
https://github.com/scummvm/scummvm/commit/3e4640a7ed4134b4a7095ba65e4246de3ebd5223
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2024-06-26T10:28:09+03:00
Commit Message:
ASYLUM: Use the actor constants in more places
Changed paths:
engines/asylum/resources/actor.cpp
engines/asylum/resources/worldstats.cpp
engines/asylum/staticres.h
engines/asylum/views/scene.cpp
diff --git a/engines/asylum/resources/actor.cpp b/engines/asylum/resources/actor.cpp
index 12e6ad66b19..77cbba1c675 100644
--- a/engines/asylum/resources/actor.cpp
+++ b/engines/asylum/resources/actor.cpp
@@ -2246,7 +2246,7 @@ void Actor::updateStatusEnabledProcessStatus(int16 testX, int16 testY, uint32 co
void Actor::updateStatusBored() {
if (_index == getSharedData()->getPlayerIndex()
&& getWorld()->chapter != kChapter9
- && getWorld()->actorType == 0
+ && getWorld()->actorType == kActorMax
&& _frameIndex == 0
&& checkBoredStatus()) {
if (!getSpeech()->getSoundResourceId() || !getSound()->isPlaying(getSpeech()->getSoundResourceId()))
diff --git a/engines/asylum/resources/worldstats.cpp b/engines/asylum/resources/worldstats.cpp
index 5a03147cfa0..5e6e22068a1 100644
--- a/engines/asylum/resources/worldstats.cpp
+++ b/engines/asylum/resources/worldstats.cpp
@@ -63,7 +63,7 @@ WorldStats::WorldStats(AsylumEngine *engine) : _vm(engine) {
memset(&graphicResourceIds, kResourceNone, sizeof(graphicResourceIds));
sceneTitleGraphicResourceId = kResourceNone;
sceneTitlePaletteResourceId = kResourceNone;
- actorType = 0;
+ actorType = kActorMax;
memset(&soundResourceIds, kResourceNone, sizeof(soundResourceIds));
numAmbientSounds = 0;
diff --git a/engines/asylum/staticres.h b/engines/asylum/staticres.h
index e843b530ebe..02cc7728fe7 100644
--- a/engines/asylum/staticres.h
+++ b/engines/asylum/staticres.h
@@ -51,7 +51,10 @@ const int moviesCd[49] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
const int chapterIndexes[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 4, 8, 9, 0, 0};
/** Default Actor Indices by Scene */
-const int actorType[16] = {0, 0, 0, 0, 1, 0, 2, 0, 3, 0, 1, 1, 3, 0, 0, 0};
+const ActorIndexes actorType[16] = {kActorMax, kActorMax, kActorMax, kActorMax,
+ kActorSarah, kActorMax, kActorCyclops, kActorMax,
+ kActorAztec, kActorMax, kActorSarah, kActorSarah,
+ kActorAztec, kActorMax, kActorMax, kActorMax};
/** Speech indexes */
const uint speechIndex[20] = {17, 22, 27, 37, 45, 12, 16, 19, 25, 29, 14, 18, 23, 29, 35, 6, 9, 13, 19, 27};
diff --git a/engines/asylum/views/scene.cpp b/engines/asylum/views/scene.cpp
index ab7b7e41a79..8809de3997a 100644
--- a/engines/asylum/views/scene.cpp
+++ b/engines/asylum/views/scene.cpp
@@ -1878,13 +1878,13 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = GET_INDEX();
break;
- case 1:
- case 2:
- case 3:
+ case kActorSarah:
+ case kActorCyclops:
+ case kActorAztec:
index = 1;
break;
}
@@ -1895,13 +1895,13 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 3 - GET_INDEX();
break;
- case 1:
- case 2:
- case 3:
+ case kActorSarah:
+ case kActorCyclops:
+ case kActorAztec:
index = 2;
break;
}
@@ -1912,13 +1912,13 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 2;
break;
- case 1:
- case 2:
- case 3:
+ case kActorSarah:
+ case kActorCyclops:
+ case kActorAztec:
index = 4;
break;
}
@@ -1929,13 +1929,13 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 5;
break;
- case 1:
- case 2:
- case 3:
+ case kActorSarah:
+ case kActorCyclops:
+ case kActorAztec:
index = 3;
break;
}
@@ -1946,13 +1946,13 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 6;
break;
- case 1:
- case 2:
- case 3:
+ case kActorSarah:
+ case kActorCyclops:
+ case kActorAztec:
index = 4;
break;
}
@@ -1963,12 +1963,12 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 7;
break;
- case 1:
- case 2:
+ case kActorSarah:
+ case kActorCyclops:
index = 5;
break;
}
@@ -1979,12 +1979,12 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 8;
break;
- case 1:
- case 2:
+ case kActorSarah:
+ case kActorCyclops:
index = 6;
break;
}
@@ -1995,12 +1995,12 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 9;
break;
- case 1:
- case 2:
+ case kActorSarah:
+ case kActorCyclops:
index = 7;
break;
}
@@ -2011,12 +2011,12 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 10;
break;
- case 1:
- case 2:
+ case kActorSarah:
+ case kActorCyclops:
index = 8;
break;
}
@@ -2027,12 +2027,12 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 11;
break;
- case 1:
- case 2:
+ case kActorSarah:
+ case kActorCyclops:
index = 9;
break;
}
@@ -2043,12 +2043,12 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 13 - GET_INDEX();
break;
- case 1:
- case 2:
+ case kActorSarah:
+ case kActorCyclops:
index = 10;
break;
}
@@ -2059,11 +2059,11 @@ bool Scene::speak(Common::KeyCode code) {
default:
break;
- case 0:
+ case kActorMax:
index = 15 - GET_INDEX();
break;
- case 2:
+ case kActorCyclops:
index = 12 - GET_INDEX();
break;
}
Commit: fe9dabec2076e9cf2bfc025eba7d5d27fc5bfda3
https://github.com/scummvm/scummvm/commit/fe9dabec2076e9cf2bfc025eba7d5d27fc5bfda3
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2024-06-26T10:28:09+03:00
Commit Message:
ASYLUM: Simplify the console code
Changed paths:
A engines/asylum/detection.h
engines/asylum/asylum.cpp
engines/asylum/asylum.h
engines/asylum/console.h
engines/asylum/detection.cpp
engines/asylum/puzzles/puzzles.h
engines/asylum/resources/data.cpp
diff --git a/engines/asylum/asylum.cpp b/engines/asylum/asylum.cpp
index fc906601ca1..81a76d23016 100644
--- a/engines/asylum/asylum.cpp
+++ b/engines/asylum/asylum.cpp
@@ -50,12 +50,13 @@
#include "asylum/views/menu.h"
#include "asylum/views/video.h"
+#include "asylum/console.h"
#include "asylum/respack.h"
namespace Asylum {
AsylumEngine::AsylumEngine(OSystem *system, const ADGameDescription *gd) : Engine(system), _gameDescription(gd),
- _console(nullptr), _cursor(nullptr), _encounter(nullptr), _menu(nullptr), _resource(nullptr), _savegame(nullptr),
+ _cursor(nullptr), _encounter(nullptr), _menu(nullptr), _resource(nullptr), _savegame(nullptr),
_scene(nullptr), _screen(nullptr), _script(nullptr), _special(nullptr), _speech(nullptr), _sound(nullptr), _text(nullptr),
_video(nullptr), _handler(nullptr), _puzzles(nullptr) {
@@ -112,8 +113,7 @@ Common::Error AsylumEngine::run() {
initGraphics(640, 480);
// Create debugger. It requires GFX to be initialized
- _console = new Console(this);
- setDebugger(_console);
+ setDebugger(new Console(this));
// Create resource manager
_resource = new ResourceManager(this);
@@ -392,12 +392,9 @@ void AsylumEngine::playIntro() {
}
void AsylumEngine::handleEvents() {
- if (!_console || !_video || !_screen || !_sound || !_menu || !_cursor)
+ if (!_video || !_screen || !_sound || !_menu || !_cursor)
error("[AsylumEngine::handleEvents] Subsystems not initialized properly!");
- // Show the debugger if required
- _console->onFrame();
-
AsylumEvent ev;
Common::Keymapper *const keymapper = _eventMan->getKeymapper();
@@ -414,11 +411,6 @@ void AsylumEngine::handleEvents() {
break;
case Common::EVENT_KEYDOWN:
- if ((ev.kbd.flags & Common::KBD_CTRL) && ev.kbd.keycode == Common::KEYCODE_d) {
- _console->attach();
- break;
- }
-
// Handle key events
if (_handler)
_handler->handleEvent(ev);
diff --git a/engines/asylum/asylum.h b/engines/asylum/asylum.h
index b5a5678c12a..14aabbb74df 100644
--- a/engines/asylum/asylum.h
+++ b/engines/asylum/asylum.h
@@ -35,7 +35,7 @@
#include "asylum/resources/data.h"
-#include "asylum/console.h"
+#include "asylum/detection.h"
#include "asylum/eventhandler.h"
#include "asylum/shared.h"
@@ -209,7 +209,6 @@ private:
const ADGameDescription *_gameDescription;
// Misc
- Console *_console;
Common::RandomSource *_rnd;
// Game
diff --git a/engines/asylum/console.h b/engines/asylum/console.h
index b4d6ff11d95..2a6097450b5 100644
--- a/engines/asylum/console.h
+++ b/engines/asylum/console.h
@@ -31,23 +31,6 @@
namespace Asylum {
-enum kDebugLevels {
- kDebugLevelMain = 1 << 0,
- kDebugLevelResources = 1 << 1,
- kDebugLevelSprites = 1 << 2,
- kDebugLevelInput = 1 << 3,
- kDebugLevelMenu = 1 << 4,
- kDebugLevelScripts = 1 << 5,
- kDebugLevelSound = 1 << 6,
- kDebugLevelSavegame = 1 << 7,
- kDebugLevelScene = 1 << 8,
- kDebugLevelObjects = 1 << 9,
- kDebugLevelActor = 1 << 10,
- kDebugLevelEncounter = 1 << 11,
- kDebugLevelVideo = 1 << 12,
- kDebugLevelCommands = 1 << 13
-};
-
class AsylumEngine;
struct ActionArea;
diff --git a/engines/asylum/detection.cpp b/engines/asylum/detection.cpp
index 73e22b0e0c9..5fb70461fc3 100644
--- a/engines/asylum/detection.cpp
+++ b/engines/asylum/detection.cpp
@@ -22,8 +22,8 @@
#include "engines/advancedDetector.h"
#include "base/plugins.h"
+#include "asylum/detection.h"
#include "asylum/detection_tables.h"
-#include "asylum/console.h"
static const DebugChannelDef debugFlagList[] = {
{Asylum::kDebugLevelMain, "Main", "Generic debug level"},
diff --git a/engines/asylum/detection.h b/engines/asylum/detection.h
new file mode 100644
index 00000000000..add204c40b9
--- /dev/null
+++ b/engines/asylum/detection.h
@@ -0,0 +1,46 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef ASYLUM_DETECTION_H
+#define ASYLUM_DETECTION_H
+
+namespace Asylum {
+
+enum kDebugLevels {
+ kDebugLevelMain = 1 << 0,
+ kDebugLevelResources = 1 << 1,
+ kDebugLevelSprites = 1 << 2,
+ kDebugLevelInput = 1 << 3,
+ kDebugLevelMenu = 1 << 4,
+ kDebugLevelScripts = 1 << 5,
+ kDebugLevelSound = 1 << 6,
+ kDebugLevelSavegame = 1 << 7,
+ kDebugLevelScene = 1 << 8,
+ kDebugLevelObjects = 1 << 9,
+ kDebugLevelActor = 1 << 10,
+ kDebugLevelEncounter = 1 << 11,
+ kDebugLevelVideo = 1 << 12,
+ kDebugLevelCommands = 1 << 13
+};
+
+} // End of namespace Asylum
+
+#endif // ASYLUM_DETECTION_H
diff --git a/engines/asylum/puzzles/puzzles.h b/engines/asylum/puzzles/puzzles.h
index e360d988f88..07b6fab1cf4 100644
--- a/engines/asylum/puzzles/puzzles.h
+++ b/engines/asylum/puzzles/puzzles.h
@@ -24,11 +24,11 @@
#include "common/serializer.h"
-#include "asylum/console.h"
#include "asylum/shared.h"
namespace Asylum {
+class AsylumEngine;
class EventHandler;
class Puzzle;
diff --git a/engines/asylum/resources/data.cpp b/engines/asylum/resources/data.cpp
index 74736839d9c..9501a15d3ac 100644
--- a/engines/asylum/resources/data.cpp
+++ b/engines/asylum/resources/data.cpp
@@ -21,7 +21,7 @@
#include "common/textconsole.h"
-#include "engines/asylum/console.h"
+#include "engines/asylum/detection.h"
#include "engines/asylum/resources/data.h"
Commit: 7e9ed82d68222ae5293e40fea11900008c7b753e
https://github.com/scummvm/scummvm/commit/7e9ed82d68222ae5293e40fea11900008c7b753e
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2024-06-26T10:28:09+03:00
Commit Message:
ASYLUM: Use the keymapper for binding the middle mouse button
Changed paths:
engines/asylum/asylum.cpp
engines/asylum/metaengine.cpp
engines/asylum/system/cursor.cpp
engines/asylum/system/cursor.h
engines/asylum/views/scene.cpp
diff --git a/engines/asylum/asylum.cpp b/engines/asylum/asylum.cpp
index 81a76d23016..01793115e9f 100644
--- a/engines/asylum/asylum.cpp
+++ b/engines/asylum/asylum.cpp
@@ -427,8 +427,6 @@ void AsylumEngine::handleEvents() {
case Common::EVENT_LBUTTONUP:
case Common::EVENT_RBUTTONDOWN:
case Common::EVENT_RBUTTONUP:
- case Common::EVENT_MBUTTONUP:
- case Common::EVENT_MBUTTONDOWN:
// Handle mouse events
_cursor->setState(ev);
diff --git a/engines/asylum/metaengine.cpp b/engines/asylum/metaengine.cpp
index 00ec93dfce7..56bb158843e 100644
--- a/engines/asylum/metaengine.cpp
+++ b/engines/asylum/metaengine.cpp
@@ -152,6 +152,7 @@ Common::KeymapArray AsylumMetaEngine::initKeymaps(const char *target) const {
act = new Action("INVENTORY", _("Open character inventory"));
act->setCustomEngineActionEvent(kAsylumActionOpenInventory);
act->addDefaultInputMapping("i");
+ act->addDefaultInputMapping("MOUSE_MIDDLE");
act->addDefaultInputMapping("JOY_X");
engineKeyMap->addAction(act);
diff --git a/engines/asylum/system/cursor.cpp b/engines/asylum/system/cursor.cpp
index 7b9ee482d13..88f0609174d 100644
--- a/engines/asylum/system/cursor.cpp
+++ b/engines/asylum/system/cursor.cpp
@@ -111,10 +111,6 @@ void Cursor::setState(const Common::Event &evt) {
_state |= kCursorStateRight;
break;
- case Common::EVENT_MBUTTONDOWN:
- _state |= kCursorMiddle;
- break;
-
case Common::EVENT_LBUTTONUP:
_state &= ~kCursorStateLeft;
break;
@@ -122,10 +118,6 @@ void Cursor::setState(const Common::Event &evt) {
case Common::EVENT_RBUTTONUP:
_state &= ~kCursorStateRight;
break;
-
- case Common::EVENT_MBUTTONUP:
- _state &= ~kCursorMiddle;
- break;
}
}
diff --git a/engines/asylum/system/cursor.h b/engines/asylum/system/cursor.h
index a98d92c75ff..45ce74fc97e 100644
--- a/engines/asylum/system/cursor.h
+++ b/engines/asylum/system/cursor.h
@@ -35,7 +35,6 @@ class GraphicResource;
enum CursorState {
kCursorStateLeft = 1,
kCursorStateRight = 2,
- kCursorMiddle = 3
};
enum CursorAnimation {
diff --git a/engines/asylum/views/scene.cpp b/engines/asylum/views/scene.cpp
index 8809de3997a..25c684e2fc0 100644
--- a/engines/asylum/views/scene.cpp
+++ b/engines/asylum/views/scene.cpp
@@ -337,7 +337,6 @@ bool Scene::handleEvent(const AsylumEvent &evt) {
case Common::EVENT_LBUTTONDOWN:
case Common::EVENT_RBUTTONDOWN:
- case Common::EVENT_MBUTTONDOWN:
return getCursor()->isHidden() ? false : clickDown(evt);
}
@@ -554,15 +553,6 @@ bool Scene::clickDown(const AsylumEvent &evt) {
}
break;
- case Common::EVENT_MBUTTONDOWN:
- if (player->getStatus() != kActorStatusDisabled) {
- if (player->getStatus() == kActorStatusShowingInventory || player->getStatus() == kActorStatus10)
- player->changeStatus(kActorStatusEnabled);
- else
- player->changeStatus(kActorStatusShowingInventory);
- }
- break;
-
case Common::EVENT_LBUTTONDOWN:
if (getCursor()->getState() & kCursorStateRight)
break;
Commit: bdc07c126d30a9aa1a6263bb94127dea393fe48e
https://github.com/scummvm/scummvm/commit/bdc07c126d30a9aa1a6263bb94127dea393fe48e
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2024-06-26T10:28:09+03:00
Commit Message:
ASYLUM: Implement moving with the arrow keys
Changed paths:
engines/asylum/asylum.cpp
engines/asylum/metaengine.cpp
engines/asylum/shared.h
engines/asylum/system/cursor.cpp
engines/asylum/system/cursor.h
engines/asylum/views/scene.cpp
engines/asylum/views/scene.h
diff --git a/engines/asylum/asylum.cpp b/engines/asylum/asylum.cpp
index 01793115e9f..dbc3d21c493 100644
--- a/engines/asylum/asylum.cpp
+++ b/engines/asylum/asylum.cpp
@@ -405,6 +405,7 @@ void AsylumEngine::handleEvents() {
break;
case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_END:
// Handle custom actions
if (_handler)
_handler->handleEvent(ev);
@@ -428,8 +429,6 @@ void AsylumEngine::handleEvents() {
case Common::EVENT_RBUTTONDOWN:
case Common::EVENT_RBUTTONUP:
// Handle mouse events
- _cursor->setState(ev);
-
if (_handler)
_handler->handleEvent(ev);
break;
diff --git a/engines/asylum/metaengine.cpp b/engines/asylum/metaengine.cpp
index 56bb158843e..e8860f55bbb 100644
--- a/engines/asylum/metaengine.cpp
+++ b/engines/asylum/metaengine.cpp
@@ -168,6 +168,30 @@ Common::KeymapArray AsylumMetaEngine::initKeymaps(const char *target) const {
act->addDefaultInputMapping("JOY_B");
engineKeyMap->addAction(act);
+ act = new Action(kStandardActionMoveUp, _("Move up"));
+ act->setCustomEngineActionEvent(kAsylumActionMoveUp);
+ act->addDefaultInputMapping("UP");
+ act->addDefaultInputMapping("JOY_UP");
+ engineKeyMap->addAction(act);
+
+ act = new Action(kStandardActionMoveDown, _("Move down"));
+ act->setCustomEngineActionEvent(kAsylumActionMoveDown);
+ act->addDefaultInputMapping("DOWN");
+ act->addDefaultInputMapping("JOY_DOWN");
+ engineKeyMap->addAction(act);
+
+ act = new Action(kStandardActionMoveLeft, _("Move left"));
+ act->setCustomEngineActionEvent(kAsylumActionMoveLeft);
+ act->addDefaultInputMapping("LEFT");
+ act->addDefaultInputMapping("JOY_LEFT");
+ engineKeyMap->addAction(act);
+
+ act = new Action(kStandardActionMoveRight, _("Move right"));
+ act->setCustomEngineActionEvent(kAsylumActionMoveRight);
+ act->addDefaultInputMapping("RIGHT");
+ act->addDefaultInputMapping("JOY_RIGHT");
+ engineKeyMap->addAction(act);
+
return Keymap::arrayOf(engineKeyMap);
}
diff --git a/engines/asylum/shared.h b/engines/asylum/shared.h
index af2eb35acea..11302ce5540 100644
--- a/engines/asylum/shared.h
+++ b/engines/asylum/shared.h
@@ -880,7 +880,11 @@ enum AsylumAction {
kAsylumActionSwitchToGrimwall,
kAsylumActionSwitchToOlmec,
kAsylumActionOpenInventory,
- kAsylumActionShowMenu
+ kAsylumActionShowMenu,
+ kAsylumActionMoveUp,
+ kAsylumActionMoveDown,
+ kAsylumActionMoveRight,
+ kAsylumActionMoveLeft
};
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/asylum/system/cursor.cpp b/engines/asylum/system/cursor.cpp
index 88f0609174d..2b8e4fbd394 100644
--- a/engines/asylum/system/cursor.cpp
+++ b/engines/asylum/system/cursor.cpp
@@ -32,7 +32,7 @@ namespace Asylum {
const uint32 CURSOR_UPDATE_TICKS = 100;
Cursor::Cursor(AsylumEngine *engine) : _vm(engine),
- _state(0), _cursorRes(nullptr), _nextTick(0), _frameStep(0),
+ _cursorRes(nullptr), _nextTick(0), _frameStep(0),
_graphicResourceId(kResourceNone), _currentFrame(0), _lastFrameIndex(0), _counter(0), _animation(kCursorAnimationNone),
_forceHide(false) {
}
@@ -98,29 +98,6 @@ void Cursor::update() {
CursorMan.replaceCursor(frame->surface, hotspot.x, hotspot.y, 0);
}
-void Cursor::setState(const Common::Event &evt) {
- switch (evt.type) {
- default:
- break;
-
- case Common::EVENT_LBUTTONDOWN:
- _state |= kCursorStateLeft;
- break;
-
- case Common::EVENT_RBUTTONDOWN:
- _state |= kCursorStateRight;
- break;
-
- case Common::EVENT_LBUTTONUP:
- _state &= ~kCursorStateLeft;
- break;
-
- case Common::EVENT_RBUTTONUP:
- _state &= ~kCursorStateRight;
- break;
- }
-}
-
void Cursor::animate() {
if (isHidden() || !_animation || _nextTick > _vm->getTick())
return;
diff --git a/engines/asylum/system/cursor.h b/engines/asylum/system/cursor.h
index 45ce74fc97e..7d4fa5d590e 100644
--- a/engines/asylum/system/cursor.h
+++ b/engines/asylum/system/cursor.h
@@ -32,11 +32,6 @@ namespace Asylum {
class AsylumEngine;
class GraphicResource;
-enum CursorState {
- kCursorStateLeft = 1,
- kCursorStateRight = 2,
-};
-
enum CursorAnimation {
kCursorAnimationNone = 0,
kCursorAnimationLinear = 1,
@@ -87,8 +82,6 @@ public:
void animate();
// Accessors
- void setState(const Common::Event &evt);
- byte getState() { return _state; }
void setForceHide(bool state) { _forceHide = state; }
ResourceId getResourceId() { return _graphicResourceId; }
CursorAnimation getAnimation() { return _animation; }
@@ -101,8 +94,6 @@ public:
private:
AsylumEngine *_vm;
- byte _state;
-
// Cursor resource
GraphicResource *_cursorRes;
diff --git a/engines/asylum/views/scene.cpp b/engines/asylum/views/scene.cpp
index 25c684e2fc0..e3e56be1b51 100644
--- a/engines/asylum/views/scene.cpp
+++ b/engines/asylum/views/scene.cpp
@@ -314,7 +314,6 @@ bool Scene::handleEvent(const AsylumEvent &evt) {
return init();
case EVENT_ASYLUM_ACTIVATE:
- case Common::EVENT_RBUTTONUP:
activate();
break;
@@ -322,7 +321,10 @@ bool Scene::handleEvent(const AsylumEvent &evt) {
return update();
case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
- return action((AsylumAction)evt.customType);
+ return actionDown((AsylumAction)evt.customType);
+
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_END:
+ return actionUp((AsylumAction)evt.customType);
case Common::EVENT_KEYDOWN:
if (evt.kbd.flags & Common::KBD_CTRL)
@@ -338,6 +340,11 @@ bool Scene::handleEvent(const AsylumEvent &evt) {
case Common::EVENT_LBUTTONDOWN:
case Common::EVENT_RBUTTONDOWN:
return getCursor()->isHidden() ? false : clickDown(evt);
+
+ case Common::EVENT_RBUTTONUP:
+ _rightButtonDown = false;
+ activate();
+ break;
}
return false;
@@ -420,7 +427,9 @@ bool Scene::update() {
return true;
}
-bool Scene::action(AsylumAction a) {
+bool Scene::actionDown(AsylumAction a) {
+ Actor *player = getActor();
+
switch (a) {
case kAsylumActionShowVersion:
_debugShowVersion = !_debugShowVersion;
@@ -470,11 +479,70 @@ bool Scene::action(AsylumAction a) {
}
}
break;
+
+ case kAsylumActionMoveUp:
+ if (player->getStatus() != kActorStatusDisabled) {
+ player->changeStatus(kActorStatusWalking);
+ }
+ _keyState |= kWalkUp;
+ break;
+
+ case kAsylumActionMoveDown:
+ if (player->getStatus() != kActorStatusDisabled) {
+ player->changeStatus(kActorStatusWalking);
+ }
+ _keyState |= kWalkDown;
+ break;
+
+ case kAsylumActionMoveLeft:
+ if (player->getStatus() != kActorStatusDisabled) {
+ player->changeStatus(kActorStatusWalking);
+ }
+ _keyState |= kWalkLeft;
+ break;
+
+ case kAsylumActionMoveRight:
+ if (player->getStatus() != kActorStatusDisabled) {
+ player->changeStatus(kActorStatusWalking);
+ }
+ _keyState |= kWalkRight;
+ break;
+
}
return true;
}
+bool Scene::actionUp(AsylumAction a) {
+ byte lastKeyState = _keyState;
+
+ switch (a) {
+ case kAsylumActionMoveUp:
+ _keyState &= ~kWalkUp;
+ break;
+
+ case kAsylumActionMoveDown:
+ _keyState &= ~kWalkDown;
+ break;
+
+ case kAsylumActionMoveLeft:
+ _keyState &= ~kWalkLeft;
+ break;
+
+ case kAsylumActionMoveRight:
+ _keyState &= ~kWalkRight;
+ break;
+
+ default:
+ break;
+ }
+
+ if (lastKeyState && !_keyState)
+ activate();
+
+ return true;
+}
+
bool Scene::key(const AsylumEvent &evt) {
if (!_ws)
error("[Scene::key] WorldStats not initialized properly");
@@ -551,10 +619,12 @@ bool Scene::clickDown(const AsylumEvent &evt) {
} else if (player->getStatus() != kActorStatusDisabled) {
player->changeStatus(kActorStatusWalking);
}
+
+ _rightButtonDown = true;
break;
case Common::EVENT_LBUTTONDOWN:
- if (getCursor()->getState() & kCursorStateRight)
+ if (_rightButtonDown || _keyState)
break;
if (getSpeech()->getSoundResourceId())
@@ -713,6 +783,37 @@ void Scene::updateMouse() {
ActorDirection newDirection = kDirectionInvalid;
+ if (_keyState) {
+ if (_keyState & kWalkLeft) {
+ if (_keyState & kWalkUp) {
+ newDirection = kDirectionNW;
+ } else if (_keyState & kWalkDown) {
+ newDirection = kDirectionSW;
+ } else {
+ newDirection = kDirectionW;
+ }
+ } else if (_keyState & kWalkRight) {
+ if (_keyState & kWalkUp) {
+ newDirection = kDirectionNE;
+ } else if (_keyState & kWalkDown) {
+ newDirection = kDirectionSE;
+ } else {
+ newDirection = kDirectionE;
+ }
+ } else if (_keyState & kWalkUp) {
+ newDirection = kDirectionN;
+ } else if (_keyState & kWalkDown) {
+ newDirection = kDirectionS;
+ }
+
+ updateCursor(newDirection, actorRect);
+
+ if (newDirection >= kDirectionN)
+ if (player->getStatus() == kActorStatusWalking || player->getStatus() == kActorStatusWalking2)
+ player->changeDirection(newDirection);
+ return;
+ }
+
if (mouse.x < actorRect.left) {
if (mouse.y >= actorRect.top) {
if (mouse.y > actorRect.bottom) {
@@ -1158,7 +1259,7 @@ void Scene::updateCursor(ActorDirection direction, const Common::Rect &rect) {
return;
}
- if (getCursor()->getState() & kCursorStateRight) {
+ if (_rightButtonDown || _keyState) {
if (player->getStatus() == kActorStatusWalking || player->getStatus() == kActorStatusWalking2) {
if (direction >= kDirectionN) {
diff --git a/engines/asylum/views/scene.h b/engines/asylum/views/scene.h
index f769066ccdc..e6112bfafef 100644
--- a/engines/asylum/views/scene.h
+++ b/engines/asylum/views/scene.h
@@ -75,6 +75,13 @@ enum ActionAreaType {
kActionAreaType2 = 2
};
+enum KeyDirection {
+ kWalkUp = 1,
+ kWalkDown = 2,
+ kWalkLeft = 4,
+ kWalkRight = 8
+};
+
class Scene : public EventHandler {
public:
Scene(AsylumEngine *engine);
@@ -224,12 +231,16 @@ private:
bool _debugShowVersion;
+ byte _keyState;
+ bool _rightButtonDown;
+
//////////////////////////////////////////////////////////////////////////
// Message handling
void activate();
bool init();
bool update();
- bool action(AsylumAction a);
+ bool actionDown(AsylumAction a);
+ bool actionUp(AsylumAction a);
bool key(const AsylumEvent &evt);
bool clickDown(const AsylumEvent &evt);
Commit: 3922c71287657ca9f5d9dbd21964e2e4c677c87d
https://github.com/scummvm/scummvm/commit/3922c71287657ca9f5d9dbd21964e2e4c677c87d
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2024-06-26T10:28:09+03:00
Commit Message:
ASYLUM: Use keymapper actions for the resource viewer
Changed paths:
engines/asylum/asylum.cpp
engines/asylum/asylum.h
engines/asylum/metaengine.cpp
engines/asylum/shared.h
engines/asylum/views/resviewer.cpp
engines/asylum/views/resviewer.h
engines/asylum/views/scene.cpp
diff --git a/engines/asylum/asylum.cpp b/engines/asylum/asylum.cpp
index dbc3d21c493..7dcf7b9627d 100644
--- a/engines/asylum/asylum.cpp
+++ b/engines/asylum/asylum.cpp
@@ -55,6 +55,9 @@
namespace Asylum {
+const char *const engineKeyMapId = "asylum";
+const char *const resviewerKeyMapId = "asylum-resviewer";
+
AsylumEngine::AsylumEngine(OSystem *system, const ADGameDescription *gd) : Engine(system), _gameDescription(gd),
_cursor(nullptr), _encounter(nullptr), _menu(nullptr), _resource(nullptr), _savegame(nullptr),
_scene(nullptr), _screen(nullptr), _script(nullptr), _special(nullptr), _speech(nullptr), _sound(nullptr), _text(nullptr),
diff --git a/engines/asylum/asylum.h b/engines/asylum/asylum.h
index 14aabbb74df..57f674cf8b4 100644
--- a/engines/asylum/asylum.h
+++ b/engines/asylum/asylum.h
@@ -67,6 +67,9 @@ class Sound;
class Text;
class VideoPlayer;
+extern const char *const engineKeyMapId;
+extern const char *const resviewerKeyMapId;
+
class AsylumEngine: public Engine, public Common::Serializable {
protected:
// Engine APIs
diff --git a/engines/asylum/metaengine.cpp b/engines/asylum/metaengine.cpp
index e8860f55bbb..833a72d7ab3 100644
--- a/engines/asylum/metaengine.cpp
+++ b/engines/asylum/metaengine.cpp
@@ -192,7 +192,82 @@ Common::KeymapArray AsylumMetaEngine::initKeymaps(const char *target) const {
act->addDefaultInputMapping("JOY_RIGHT");
engineKeyMap->addAction(act);
- return Keymap::arrayOf(engineKeyMap);
+ Keymap *resviewerKeyMap = new Keymap(Keymap::kKeymapTypeGame, "asylum-resviewer", "Sanitarium - Resource viewer");
+ resviewerKeyMap->setEnabled(false);
+
+ act = new Action(kStandardActionMoveUp, _("Move up"));
+ act->setCustomEngineActionEvent(kAsylumActionMoveUp);
+ act->addDefaultInputMapping("UP");
+ act->addDefaultInputMapping("JOY_UP");
+ act->allowKbdRepeats();
+ resviewerKeyMap->addAction(act);
+
+ act = new Action(kStandardActionMoveDown, _("Move down"));
+ act->setCustomEngineActionEvent(kAsylumActionMoveDown);
+ act->addDefaultInputMapping("DOWN");
+ act->addDefaultInputMapping("JOY_DOWN");
+ act->allowKbdRepeats();
+ resviewerKeyMap->addAction(act);
+
+ act = new Action(kStandardActionMoveLeft, _("Move left"));
+ act->setCustomEngineActionEvent(kAsylumActionMoveLeft);
+ act->addDefaultInputMapping("LEFT");
+ act->addDefaultInputMapping("JOY_LEFT");
+ act->allowKbdRepeats();
+ resviewerKeyMap->addAction(act);
+
+ act = new Action(kStandardActionMoveRight, _("Move right"));
+ act->setCustomEngineActionEvent(kAsylumActionMoveRight);
+ act->addDefaultInputMapping("RIGHT");
+ act->addDefaultInputMapping("JOY_RIGHT");
+ act->allowKbdRepeats();
+ resviewerKeyMap->addAction(act);
+
+ act = new Action("ANIMATE", _("Toggle animation on/off"));
+ act->setCustomEngineActionEvent(kAsylumActionAnimate);
+ act->addDefaultInputMapping("RETURN");
+ act->addDefaultInputMapping("JOY_A");
+ resviewerKeyMap->addAction(act);
+
+ act = new Action("CANCEL", _("Return to gameplay"));
+ act->setCustomEngineActionEvent(kAsylumActionShowMenu);
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("JOY_B");
+ resviewerKeyMap->addAction(act);
+
+ act = new Action("PREVRESOURCE", _("Previous resource"));
+ act->setCustomEngineActionEvent(kAsylumActionPreviousResource);
+ act->addDefaultInputMapping("BACKSPACE");
+ act->addDefaultInputMapping("JOY_LEFT_SHOULDER");
+ act->allowKbdRepeats();
+ resviewerKeyMap->addAction(act);
+
+ act = new Action("NEXTRESOURCE", _("Next resource"));
+ act->setCustomEngineActionEvent(kAsylumActionNextResource);
+ act->addDefaultInputMapping("SPACE");
+ act->addDefaultInputMapping("JOY_RIGHT_SHOULDER");
+ act->allowKbdRepeats();
+ resviewerKeyMap->addAction(act);
+
+ act = new Action("PREVPALETTE", _("Previous palette"));
+ act->setCustomEngineActionEvent(kAsylumActionPreviousPalette);
+ act->addDefaultInputMapping("PAGEUP");
+ act->addDefaultInputMapping("JOY_LEFT_TRIGGER");
+ act->allowKbdRepeats();
+ resviewerKeyMap->addAction(act);
+
+ act = new Action("NEXTPALETTE", _("Next palette"));
+ act->setCustomEngineActionEvent(kAsylumActionNextPalette);
+ act->addDefaultInputMapping("PAGEDOWN");
+ act->addDefaultInputMapping("JOY_RIGHT_TRIGGER");
+ act->allowKbdRepeats();
+ resviewerKeyMap->addAction(act);
+
+ KeymapArray keymaps(2);
+ keymaps[0] = engineKeyMap;
+ keymaps[1] = resviewerKeyMap;
+
+ return keymaps;
}
const Common::AchievementDescriptionList *AsylumMetaEngine::getAchievementDescriptionList() const {
diff --git a/engines/asylum/shared.h b/engines/asylum/shared.h
index 11302ce5540..65d69795776 100644
--- a/engines/asylum/shared.h
+++ b/engines/asylum/shared.h
@@ -884,7 +884,12 @@ enum AsylumAction {
kAsylumActionMoveUp,
kAsylumActionMoveDown,
kAsylumActionMoveRight,
- kAsylumActionMoveLeft
+ kAsylumActionMoveLeft,
+ kAsylumActionNextResource,
+ kAsylumActionPreviousResource,
+ kAsylumActionNextPalette,
+ kAsylumActionPreviousPalette,
+ kAsylumActionAnimate
};
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/asylum/views/resviewer.cpp b/engines/asylum/views/resviewer.cpp
index 102973b065d..792a239a596 100644
--- a/engines/asylum/views/resviewer.cpp
+++ b/engines/asylum/views/resviewer.cpp
@@ -28,6 +28,9 @@
#include "asylum/asylum.h"
#include "asylum/respack.h"
+#include "backends/keymapper/keymap.h"
+#include "backends/keymapper/keymapper.h"
+
namespace Asylum {
#define SCROLL_STEP 10
@@ -70,6 +73,9 @@ ResourceViewer::ResourceViewer(AsylumEngine *engine) : _vm(engine), _resource(_v
_resPack = -1;
_paletteIndex = 0;
_animate = true;
+
+ Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
+ _keymap = keymapper->getKeymap(resviewerKeyMapId);
}
bool ResourceViewer::setResourceId(ResourceId resourceId) {
@@ -162,12 +168,16 @@ void ResourceViewer::update() {
getScreen()->copyBackBufferToScreen();
}
-void ResourceViewer::key(const AsylumEvent &evt) {
- switch (evt.kbd.keycode) {
+void ResourceViewer::action(const AsylumEvent &evt) {
+ switch ((AsylumAction)evt.customType) {
default:
break;
- case Common::KEYCODE_SPACE:
+ case kAsylumActionShowMenu:
+ _vm->switchEventHandler(_handler);
+ break;
+
+ case kAsylumActionNextResource:
if (RESOURCE_INDEX(_resourceId) < resPackSizes[_resPack] - 1) {
int i = 1;
do {
@@ -178,7 +188,7 @@ void ResourceViewer::key(const AsylumEvent &evt) {
}
break;
- case Common::KEYCODE_BACKSPACE:
+ case kAsylumActionPreviousResource:
if (RESOURCE_INDEX(_resourceId)) {
int i = 0;
do {
@@ -189,17 +199,17 @@ void ResourceViewer::key(const AsylumEvent &evt) {
}
break;
- case Common::KEYCODE_RETURN:
+ case kAsylumActionAnimate:
_animate = !_animate;
break;
- case Common::KEYCODE_UP:
- case Common::KEYCODE_DOWN:
- case Common::KEYCODE_RIGHT:
- case Common::KEYCODE_LEFT:
+ case kAsylumActionMoveUp:
+ case kAsylumActionMoveDown:
+ case kAsylumActionMoveRight:
+ case kAsylumActionMoveLeft:
if (_scroll) {
int16 x = _x, y = _y;
- int dir = (int)(evt.kbd.keycode - Common::KEYCODE_UP);
+ int dir = (int)(evt.customType - kAsylumActionMoveUp);
if (dir < 2)
y -= SCROLL_STEP * (2 * dir - 1);
@@ -213,12 +223,12 @@ void ResourceViewer::key(const AsylumEvent &evt) {
}
break;
- case Common::KEYCODE_PAGEUP:
+ case kAsylumActionPreviousPalette:
if (_paletteIndex)
_paletteIndex = _paletteIndex - 1;
break;
- case Common::KEYCODE_PAGEDOWN:
+ case kAsylumActionNextPalette:
if (_paletteIndex < 8 && paletteIds[_resPack][_paletteIndex + 1])
_paletteIndex = _paletteIndex + 1;
break;
@@ -230,17 +240,20 @@ bool ResourceViewer::handleEvent(const AsylumEvent &evt) {
default:
break;
- case EVENT_ASYLUM_UPDATE:
- update();
+ case EVENT_ASYLUM_INIT:
+ _keymap->setEnabled(true);
+ return true;
+
+ case EVENT_ASYLUM_DEINIT:
+ _keymap->setEnabled(false);
return true;
- case Common::EVENT_KEYDOWN:
- key(evt);
+ case EVENT_ASYLUM_UPDATE:
+ update();
return true;
case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
- if ((AsylumAction)evt.customType == kAsylumActionShowMenu)
- _vm->switchEventHandler(_handler);
+ action(evt);
return true;
}
diff --git a/engines/asylum/views/resviewer.h b/engines/asylum/views/resviewer.h
index a5a39512079..5af60b01931 100644
--- a/engines/asylum/views/resviewer.h
+++ b/engines/asylum/views/resviewer.h
@@ -27,6 +27,10 @@
#include "asylum/eventhandler.h"
#include "asylum/shared.h"
+namespace Common {
+class Keymap;
+}
+
namespace Asylum {
class AsylumEngine;
@@ -43,6 +47,7 @@ public:
private:
AsylumEngine *_vm;
EventHandler *_handler;
+ Common::Keymap *_keymap;
ResourceId _resourceId;
GraphicResource _resource;
int _frameIndex;
@@ -59,7 +64,7 @@ private:
void drawPalette();
void drawResource();
- void key(const AsylumEvent &evt);
+ void action(const AsylumEvent &evt);
void update();
};
diff --git a/engines/asylum/views/scene.cpp b/engines/asylum/views/scene.cpp
index e3e56be1b51..df5a6df6531 100644
--- a/engines/asylum/views/scene.cpp
+++ b/engines/asylum/views/scene.cpp
@@ -508,6 +508,8 @@ bool Scene::actionDown(AsylumAction a) {
_keyState |= kWalkRight;
break;
+ default:
+ break;
}
return true;
Commit: c08d7e31935c590ae345cba7aa08723f8d7adb70
https://github.com/scummvm/scummvm/commit/c08d7e31935c590ae345cba7aa08723f8d7adb70
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2024-06-26T10:28:09+03:00
Commit Message:
ASYLUM: Unify cancel event handling for puzzles and encounters
Changed paths:
engines/asylum/puzzles/board.cpp
engines/asylum/puzzles/board.h
engines/asylum/puzzles/boardsalvation.cpp
engines/asylum/puzzles/boardsalvation.h
engines/asylum/puzzles/clock.cpp
engines/asylum/puzzles/clock.h
engines/asylum/puzzles/fisherman.cpp
engines/asylum/puzzles/fisherman.h
engines/asylum/puzzles/hivecontrol.cpp
engines/asylum/puzzles/hivecontrol.h
engines/asylum/puzzles/hivemachine.cpp
engines/asylum/puzzles/hivemachine.h
engines/asylum/puzzles/lock.cpp
engines/asylum/puzzles/lock.h
engines/asylum/puzzles/morguedoor.cpp
engines/asylum/puzzles/morguedoor.h
engines/asylum/puzzles/pipes.cpp
engines/asylum/puzzles/pipes.h
engines/asylum/puzzles/puzzle.cpp
engines/asylum/puzzles/puzzle.h
engines/asylum/puzzles/tictactoe.cpp
engines/asylum/puzzles/tictactoe.h
engines/asylum/puzzles/timemachine.cpp
engines/asylum/puzzles/timemachine.h
engines/asylum/puzzles/vcr.cpp
engines/asylum/puzzles/vcr.h
engines/asylum/puzzles/wheel.cpp
engines/asylum/puzzles/wheel.h
engines/asylum/puzzles/writings.cpp
engines/asylum/puzzles/writings.h
engines/asylum/resources/encounters.cpp
engines/asylum/resources/encounters.h
diff --git a/engines/asylum/puzzles/board.cpp b/engines/asylum/puzzles/board.cpp
index 75e257cace8..9a8f382b62c 100644
--- a/engines/asylum/puzzles/board.cpp
+++ b/engines/asylum/puzzles/board.cpp
@@ -136,7 +136,7 @@ void PuzzleBoard::updateScreen() {
}
}
-bool PuzzleBoard::mouseRightDown(const AsylumEvent &) {
+bool PuzzleBoard::exitPuzzle() {
if (!stopSound()) {
getScreen()->clear();
_vm->switchEventHandler(getScene());
diff --git a/engines/asylum/puzzles/board.h b/engines/asylum/puzzles/board.h
index 27bb487db80..78bf9657b46 100644
--- a/engines/asylum/puzzles/board.h
+++ b/engines/asylum/puzzles/board.h
@@ -78,14 +78,14 @@ protected:
bool stopSound();
void checkSlots();
-private:
//////////////////////////////////////////////////////////////////////////
// Event Handling
//////////////////////////////////////////////////////////////////////////
bool init(const AsylumEvent &evt);
bool activate(const AsylumEvent &evt) { return updateScreen(), true; }
- virtual bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
+private:
//////////////////////////////////////////////////////////////////////////
// Helpers
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/asylum/puzzles/boardsalvation.cpp b/engines/asylum/puzzles/boardsalvation.cpp
index 0af99ade72f..a31699df64b 100644
--- a/engines/asylum/puzzles/boardsalvation.cpp
+++ b/engines/asylum/puzzles/boardsalvation.cpp
@@ -203,11 +203,10 @@ bool PuzzleBoardSalvation::mouseLeftDown(const AsylumEvent &) {
return true;
}
-bool PuzzleBoardSalvation::mouseRightDown(const AsylumEvent &) {
+bool PuzzleBoardSalvation::exitPuzzle() {
if (!stopSound()) {
checkANALText();
- getScreen()->clear();
- _vm->switchEventHandler(getScene());
+ return PuzzleBoard::exitPuzzle();
}
return true;
diff --git a/engines/asylum/puzzles/boardsalvation.h b/engines/asylum/puzzles/boardsalvation.h
index 6161b219de5..47ea97aeb10 100644
--- a/engines/asylum/puzzles/boardsalvation.h
+++ b/engines/asylum/puzzles/boardsalvation.h
@@ -40,7 +40,7 @@ private:
// Event Handling
//////////////////////////////////////////////////////////////////////////
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/clock.cpp b/engines/asylum/puzzles/clock.cpp
index 561c8417cf5..f57964d47d6 100644
--- a/engines/asylum/puzzles/clock.cpp
+++ b/engines/asylum/puzzles/clock.cpp
@@ -112,8 +112,7 @@ void PuzzleClock::updateScreen() {
_vm->switchEventHandler(getScene());
} else {
if (_vm->isGameFlagSet(kGameFlag511)) {
- AsylumEvent evt;
- mouseRightDown(evt);
+ exitPuzzle();
}
}
}
@@ -134,7 +133,7 @@ bool PuzzleClock::mouseLeftDown(const AsylumEvent &) {
return true;
}
-bool PuzzleClock::mouseRightDown(const AsylumEvent &) {
+bool PuzzleClock::exitPuzzle() {
setFlag();
_rightButtonClicked = true;
diff --git a/engines/asylum/puzzles/clock.h b/engines/asylum/puzzles/clock.h
index be4e1fd6e68..b0909821910 100644
--- a/engines/asylum/puzzles/clock.h
+++ b/engines/asylum/puzzles/clock.h
@@ -49,7 +49,7 @@ private:
bool init(const AsylumEvent &evt);
void updateScreen();
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/fisherman.cpp b/engines/asylum/puzzles/fisherman.cpp
index 12081ef5c2f..596e068211d 100644
--- a/engines/asylum/puzzles/fisherman.cpp
+++ b/engines/asylum/puzzles/fisherman.cpp
@@ -165,7 +165,7 @@ bool PuzzleFisherman::mouseLeftDown(const AsylumEvent &evt) {
return true;
}
-bool PuzzleFisherman::mouseRightDown(const AsylumEvent &) {
+bool PuzzleFisherman::exitPuzzle() {
getCursor()->hide();
getSharedData()->setFlag(kFlag1, true);
getScreen()->stopPaletteFade(0, 0, 0);
diff --git a/engines/asylum/puzzles/fisherman.h b/engines/asylum/puzzles/fisherman.h
index 81e6e6baec2..2ef87fba4f7 100644
--- a/engines/asylum/puzzles/fisherman.h
+++ b/engines/asylum/puzzles/fisherman.h
@@ -49,9 +49,8 @@ private:
//////////////////////////////////////////////////////////////////////////
bool init(const AsylumEvent &evt);
void updateScreen();
- bool key(const AsylumEvent &evt) { return keyExit(evt); }
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/hivecontrol.cpp b/engines/asylum/puzzles/hivecontrol.cpp
index 29634c50bbf..f58f111b408 100644
--- a/engines/asylum/puzzles/hivecontrol.cpp
+++ b/engines/asylum/puzzles/hivecontrol.cpp
@@ -274,7 +274,7 @@ bool PuzzleHiveControl::mouseLeftDown(const AsylumEvent &) {
return true;
}
-bool PuzzleHiveControl::mouseRightDown(const AsylumEvent &) {
+bool PuzzleHiveControl::exitPuzzle() {
if (_leverDelta) {
_leverDelta = 0;
_prevLeverPosition = _leverPosition;
@@ -451,8 +451,7 @@ void PuzzleHiveControl::updateScreen() {
if (_counter < 30 || getSound()->isPlaying(getWorld()->graphicResourceIds[83])) {
++_counter;
} else {
- AsylumEvent evt;
- mouseRightDown(evt);
+ exitPuzzle();
getCursor()->show();
}
}
diff --git a/engines/asylum/puzzles/hivecontrol.h b/engines/asylum/puzzles/hivecontrol.h
index e2a96eebf4b..5f42e673025 100644
--- a/engines/asylum/puzzles/hivecontrol.h
+++ b/engines/asylum/puzzles/hivecontrol.h
@@ -104,7 +104,7 @@ private:
bool init(const AsylumEvent &evt);
void updateScreen();
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/hivemachine.cpp b/engines/asylum/puzzles/hivemachine.cpp
index 1e6dff0f5b8..65f5843605e 100644
--- a/engines/asylum/puzzles/hivemachine.cpp
+++ b/engines/asylum/puzzles/hivemachine.cpp
@@ -94,7 +94,7 @@ bool PuzzleHiveMachine::mouseLeftDown(const AsylumEvent &) {
return true;
}
-bool PuzzleHiveMachine::mouseRightDown(const AsylumEvent &) {
+bool PuzzleHiveMachine::exitPuzzle() {
_notesNumber = 0;
_melody.clear();
diff --git a/engines/asylum/puzzles/hivemachine.h b/engines/asylum/puzzles/hivemachine.h
index 0c8ff7e05a6..43516aa115f 100644
--- a/engines/asylum/puzzles/hivemachine.h
+++ b/engines/asylum/puzzles/hivemachine.h
@@ -58,7 +58,7 @@ private:
//////////////////////////////////////////////////////////////////////////
bool init(const AsylumEvent &evt);
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/lock.cpp b/engines/asylum/puzzles/lock.cpp
index a1262a38243..54ad0d19ccd 100644
--- a/engines/asylum/puzzles/lock.cpp
+++ b/engines/asylum/puzzles/lock.cpp
@@ -220,8 +220,10 @@ bool PuzzleLock::mouseLeftDown(const AsylumEvent &evt) {
return true;
}
-bool PuzzleLock::mouseRightDown(const AsylumEvent &) {
- exitPuzzle();
+bool PuzzleLock::exitPuzzle() {
+ getScreen()->clear();
+
+ _vm->switchEventHandler(getScene());
return true;
}
diff --git a/engines/asylum/puzzles/lock.h b/engines/asylum/puzzles/lock.h
index 39f5286f597..b874bc47b4b 100644
--- a/engines/asylum/puzzles/lock.h
+++ b/engines/asylum/puzzles/lock.h
@@ -47,9 +47,8 @@ private:
//////////////////////////////////////////////////////////////////////////
bool init(const AsylumEvent &evt);
bool update(const AsylumEvent &evt);
- bool key(const AsylumEvent &evt) { return keyExit(evt); }
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/morguedoor.cpp b/engines/asylum/puzzles/morguedoor.cpp
index 3c54a16013d..8bfdcc27076 100644
--- a/engines/asylum/puzzles/morguedoor.cpp
+++ b/engines/asylum/puzzles/morguedoor.cpp
@@ -205,7 +205,7 @@ bool PuzzleMorgueDoor::mouseLeftDown(const AsylumEvent &evt) {
return true;
}
-bool PuzzleMorgueDoor::mouseRightUp(const AsylumEvent &) {
+bool PuzzleMorgueDoor::exitPuzzle() {
getCursor()->hide();
getSharedData()->setFlag(kFlag1, true);
getScreen()->stopPaletteFade(0, 0, 0);
diff --git a/engines/asylum/puzzles/morguedoor.h b/engines/asylum/puzzles/morguedoor.h
index 1796dad596f..97251f76a33 100644
--- a/engines/asylum/puzzles/morguedoor.h
+++ b/engines/asylum/puzzles/morguedoor.h
@@ -75,9 +75,8 @@ private:
//////////////////////////////////////////////////////////////////////////
bool init(const AsylumEvent &evt);
void updateScreen();
- bool key(const AsylumEvent &evt) { return keyExit(evt); }
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightUp(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/pipes.cpp b/engines/asylum/puzzles/pipes.cpp
index 43b93614e7b..8df08830ac7 100644
--- a/engines/asylum/puzzles/pipes.cpp
+++ b/engines/asylum/puzzles/pipes.cpp
@@ -462,7 +462,7 @@ bool PuzzlePipes::mouseLeftDown(const AsylumEvent &) {
return true;
}
-bool PuzzlePipes::mouseRightDown(const AsylumEvent &) {
+bool PuzzlePipes::exitPuzzle() {
getScreen()->clear();
getSound()->stop(getWorld()->graphicResourceIds[41]);
getSound()->setMusicVolume(_previousMusicVolume);
diff --git a/engines/asylum/puzzles/pipes.h b/engines/asylum/puzzles/pipes.h
index ef0407c74b9..1db54e0c005 100644
--- a/engines/asylum/puzzles/pipes.h
+++ b/engines/asylum/puzzles/pipes.h
@@ -187,7 +187,7 @@ private:
bool init(const AsylumEvent &evt);
void updateScreen();
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/puzzle.cpp b/engines/asylum/puzzles/puzzle.cpp
index a2bad5d7267..09bb58a2a32 100644
--- a/engines/asylum/puzzles/puzzle.cpp
+++ b/engines/asylum/puzzles/puzzle.cpp
@@ -58,9 +58,6 @@ bool Puzzle::handleEvent(const AsylumEvent &evt) {
case EVENT_ASYLUM_UPDATE:
return update(evt);
- case Common::EVENT_KEYDOWN:
- return key(evt);
-
case Common::EVENT_LBUTTONDOWN:
return mouseLeftDown(evt);
@@ -68,13 +65,8 @@ bool Puzzle::handleEvent(const AsylumEvent &evt) {
return mouseLeftUp(evt);
case Common::EVENT_RBUTTONDOWN:
- return mouseRightDown(evt);
-
- case Common::EVENT_RBUTTONUP:
- return mouseRightUp(evt);
-
case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
- return keyExit(evt);
+ return exitPuzzle();
}
return false;
@@ -107,19 +99,6 @@ bool Puzzle::update(const AsylumEvent &evt) {
return true;
}
-bool Puzzle::keyExit(const AsylumEvent &evt) {
- _vm->switchEventHandler(getScene());
-
- return true;
-}
-
-
-void Puzzle::exitPuzzle() {
- getScreen()->clear();
-
- _vm->switchEventHandler(getScene());
-}
-
//////////////////////////////////////////////////////////////////////////
// Hit test functions
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/asylum/puzzles/puzzle.h b/engines/asylum/puzzles/puzzle.h
index a98716f610e..74e36c1de12 100644
--- a/engines/asylum/puzzles/puzzle.h
+++ b/engines/asylum/puzzles/puzzle.h
@@ -59,14 +59,10 @@ protected:
virtual void updateScreen() {};
virtual void updateCursor() {};
virtual bool activate(const AsylumEvent &evt) { return true; }
- virtual bool key(const AsylumEvent &evt) { return true; }
virtual bool mouseLeftUp(const AsylumEvent &evt) { return true; }
virtual bool mouseLeftDown(const AsylumEvent &evt) { return true; }
- virtual bool mouseRightUp(const AsylumEvent &evt) { return true; }
- virtual bool mouseRightDown(const AsylumEvent &evt) { return true; }
- bool keyExit(const AsylumEvent &evt);
- void exitPuzzle();
+ virtual bool exitPuzzle() = 0;
//////////////////////////////////////////////////////////////////////////
// Hit test functions
diff --git a/engines/asylum/puzzles/tictactoe.cpp b/engines/asylum/puzzles/tictactoe.cpp
index b98d217c2d0..787f2d095a6 100644
--- a/engines/asylum/puzzles/tictactoe.cpp
+++ b/engines/asylum/puzzles/tictactoe.cpp
@@ -171,8 +171,10 @@ bool PuzzleTicTacToe::mouseLeftDown(const AsylumEvent &evt) {
return true;
}
-bool PuzzleTicTacToe::mouseRightDown(const AsylumEvent &) {
- exitPuzzle();
+bool PuzzleTicTacToe::exitPuzzle() {
+ getScreen()->clear();
+
+ _vm->switchEventHandler(getScene());
return true;
}
diff --git a/engines/asylum/puzzles/tictactoe.h b/engines/asylum/puzzles/tictactoe.h
index e026061f716..9a2df725018 100644
--- a/engines/asylum/puzzles/tictactoe.h
+++ b/engines/asylum/puzzles/tictactoe.h
@@ -59,9 +59,8 @@ private:
//////////////////////////////////////////////////////////////////////////
bool init(const AsylumEvent &evt);
void updateScreen();
- bool key(const AsylumEvent &evt) { return keyExit(evt); }
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Init & update
diff --git a/engines/asylum/puzzles/timemachine.cpp b/engines/asylum/puzzles/timemachine.cpp
index d9669854561..0e0517ca4e3 100644
--- a/engines/asylum/puzzles/timemachine.cpp
+++ b/engines/asylum/puzzles/timemachine.cpp
@@ -231,7 +231,7 @@ bool PuzzleTimeMachine::mouseLeftDown(const AsylumEvent &evt) {
return true;
}
-bool PuzzleTimeMachine::mouseRightDown(const AsylumEvent &) {
+bool PuzzleTimeMachine::exitPuzzle() {
getCursor()->hide();
getSharedData()->setFlag(kFlag1, true);
getScreen()->stopPaletteFade(0, 0, 0);
diff --git a/engines/asylum/puzzles/timemachine.h b/engines/asylum/puzzles/timemachine.h
index 712ec7596d8..78e37b50ae7 100644
--- a/engines/asylum/puzzles/timemachine.h
+++ b/engines/asylum/puzzles/timemachine.h
@@ -60,9 +60,8 @@ private:
//////////////////////////////////////////////////////////////////////////
bool init(const AsylumEvent &evt);
void updateScreen();
- bool key(const AsylumEvent &evt) { return keyExit(evt); }
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/vcr.cpp b/engines/asylum/puzzles/vcr.cpp
index 4dd62f21ce3..a30cd68d263 100644
--- a/engines/asylum/puzzles/vcr.cpp
+++ b/engines/asylum/puzzles/vcr.cpp
@@ -85,16 +85,6 @@ bool PuzzleVCR::init(const AsylumEvent &) {
return true;
}
-bool PuzzleVCR::key(const AsylumEvent &evt) {
- getSound()->stop(getWorld()->graphicResourceIds[47]);
- getScreen()->clearGraphicsInQueue();
- getScreen()->clear();
-
- _vm->switchEventHandler(getScene());
-
- return true;
-}
-
bool PuzzleVCR::mouseLeftDown(const AsylumEvent &evt) {
if (_isAccomplished)
return true;
@@ -259,12 +249,11 @@ bool PuzzleVCR::mouseLeftUp(const AsylumEvent &) {
return true;
}
-bool PuzzleVCR::mouseRightDown(const AsylumEvent &) {
+bool PuzzleVCR::exitPuzzle() {
+ getSound()->stop(getWorld()->graphicResourceIds[47]);
getScreen()->clearGraphicsInQueue();
getScreen()->clear();
- getSound()->stop(getWorld()->graphicResourceIds[47]);
-
_vm->switchEventHandler(getScene());
return true;
diff --git a/engines/asylum/puzzles/vcr.h b/engines/asylum/puzzles/vcr.h
index fc36cc38d65..96c95ba7747 100644
--- a/engines/asylum/puzzles/vcr.h
+++ b/engines/asylum/puzzles/vcr.h
@@ -105,10 +105,9 @@ private:
// Event Handling
//////////////////////////////////////////////////////////////////////////
bool init(const AsylumEvent &evt);
- bool key(const AsylumEvent &evt);
bool mouseLeftDown(const AsylumEvent &evt);
bool mouseLeftUp(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Drawing
diff --git a/engines/asylum/puzzles/wheel.cpp b/engines/asylum/puzzles/wheel.cpp
index 6578e70d174..1f1b78826ad 100644
--- a/engines/asylum/puzzles/wheel.cpp
+++ b/engines/asylum/puzzles/wheel.cpp
@@ -286,7 +286,7 @@ bool PuzzleWheel::mouseLeftDown(const AsylumEvent &) {
return true;
}
-bool PuzzleWheel::mouseRightDown(const AsylumEvent &) {
+bool PuzzleWheel::exitPuzzle() {
getScreen()->clear();
_vm->switchEventHandler(getScene());
diff --git a/engines/asylum/puzzles/wheel.h b/engines/asylum/puzzles/wheel.h
index a9bd110015e..dc479f0deaa 100644
--- a/engines/asylum/puzzles/wheel.h
+++ b/engines/asylum/puzzles/wheel.h
@@ -56,7 +56,7 @@ private:
bool init(const AsylumEvent &evt);
void updateScreen();
bool mouseLeftDown(const AsylumEvent &evt);
- bool mouseRightDown(const AsylumEvent &evt);
+ bool exitPuzzle();
//////////////////////////////////////////////////////////////////////////
// Helpers
diff --git a/engines/asylum/puzzles/writings.cpp b/engines/asylum/puzzles/writings.cpp
index 1f4f985841f..9c69cd34630 100644
--- a/engines/asylum/puzzles/writings.cpp
+++ b/engines/asylum/puzzles/writings.cpp
@@ -154,7 +154,7 @@ bool PuzzleWritings::update(const AsylumEvent &) {
return true;
}
-bool PuzzleWritings::mouseRightUp(const AsylumEvent &) {
+bool PuzzleWritings::exitPuzzle() {
getCursor()->hide();
getSharedData()->setFlag(kFlag1, true);
getScreen()->stopPaletteFade(0, 0, 0);
diff --git a/engines/asylum/puzzles/writings.h b/engines/asylum/puzzles/writings.h
index ef2f11eaab8..511e4745368 100644
--- a/engines/asylum/puzzles/writings.h
+++ b/engines/asylum/puzzles/writings.h
@@ -45,8 +45,7 @@ private:
//////////////////////////////////////////////////////////////////////////
bool init(const AsylumEvent &evt);
bool update(const AsylumEvent &evt);
- bool key(const AsylumEvent &evt) { return keyExit(evt); }
- bool mouseRightUp(const AsylumEvent &evt);
+ bool exitPuzzle();
};
} // End of namespace Asylum
diff --git a/engines/asylum/resources/encounters.cpp b/engines/asylum/resources/encounters.cpp
index b0ac812bda4..40b01f94cad 100644
--- a/engines/asylum/resources/encounters.cpp
+++ b/engines/asylum/resources/encounters.cpp
@@ -366,22 +366,16 @@ bool Encounter::handleEvent(const AsylumEvent &evt) {
case EVENT_ASYLUM_UPDATE:
return update();
- case Common::EVENT_KEYDOWN:
- return key(evt);
-
case Common::EVENT_LBUTTONDOWN:
case Common::EVENT_LBUTTONUP:
- case Common::EVENT_RBUTTONDOWN:
- case Common::EVENT_RBUTTONUP:
return mouse(evt);
+ case Common::EVENT_RBUTTONDOWN:
+ return cancel(evt);
+
case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
if ((AsylumAction)evt.customType == kAsylumActionShowMenu) {
- if (!isSpeaking()
- && _isDialogOpen
- && !getSpeech()->getTextData()
- && !getSpeech()->getTextDataPos())
- _shouldCloseDialog = true;
+ return cancel(evt);
}
return true;
}
@@ -553,20 +547,20 @@ bool Encounter::mouse(const AsylumEvent &evt) {
_data_455BD8 = false;
}
break;
-
-
- case Common::EVENT_RBUTTONDOWN:
- if (!isSpeaking()
- && _isDialogOpen
- && !getSpeech()->getTextData()
- && !getSpeech()->getTextDataPos())
- _shouldCloseDialog = true;
- break;
}
return true;
}
+bool Encounter::cancel(const AsylumEvent &evt) {
+ if (!isSpeaking()
+ && _isDialogOpen
+ && !getSpeech()->getTextData()
+ && !getSpeech()->getTextDataPos())
+ _shouldCloseDialog = true;
+
+ return true;
+}
//////////////////////////////////////////////////////////////////////////
// Variables
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/asylum/resources/encounters.h b/engines/asylum/resources/encounters.h
index 57a030d7d32..070d6a5a425 100644
--- a/engines/asylum/resources/encounters.h
+++ b/engines/asylum/resources/encounters.h
@@ -212,8 +212,8 @@ private:
// Message handling
bool init();
bool update();
- bool key(const AsylumEvent &evt) { return true; }
bool mouse(const AsylumEvent &evt);
+ bool cancel(const AsylumEvent &evt);
//////////////////////////////////////////////////////////////////////////
// Variables
Commit: a98eb7b3074e5d113efe6fff2db075735b78d1ab
https://github.com/scummvm/scummvm/commit/a98eb7b3074e5d113efe6fff2db075735b78d1ab
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2024-06-26T10:28:09+03:00
Commit Message:
ASYLUM: Allow skipping cutscenes with any key or joystick button
Changed paths:
engines/asylum/asylum.cpp
engines/asylum/views/insertdisc.cpp
engines/asylum/views/video.cpp
diff --git a/engines/asylum/asylum.cpp b/engines/asylum/asylum.cpp
index 7dcf7b9627d..36bc05d28be 100644
--- a/engines/asylum/asylum.cpp
+++ b/engines/asylum/asylum.cpp
@@ -366,6 +366,8 @@ void AsylumEngine::playIntro() {
switch (ev.type) {
case Common::EVENT_LBUTTONDOWN:
case Common::EVENT_KEYDOWN:
+ case Common::EVENT_JOYBUTTON_DOWN:
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
skip = true;
break;
default:
@@ -409,29 +411,16 @@ void AsylumEngine::handleEvents() {
case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
case Common::EVENT_CUSTOM_ENGINE_ACTION_END:
- // Handle custom actions
- if (_handler)
- _handler->handleEvent(ev);
- break;
-
+ case Common::EVENT_JOYBUTTON_DOWN:
+ case Common::EVENT_JOYBUTTON_UP:
case Common::EVENT_KEYDOWN:
- // Handle key events
- if (_handler)
- _handler->handleEvent(ev);
- break;
-
case Common::EVENT_KEYUP:
- // Handle key events
- if (_handler)
- _handler->handleEvent(ev);
- break;
-
case Common::EVENT_MOUSEMOVE:
case Common::EVENT_LBUTTONDOWN:
case Common::EVENT_LBUTTONUP:
case Common::EVENT_RBUTTONDOWN:
case Common::EVENT_RBUTTONUP:
- // Handle mouse events
+ // Handle events
if (_handler)
_handler->handleEvent(ev);
break;
diff --git a/engines/asylum/views/insertdisc.cpp b/engines/asylum/views/insertdisc.cpp
index 4a3a520f99f..7ddcd0ca4ab 100644
--- a/engines/asylum/views/insertdisc.cpp
+++ b/engines/asylum/views/insertdisc.cpp
@@ -68,7 +68,10 @@ bool InsertDisc::handleEvent(const AsylumEvent &evt) {
update();
return true;
+ case Common::EVENT_LBUTTONDOWN:
case Common::EVENT_KEYDOWN:
+ case Common::EVENT_JOYBUTTON_DOWN:
+ case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
_vm->switchEventHandler(_handler);
return true;
}
diff --git a/engines/asylum/views/video.cpp b/engines/asylum/views/video.cpp
index f44e9264702..013c71dd026 100644
--- a/engines/asylum/views/video.cpp
+++ b/engines/asylum/views/video.cpp
@@ -124,6 +124,7 @@ bool VideoPlayer::handleEvent(const AsylumEvent &evt) {
case Common::EVENT_LBUTTONDOWN:
case Common::EVENT_KEYDOWN:
+ case Common::EVENT_JOYBUTTON_DOWN:
case Common::EVENT_CUSTOM_ENGINE_ACTION_START:
_done = true;
if (!_vm->checkGameVersion("Steam") && !_vm->isAltDemo())
More information about the Scummvm-git-logs
mailing list