[Scummvm-git-logs] scummvm master -> 59864bf38cf55aa64340b72e55a024ad7d4a1027
elasota
noreply at scummvm.org
Fri Mar 17 04:55:39 UTC 2023
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:
8daf91afed VCRUISE: Fix vertical pans not working in scenes with no horizontal pans
59864bf38c VCRUISE: Add global var ops
Commit: 8daf91afede262c1c688cc872a4810201f0016c9
https://github.com/scummvm/scummvm/commit/8daf91afede262c1c688cc872a4810201f0016c9
Author: elasota (ejlasota at gmail.com)
Date: 2023-03-16T23:38:41-04:00
Commit Message:
VCRUISE: Fix vertical pans not working in scenes with no horizontal pans
Changed paths:
engines/vcruise/runtime.cpp
engines/vcruise/runtime.h
diff --git a/engines/vcruise/runtime.cpp b/engines/vcruise/runtime.cpp
index 79d005a3e43..2b60a6d4303 100644
--- a/engines/vcruise/runtime.cpp
+++ b/engines/vcruise/runtime.cpp
@@ -349,7 +349,7 @@ InventoryItem::InventoryItem() : itemID(0), highlighted(false) {
}
Runtime::Runtime(OSystem *system, Audio::Mixer *mixer, const Common::FSNode &rootFSNode, VCruiseGameID gameID)
- : _system(system), _mixer(mixer), _roomNumber(1), _screenNumber(0), _direction(0), _havePanAnimations(0), _loadedRoomNumber(0), _activeScreenNumber(0),
+ : _system(system), _mixer(mixer), _roomNumber(1), _screenNumber(0), _direction(0), _haveHorizPanAnimations(false), _loadedRoomNumber(0), _activeScreenNumber(0),
_gameState(kGameStateBoot), _gameID(gameID), _havePendingScreenChange(false), _forceScreenChange(false), _havePendingReturnToIdleState(false), _havePendingCompletionCheck(false),
_scriptNextInstruction(0), _escOn(false), _debugMode(false), _panoramaDirectionFlags(0),
_loadedAnimation(0), _animPendingDecodeFrame(0), _animDisplayingFrame(0), _animFirstFrame(0), _animLastFrame(0), _animStopFrame(0),
@@ -1409,7 +1409,7 @@ void Runtime::changeToScreen(uint roomNumber, uint screenNumber) {
}
}
- _havePanAnimations = false;
+ _haveHorizPanAnimations = false;
for (uint i = 0; i < kNumDirections; i++) {
_havePanUpFromDirection[i] = false;
_havePanDownFromDirection[i] = false;
@@ -1509,28 +1509,32 @@ bool Runtime::dischargeIdleMouseMove() {
uint interactionID = 0;
Common::Point panRelMouse = _mousePos - _panoramaAnchor;
- if (_havePanAnimations) {
+ if (_haveHorizPanAnimations) {
if (panRelMouse.x <= -kPanoramaPanningMarginX)
interactionID = kPanLeftInteraction;
else if (panRelMouse.x >= kPanoramaPanningMarginX)
interactionID = kPanRightInteraction;
- else if (panRelMouse.y <= -kPanoramaPanningMarginY)
+ }
+
+ if (!interactionID) {
+ if (_havePanUpFromDirection[_direction] && panRelMouse.y <= -kPanoramaPanningMarginY) {
interactionID = kPanUpInteraction;
- else if (panRelMouse.y >= kPanoramaPanningMarginY)
+ } else if (_havePanDownFromDirection[_direction] && panRelMouse.y >= kPanoramaPanningMarginY) {
interactionID = kPanDownInteraction;
+ }
+ }
- if (interactionID) {
- // If there's an interaction script for this direction, execute it
- Common::SharedPtr<Script> script = findScriptForInteraction(interactionID);
+ if (interactionID) {
+ // If there's an interaction script for this direction, execute it
+ Common::SharedPtr<Script> script = findScriptForInteraction(interactionID);
- if (script) {
- resetInventoryHighlights();
+ if (script) {
+ resetInventoryHighlights();
- ScriptEnvironmentVars vars;
- vars.panInteractionID = interactionID;
- activateScript(script, vars);
- return true;
- }
+ ScriptEnvironmentVars vars;
+ vars.panInteractionID = interactionID;
+ activateScript(script, vars);
+ return true;
}
}
}
@@ -2194,7 +2198,7 @@ Common::SharedPtr<Script> Runtime::findScriptForInteraction(uint interactionID)
void Runtime::detectPanoramaDirections() {
_panoramaDirectionFlags = 0;
- if (_havePanAnimations)
+ if (_haveHorizPanAnimations)
_panoramaDirectionFlags |= kPanoramaHorizFlags;
if (_havePanDownFromDirection[_direction])
@@ -2215,7 +2219,7 @@ void Runtime::panoramaActivate() {
_panoramaAnchor = _mousePos;
uint cursorID = 0;
- if (_havePanAnimations) {
+ if (_haveHorizPanAnimations || _havePanUpFromDirection[_direction] || _havePanDownFromDirection[_direction]) {
uint panCursor = 0;
if (_panoramaDirectionFlags & kPanoramaHorizFlags)
panCursor |= kPanCursorDraggableHoriz;
@@ -2235,7 +2239,7 @@ void Runtime::panoramaActivate() {
}
bool Runtime::computeFaceDirectionAnimation(uint desiredDirection, const AnimationDef *&outAnimDef, uint &outInitialFrame, uint &outStopFrame) {
- if (_direction == desiredDirection || !_havePanAnimations)
+ if (_direction == desiredDirection || !_haveHorizPanAnimations)
return false;
uint leftPanDistance = ((_direction + kNumDirections) - desiredDirection) % kNumDirections;
@@ -2595,7 +2599,7 @@ void Runtime::scriptOpRotate(ScriptArg_t arg) {
_panLeftAnimationDef = stackArgsToAnimDef(stackArgs + 0);
_panRightAnimationDef = stackArgsToAnimDef(stackArgs + kAnimDefStackArgs);
- _havePanAnimations = true;
+ _haveHorizPanAnimations = true;
}
void Runtime::scriptOpAngle(ScriptArg_t arg) {
@@ -2687,7 +2691,7 @@ void Runtime::scriptOpAnimR(ScriptArg_t arg) {
uint cursorID = 0;
- if (_havePanAnimations) {
+ if (_haveHorizPanAnimations) {
uint panCursor = 0;
if (_panoramaDirectionFlags & kPanoramaHorizFlags)
panCursor |= kPanCursorDraggableHoriz;
@@ -2820,7 +2824,7 @@ void Runtime::scriptOpStatic(ScriptArg_t arg) {
changeAnimation(animDef, animDef.lastFrame, false);
_havePendingReturnToIdleState = true;
- _havePanAnimations = false;
+ _haveHorizPanAnimations = false;
_haveIdleStaticAnimation = true;
_idleCurrentStaticAnimation = animDef.animName;
diff --git a/engines/vcruise/runtime.h b/engines/vcruise/runtime.h
index 46f86f68483..dcc15f30ff8 100644
--- a/engines/vcruise/runtime.h
+++ b/engines/vcruise/runtime.h
@@ -651,7 +651,7 @@ private:
AnimationDef _panLeftAnimationDef;
AnimationDef _panRightAnimationDef;
- bool _havePanAnimations;
+ bool _haveHorizPanAnimations;
bool _havePanUpFromDirection[kNumDirections];
bool _havePanDownFromDirection[kNumDirections];
Commit: 59864bf38cf55aa64340b72e55a024ad7d4a1027
https://github.com/scummvm/scummvm/commit/59864bf38cf55aa64340b72e55a024ad7d4a1027
Author: elasota (ejlasota at gmail.com)
Date: 2023-03-17T00:54:13-04:00
Commit Message:
VCRUISE: Add global var ops
Changed paths:
engines/vcruise/runtime.cpp
engines/vcruise/runtime.h
engines/vcruise/script.cpp
engines/vcruise/script.h
diff --git a/engines/vcruise/runtime.cpp b/engines/vcruise/runtime.cpp
index 2b60a6d4303..b32bb99e6f2 100644
--- a/engines/vcruise/runtime.cpp
+++ b/engines/vcruise/runtime.cpp
@@ -1023,6 +1023,8 @@ bool Runtime::runScript() {
DISPATCH_OP(Static);
DISPATCH_OP(VarLoad);
DISPATCH_OP(VarStore);
+ DISPATCH_OP(VarGlobalLoad);
+ DISPATCH_OP(VarGlobalStore);
DISPATCH_OP(ItemCheck);
DISPATCH_OP(ItemRemove);
DISPATCH_OP(ItemHighlightSet);
@@ -2851,6 +2853,26 @@ void Runtime::scriptOpVarStore(ScriptArg_t arg) {
_variables[varID] = stackArgs[0];
}
+void Runtime::scriptOpVarGlobalLoad(ScriptArg_t arg) {
+ TAKE_STACK(1);
+
+ uint32 varID = static_cast<uint32>(stackArgs[0]);
+
+ Common::HashMap<uint32, int32>::const_iterator it = _variables.find(varID);
+ if (it == _variables.end())
+ _scriptStack.push_back(0);
+ else
+ _scriptStack.push_back(it->_value);
+}
+
+void Runtime::scriptOpVarGlobalStore(ScriptArg_t arg) {
+ TAKE_STACK(2);
+
+ uint32 varID = static_cast<uint32>(stackArgs[1]);
+
+ _variables[varID] = stackArgs[0];
+}
+
void Runtime::scriptOpItemCheck(ScriptArg_t arg) {
TAKE_STACK(1);
diff --git a/engines/vcruise/runtime.h b/engines/vcruise/runtime.h
index dcc15f30ff8..a165a8ca580 100644
--- a/engines/vcruise/runtime.h
+++ b/engines/vcruise/runtime.h
@@ -531,6 +531,8 @@ private:
void scriptOpStatic(ScriptArg_t arg);
void scriptOpVarLoad(ScriptArg_t arg);
void scriptOpVarStore(ScriptArg_t arg);
+ void scriptOpVarGlobalLoad(ScriptArg_t arg);
+ void scriptOpVarGlobalStore(ScriptArg_t arg);
void scriptOpItemCheck(ScriptArg_t arg);
void scriptOpItemRemove(ScriptArg_t arg);
diff --git a/engines/vcruise/script.cpp b/engines/vcruise/script.cpp
index f0afd91c5e2..52d62778d49 100644
--- a/engines/vcruise/script.cpp
+++ b/engines/vcruise/script.cpp
@@ -338,6 +338,8 @@ static ScriptNamedInstruction g_namedInstructions[] = {
{"static", ProtoOp::kProtoOpScript, ScriptOps::kStatic},
{"yes@", ProtoOp::kProtoOpScript, ScriptOps::kVarLoad},
{"yes!", ProtoOp::kProtoOpScript, ScriptOps::kVarStore},
+ {"yesg@", ProtoOp::kProtoOpScript, ScriptOps::kVarGlobalLoad},
+ {"yesg!", ProtoOp::kProtoOpScript, ScriptOps::kVarGlobalStore},
{"cr?", ProtoOp::kProtoOpScript, ScriptOps::kItemCheck},
{"cr!", ProtoOp::kProtoOpScript, ScriptOps::kItemRemove},
{"sr!", ProtoOp::kProtoOpScript, ScriptOps::kItemHighlightSet},
diff --git a/engines/vcruise/script.h b/engines/vcruise/script.h
index 28179907650..9e72966b26f 100644
--- a/engines/vcruise/script.h
+++ b/engines/vcruise/script.h
@@ -61,6 +61,8 @@ enum ScriptOp {
kStatic,
kVarLoad,
kVarStore,
+ kVarGlobalLoad,
+ kVarGlobalStore,
kItemCheck,
kItemHaveSpace,
kItemRemove,
More information about the Scummvm-git-logs
mailing list