[Scummvm-git-logs] scummvm master -> 8ca34481c9cb4edd69c532495f6842b0cff55fdf

neuromancer noreply at scummvm.org
Wed Nov 9 12:38:52 UTC 2022


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:
8ca34481c9 FREESCAPE: keep track of completed areas in driller to allow to cancel drilling correctly


Commit: 8ca34481c9cb4edd69c532495f6842b0cff55fdf
    https://github.com/scummvm/scummvm/commit/8ca34481c9cb4edd69c532495f6842b0cff55fdf
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-09T13:39:46+01:00

Commit Message:
FREESCAPE: keep track of completed areas in driller to allow to cancel drilling correctly

Changed paths:
    engines/freescape/freescape.h
    engines/freescape/games/driller.cpp


diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 3ba4976e5a1..fd1485893d4 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -312,6 +312,8 @@ public:
 	uint32 _initialProveEnergy;
 	uint32 _initialProveShield;
 
+	StateBits _completeAreas;
+
 	void initGameState() override;
 	bool checkIfGameEnded() override;
 
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index 8f91403cdc5..b4b24550f1b 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -453,11 +453,14 @@ void DrillerEngine::pressedKey(const int keycode) {
 			return;
 		}
 
-		_gameStateVars[32]++; // TODO: save a boolean to indicate if a level is safe or not
 		insertTemporaryMessage(_messagesList[5], _countdown - 4);
 		Common::String successMessage = _messagesList[6];
 		successMessage.replace(0, 4, Common::String::format("%d", int(success)));
 		insertTemporaryMessage(successMessage, _countdown - 6);
+		if (success >= 50.0) {
+			_completeAreas[_currentArea->getAreaID()] = true;
+			_gameStateVars[32]++; // TODO: save a boolean to indicate if a level is safe or not
+		}
 	} else if (keycode == Common::KEYCODE_c) {
 		uint32 gasPocketRadius = _currentArea->_gasPocketRadius;
 		if (gasPocketRadius == 0)
@@ -480,8 +483,10 @@ void DrillerEngine::pressedKey(const int keycode) {
 
 		_gameStateVars[k8bitVariableEnergy] = _gameStateVars[k8bitVariableEnergy] - 5;
 
-		// TODO: check if level is safe and decrement if necessary
-		_gameStateVars[32]--;
+		if (_completeAreas[_currentArea->getAreaID()]) {
+			_completeAreas[_currentArea->getAreaID()] = false;
+			_gameStateVars[32]--;
+		}
 		removeDrill();
 		insertTemporaryMessage(_messagesList[10], _countdown - 2);
 	}
@@ -646,8 +651,10 @@ void DrillerEngine::initGameState() {
 	for (int i = 0; i < k8bitMaxVariable; i++) // TODO: check maximum variable
 		_gameStateVars[i] = 0;
 
-	for (auto &it : _areaMap)
+	for (auto &it : _areaMap) {
 		_gameStateBits[it._key] = 0;
+		_completeAreas[it._key] = 0;
+	}
 
 	_gameStateVars[k8bitVariableEnergy] = _initialProveEnergy;
 	_gameStateVars[k8bitVariableShield] = _initialProveShield;




More information about the Scummvm-git-logs mailing list