[Scummvm-git-logs] scummvm master -> baa71269e47cabb24f433f3c89023486a1463816
neuromancer
noreply at scummvm.org
Sat Nov 12 20:54:33 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:
baa71269e4 FREESCAPE: improve SwapJet opcode implementation and force local/global condition to be executed in rise/lower
Commit: baa71269e47cabb24f433f3c89023486a1463816
https://github.com/scummvm/scummvm/commit/baa71269e47cabb24f433f3c89023486a1463816
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-12T21:55:35+01:00
Commit Message:
FREESCAPE: improve SwapJet opcode implementation and force local/global condition to be executed in rise/lower
Changed paths:
engines/freescape/language/instruction.cpp
engines/freescape/movement.cpp
diff --git a/engines/freescape/language/instruction.cpp b/engines/freescape/language/instruction.cpp
index 9d55a51ea32..06d0939f15e 100644
--- a/engines/freescape/language/instruction.cpp
+++ b/engines/freescape/language/instruction.cpp
@@ -383,15 +383,25 @@ bool FreescapeEngine::executeEndIfBitNotEqual(FCLInstruction &instruction) {
}
void FreescapeEngine::executeSwapJet(FCLInstruction &instruction) {
- playSound(15, false);
+ //playSound(15, false);
_flyMode = !_flyMode;
+ uint16 areaID = _currentArea->getAreaID();
+
if (_flyMode) {
debugC(1, kFreescapeDebugCode, "Swaping to ship mode");
- _playerHeightNumber = -1;
_playerHeight = 1;
+ if (areaID == 27) {
+ traverseEntrance(26);
+ _lastPosition = _position;
+ }
+ _playerHeightNumber = -1;
} else {
debugC(1, kFreescapeDebugCode, "Swaping to tank mode");
_playerHeightNumber = 0;
+ if (areaID == 27) {
+ traverseEntrance(27);
+ _lastPosition = _position;
+ }
}
// TODO: implement the rest of the changes (e.g. border)
}
diff --git a/engines/freescape/movement.cpp b/engines/freescape/movement.cpp
index 4314fee6e95..52a37ff954e 100644
--- a/engines/freescape/movement.cpp
+++ b/engines/freescape/movement.cpp
@@ -138,6 +138,7 @@ void FreescapeEngine::rise() {
_lastPosition = _position;
debugC(1, kFreescapeDebugMove, "new player position: %f, %f, %f", _position.x(), _position.y(), _position.z());
+ executeLocalGlobalConditions(false, true); // Only execute "on collision" room/global conditions
}
void FreescapeEngine::lower() {
@@ -163,6 +164,7 @@ void FreescapeEngine::lower() {
_lastPosition = _position;
debugC(1, kFreescapeDebugMove, "new player position: %f, %f, %f", _position.x(), _position.y(), _position.z());
+ executeLocalGlobalConditions(false, true); // Only execute "on collision" room/global conditions
}
void FreescapeEngine::move(CameraMovement direction, uint8 scale, float deltaTime) {
More information about the Scummvm-git-logs
mailing list