[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