[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