[Scummvm-git-logs] scummvm master -> 397a73572cfbc81417afff9ee21736f37802543e
neuromancer
noreply at scummvm.org
Fri Mar 24 10:20:00 UTC 2023
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:
397a73572c FREESCAPE: refactored on screen controller code to acept clicks outside the view area
Commit: 397a73572cfbc81417afff9ee21736f37802543e
https://github.com/scummvm/scummvm/commit/397a73572cfbc81417afff9ee21736f37802543e
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-03-24T11:18:29+01:00
Commit Message:
FREESCAPE: refactored on screen controller code to acept clicks outside the view area
Changed paths:
engines/freescape/freescape.cpp
engines/freescape/freescape.h
engines/freescape/games/driller/driller.cpp
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 4911e723dd5..49381e47078 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -501,10 +501,17 @@ void FreescapeEngine::processInput() {
case Common::EVENT_LBUTTONDOWN:
if (_hasFallen)
break;
- if (_viewArea.contains(_crossairPosition))
- shoot();
- else
- onScreenControls(_crossairPosition);
+ mousePos = event.mouse;
+ {
+ bool touchedScreenControls = false;
+
+ #if defined(__ANDROID__) || defined(IPHONE)
+ touchedScreenControls = onScreenControls(mousePos);
+ #endif
+
+ if (!touchedScreenControls && _viewArea.contains(_crossairPosition))
+ shoot();
+ }
break;
default:
@@ -513,7 +520,8 @@ void FreescapeEngine::processInput() {
}
}
-void FreescapeEngine::onScreenControls(Common::Point mouse) {
+bool FreescapeEngine::onScreenControls(Common::Point mouse) {
+ return false;
}
void FreescapeEngine::executeMovementConditions() {
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index daf46137bbc..2219aaba3ec 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -221,7 +221,7 @@ public:
void resetInput();
void generateDemoInput();
virtual void pressedKey(const int keycode);
- virtual void onScreenControls(Common::Point mouse);
+ virtual bool onScreenControls(Common::Point mouse);
void move(CameraMovement direction, uint8 scale, float deltaTime);
virtual void checkIfStillInArea();
void changePlayerHeight(int index);
@@ -485,7 +485,7 @@ private:
void drawCPCUI(Graphics::Surface *surface) override;
void drawC64UI(Graphics::Surface *surface) override;
void drawAmigaAtariSTUI(Graphics::Surface *surface) override;
- void onScreenControls(Common::Point mouse) override;
+ bool onScreenControls(Common::Point mouse) override;
void initAmigaAtari();
void initDOS();
void initZX();
diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index 90a0a65a030..4c6da3eefd0 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -819,32 +819,43 @@ bool DrillerEngine::checkIfGameEnded() {
return false;
}
-void DrillerEngine::onScreenControls(Common::Point mouse) {
- if (_moveFowardArea.contains(mouse))
+bool DrillerEngine::onScreenControls(Common::Point mouse) {
+ if (_moveFowardArea.contains(mouse)) {
move(kForwardMovement, _scaleVector.x(), 20.0);
- else if (_moveLeftArea.contains(mouse))
+ return true;
+ } else if (_moveLeftArea.contains(mouse)) {
move(kLeftMovement, _scaleVector.y(), 20.0);
- else if (_moveRightArea.contains(mouse))
+ return true;
+ } else if (_moveRightArea.contains(mouse)) {
move(kRightMovement, _scaleVector.y(), 20.0);
- else if (_moveBackArea.contains(mouse))
+ return true;
+ } else if (_moveBackArea.contains(mouse)) {
move(kBackwardMovement, _scaleVector.x(), 20.0);
- else if (_moveUpArea.contains(mouse))
+ return true;
+ } else if (_moveUpArea.contains(mouse)) {
rise();
- else if (_moveDownArea.contains(mouse))
+ return true;
+ } else if (_moveDownArea.contains(mouse)) {
lower();
- else if (_deployDrillArea.contains(mouse))
+ return true;
+ } else if (_deployDrillArea.contains(mouse)) {
pressedKey(Common::KEYCODE_d);
- else if (_infoScreenArea.contains(mouse))
+ return true;
+ } else if (_infoScreenArea.contains(mouse)) {
drawInfoMenu();
- else if (_saveGameArea.contains(mouse)) {
+ return true;
+ } else if (_saveGameArea.contains(mouse)) {
_gfx->setViewport(_fullscreenViewArea);
saveGameDialog();
_gfx->setViewport(_viewArea);
+ return true;
} else if (_loadGameArea.contains(mouse)) {
_gfx->setViewport(_fullscreenViewArea);
loadGameDialog();
_gfx->setViewport(_viewArea);
+ return true;
}
+ return false;
}
More information about the Scummvm-git-logs
mailing list