[Scummvm-git-logs] scummvm master -> ba76e6f8d58fd147c6dfa75451fc1e4c2aa3f9e7

neuromancer noreply at scummvm.org
Mon Jul 15 10:47:27 UTC 2024


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
27d29b149a FREESCAPE: improve demo support for eclipse in dos
ba76e6f8d5 FREESCAPE: add missing spfx case for eclipse for dos


Commit: 27d29b149a992707a09123e84bc04b72eaff6169
    https://github.com/scummvm/scummvm/commit/27d29b149a992707a09123e84bc04b72eaff6169
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-07-15T12:48:37+02:00

Commit Message:
FREESCAPE: improve demo support for eclipse in dos

Changed paths:
    engines/freescape/demo.cpp
    engines/freescape/freescape.h
    engines/freescape/games/eclipse/dos.cpp
    engines/freescape/games/eclipse/eclipse.cpp
    engines/freescape/movement.cpp


diff --git a/engines/freescape/demo.cpp b/engines/freescape/demo.cpp
index 9cbfbc1ed17..775452d574b 100644
--- a/engines/freescape/demo.cpp
+++ b/engines/freescape/demo.cpp
@@ -193,6 +193,8 @@ int FreescapeEngine::decodeDOSKey(int index) {
 		return Common::KEYCODE_p;
 	case 8:
 		return Common::KEYCODE_l;
+	case 11:
+		return Common::KEYCODE_a;
 	case 30:
 		return Common::KEYCODE_SPACE;
 	case 40:
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 5fb8f610fd2..13b671c1a0d 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -283,6 +283,9 @@ public:
 	void changePlayerHeight(int index);
 	void increaseStepSize();
 	void decreaseStepSize();
+	void changeStepSize();
+
+	void changeAngle();
 	void rise();
 	void lower();
 	bool checkFloor(Math::Vector3d currentPosition);
diff --git a/engines/freescape/games/eclipse/dos.cpp b/engines/freescape/games/eclipse/dos.cpp
index d8bf36d5266..c2a1c6890e4 100644
--- a/engines/freescape/games/eclipse/dos.cpp
+++ b/engines/freescape/games/eclipse/dos.cpp
@@ -171,7 +171,7 @@ void EclipseEngine::drawDOSUI(Graphics::Surface *surface) {
 	Common::String shieldStr = Common::String::format("%d", shield);
 	drawStringInSurface(shieldStr, x, 162, black, redish, surface);
 
-	drawStringInSurface(Common::String('0' + _angleRotationIndex - 3), 79, 135, black, yellow, surface, 'Z' - '$' + 1);
+	drawStringInSurface(Common::String('0' - _angleRotationIndex), 79, 135, black, yellow, surface, 'Z' - '$' + 1);
 	drawStringInSurface(Common::String('3' - _playerStepIndex), 63, 135, black, yellow, surface, 'Z' - '$' + 1);
 	drawStringInSurface(Common::String('7' - _playerHeightNumber), 240, 135, black, yellow, surface, 'Z' - '$' + 1);
 
diff --git a/engines/freescape/games/eclipse/eclipse.cpp b/engines/freescape/games/eclipse/eclipse.cpp
index dee338c105c..cf75b8446a9 100644
--- a/engines/freescape/games/eclipse/eclipse.cpp
+++ b/engines/freescape/games/eclipse/eclipse.cpp
@@ -46,9 +46,9 @@ EclipseEngine::EclipseEngine(OSystem *syst, const ADGameDescription *gd) : Frees
 
 	_playerStepIndex = 2;
 	_playerSteps.clear();
-	_playerSteps.push_back(1);
-	_playerSteps.push_back(10);
-	_playerSteps.push_back(25);
+	_playerSteps.push_back(2);
+	_playerSteps.push_back(30);
+	_playerSteps.push_back(60);
 
 	_angleRotationIndex = 1;
 	_angleRotations.push_back(5);
@@ -358,10 +358,10 @@ void EclipseEngine::pressedKey(const int keycode) {
 		rotate(-_angleRotations[_angleRotationIndex], 0);
 	} else if (keycode == Common::KEYCODE_w) {
 		rotate(_angleRotations[_angleRotationIndex], 0);
+	} else if (keycode == Common::KEYCODE_a) {
+		changeAngle();
 	} else if (keycode == Common::KEYCODE_s) {
-		increaseStepSize();
-	} else if (keycode ==  Common::KEYCODE_x) {
-		decreaseStepSize();
+		changeStepSize();
 	} else if (keycode == Common::KEYCODE_h) {
 		if (_playerHeightNumber == 0)
 			rise();
diff --git a/engines/freescape/movement.cpp b/engines/freescape/movement.cpp
index be51f6c8bb8..a91aefcb0bb 100644
--- a/engines/freescape/movement.cpp
+++ b/engines/freescape/movement.cpp
@@ -212,6 +212,11 @@ void FreescapeEngine::shoot() {
 	executeLocalGlobalConditions(true, false, false); // Only execute "on shot" room/global conditions
 }
 
+void FreescapeEngine::changeAngle() {
+	_angleRotationIndex++;
+	_angleRotationIndex = _angleRotationIndex % int(_angleRotations.size());
+}
+
 void FreescapeEngine::changePlayerHeight(int index) {
 	int scale = _currentArea->getScale();
 
@@ -221,6 +226,11 @@ void FreescapeEngine::changePlayerHeight(int index) {
 	_position.setValue(1, _position.y() + _playerHeight);
 }
 
+void FreescapeEngine::changeStepSize() {
+	_playerStepIndex++;
+	_playerStepIndex = _playerStepIndex % int(_playerSteps.size());
+}
+
 void FreescapeEngine::increaseStepSize() {
 	if (_playerStepIndex == int(_playerSteps.size()) - 1)
 		return;


Commit: ba76e6f8d58fd147c6dfa75451fc1e4c2aa3f9e7
    https://github.com/scummvm/scummvm/commit/ba76e6f8d58fd147c6dfa75451fc1e4c2aa3f9e7
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-07-15T12:48:37+02:00

Commit Message:
FREESCAPE: add missing spfx case for eclipse for dos

Changed paths:
    engines/freescape/language/instruction.cpp


diff --git a/engines/freescape/language/instruction.cpp b/engines/freescape/language/instruction.cpp
index 8e4fee2183f..e6912dbf4bb 100644
--- a/engines/freescape/language/instruction.cpp
+++ b/engines/freescape/language/instruction.cpp
@@ -369,6 +369,8 @@ void FreescapeEngine::executeSPFX(FCLInstruction &instruction) {
 			_currentArea->remapColor(_currentArea->_usualBackgroundColor, _renderMode == Common::kRenderCGA ? 1 : _currentArea->_underFireBackgroundColor);
 		else if (src == 0 && dst == 0)
 			_currentArea->unremapColor(_currentArea->_usualBackgroundColor);
+		else if (src == 15 && dst == 15) // Found in Total Eclipse (DOS)
+			_currentArea->unremapColor(_currentArea->_usualBackgroundColor);
 		else
 			_currentArea->remapColor(src, dst);
 	}




More information about the Scummvm-git-logs mailing list