diff options
author | Peter Kohaut | 2018-12-24 13:29:12 +0100 |
---|---|---|
committer | Peter Kohaut | 2018-12-24 13:51:28 +0100 |
commit | 3f712604a78370d520c9653eccc61eaa7c6ff6f5 (patch) | |
tree | 2adb7849a30b0aee78cd95ebdd5710bf7f581d8b /engines/bladerunner/script | |
parent | 81288f2cac5773274ba09469552f48b5d3ca696f (diff) | |
download | scummvm-rg350-3f712604a78370d520c9653eccc61eaa7c6ff6f5.tar.gz scummvm-rg350-3f712604a78370d520c9653eccc61eaa7c6ff6f5.tar.bz2 scummvm-rg350-3f712604a78370d520c9653eccc61eaa7c6ff6f5.zip |
BLADERUNNER: Fixed item rotation
Item's angle was not update after chaning "facing".
Police maze targets are now rotated correct way.
Added debug logging for the police maze tracts.
Diffstat (limited to 'engines/bladerunner/script')
-rw-r--r-- | engines/bladerunner/script/police_maze.cpp | 149 |
1 files changed, 116 insertions, 33 deletions
diff --git a/engines/bladerunner/script/police_maze.cpp b/engines/bladerunner/script/police_maze.cpp index f201b566c5..b7b627fd63 100644 --- a/engines/bladerunner/script/police_maze.cpp +++ b/engines/bladerunner/script/police_maze.cpp @@ -286,14 +286,14 @@ bool PoliceMazeTargetTrack::tick() { while (cont) { _dataIndex++; - debug ("ItemId %3i, pos %3i, instruction %3i", _itemId, _dataIndex - 1, _data[_dataIndex - 1]); - switch (_data[_dataIndex - 1]) { case kPMTIActivate: { int variableId = _data[_dataIndex++]; int maxValue = _data[_dataIndex++]; - +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Activate, VariableId: %i, Max value: %i", _itemId, variableId, maxValue); +#endif if (Global_Variable_Query(variableId) >= maxValue) { setPaused(); cont = false; @@ -304,16 +304,23 @@ bool PoliceMazeTargetTrack::tick() { } case kPMTILeave: - if (!_vm->_items->isPoliceMazeEnemy(_itemId) && _vm->_items->isTarget(_itemId)) { - Police_Maze_Increment_Score(1); + { +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Leave", _itemId); +#endif + if (!_vm->_items->isPoliceMazeEnemy(_itemId) && _vm->_items->isTarget(_itemId)) { + Police_Maze_Increment_Score(1); + } + break; } - break; case kPMTIShoot: { int soundId = _data[_dataIndex++]; _dataIndex++; // second argument is not used - +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Shoot, SoundId: %i", _itemId, soundId); +#endif if (_vm->_items->isTarget(_itemId)) { Sound_Play(soundId, 90, 0, 0, 50); Police_Maze_Decrement_Score(1); @@ -344,6 +351,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIEnemyReset: { int itemId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Enemy reset, OtherItemId: %i", _itemId, itemId); +#endif _vm->_items->setPoliceMazeEnemy(itemId, false); break; } @@ -351,6 +361,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIEnemySet: { int itemId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Enemy set, OtherItemId: %i", _itemId, itemId); +#endif _vm->_items->setPoliceMazeEnemy(itemId, true); break; } @@ -358,6 +371,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIFlagReset: { int gameFlagId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Flag reset, FlagId: %i", _itemId, gameFlagId); +#endif Game_Flag_Reset(gameFlagId); break; } @@ -365,6 +381,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIFlagSet: { int gameFlagId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Flag set, FlagId: %i", _itemId, gameFlagId); +#endif Game_Flag_Set(gameFlagId); break; } @@ -372,6 +391,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIVariableDec: { int variableId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Variable decrement, VariableId: %i", _itemId, variableId); +#endif Global_Variable_Decrement(variableId, 1); break; } @@ -380,6 +402,9 @@ bool PoliceMazeTargetTrack::tick() { { int variableId = _data[_dataIndex++]; int maxValue = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Variable increment, VariableId: %i, Max value: %i", _itemId, variableId, maxValue); +#endif if (Global_Variable_Query(variableId) < maxValue) { Global_Variable_Increment(variableId, 1); } @@ -389,6 +414,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIVariableReset: { int variableId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Variable reset, VariableId: %i", _itemId, variableId); +#endif Global_Variable_Reset(variableId); break; } @@ -397,6 +425,9 @@ bool PoliceMazeTargetTrack::tick() { { int variableId = _data[_dataIndex++]; int value = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Variable set, VariableId: %i, Value: %i", _itemId, variableId, value); +#endif Global_Variable_Set(variableId, value); break; } @@ -405,16 +436,21 @@ bool PoliceMazeTargetTrack::tick() { { int itemId = _data[_dataIndex++]; int value = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Target set, OtherItemId: %i, Value: %i", _itemId, itemId, value); +#endif _vm->_items->setIsTarget(itemId, value); break; } - case kPMTI12: + case kPMTIPausedReset1of3: { int trackId1 = _data[_dataIndex++]; int trackId2 = _data[_dataIndex++]; int trackId3 = _data[_dataIndex++]; - +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Pause reset 1 of 3, TrackId1: %i, TrackId2: %i, TrackId3: %i", _itemId, trackId1, trackId2, trackId3); +#endif switch (Random_Query(1, 3)) { case 1: _vm->_policeMaze->_tracks[trackId1]->resetPaused(); @@ -432,11 +468,13 @@ bool PoliceMazeTargetTrack::tick() { break; } - case kPMTI13: + case kPMTIPausedReset1of2: { int trackId1 = _data[_dataIndex++]; int trackId2 = _data[_dataIndex++]; - +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Pause reset 1 of 2, TrackId1: %i, TrackId2: %i", _itemId, trackId1, trackId2); +#endif if (Random_Query(1, 2) == 1) { _vm->_policeMaze->_tracks[trackId1]->resetPaused(); } else { @@ -448,6 +486,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIPausedSet: { int trackId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Pause set, TrackId: %i", _itemId, trackId); +#endif _vm->_policeMaze->_tracks[trackId]->setPaused(); break; } @@ -455,6 +496,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIPausedReset: { int trackId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Pause reset, TrackId: %i", _itemId, trackId); +#endif _vm->_policeMaze->_tracks[trackId]->resetPaused(); break; } @@ -463,6 +507,9 @@ bool PoliceMazeTargetTrack::tick() { { int soundId = _data[_dataIndex++]; int volume = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Sound, SoundId: %i, Volume: %i", _itemId, soundId, volume); +#endif Sound_Play(soundId, volume, 0, 0, 50); break; } @@ -470,6 +517,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIObstacleReset: { int itemId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Obstacle reset, OtherItemId: %i", _itemId, itemId); +#endif _vm->_items->setIsObstacle(itemId, 0); break; } @@ -477,6 +527,9 @@ bool PoliceMazeTargetTrack::tick() { case kPMTIObstacleSet: { int itemId = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Obstacle set, OtherItemId: %i", _itemId, itemId); +#endif _vm->_items->setIsObstacle(itemId, 1); break; } @@ -485,6 +538,9 @@ bool PoliceMazeTargetTrack::tick() { { int randomMin = _data[_dataIndex++]; int randomMax = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Wait random, Min: %i, Max: %i", _itemId, randomMin, randomMax); +#endif _timeLeftWait = Random_Query(randomMin, randomMax); _isWaiting = true; @@ -493,46 +549,73 @@ bool PoliceMazeTargetTrack::tick() { } case kPMTIRotate: - _angleTarget = _data[_dataIndex++]; - _angleDelta = _data[_dataIndex++]; - _isRotating = true; + { + _angleTarget = _data[_dataIndex++]; + _angleDelta = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Rotate, Target: %i, Delta: %i", _itemId, _angleTarget, _angleDelta); +#endif + _isRotating = true; - cont = false; - break; + cont = false; + break; + } case kPMTIFacing: { int angle = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Set facing, Angle: %i", _itemId, angle); +#endif _vm->_items->setFacing(_itemId, angle); break; } case kPMTIRestart: - _dataIndex = 0; - - cont = false; - break; + { + _dataIndex = 0; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Restart", _itemId); +#endif + cont = false; + break; + } case kPMTIWait: - _timeLeftWait = _data[_dataIndex++]; - _isWaiting = true; + { + _timeLeftWait = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Wait, Time: %i", _itemId, _timeLeftWait); +#endif + _isWaiting = true; - cont = false; - break; + cont = false; + break; + } case kPMTIMove: - _pointTarget = _data[_dataIndex++]; - _isMoving = true; + { + _pointTarget = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Move, Target: %i", _itemId, _pointTarget); +#endif + _isMoving = true; - cont = false; - break; + cont = false; + break; + } case kPMTIPosition: - _pointIndex = _data[_dataIndex++]; - _isMoving = false; - _vm->_items->setXYZ(_itemId, _points[_pointIndex]); - readdObject(_itemId); - break; + { + _pointIndex = _data[_dataIndex++]; +#if BLADERUNNER_DEBUG_CONSOLE + debug("ItemId: %3i, Position, Index: %i", _itemId, _pointIndex); +#endif + _isMoving = false; + _vm->_items->setXYZ(_itemId, _points[_pointIndex]); + readdObject(_itemId); + break; + } default: return false; |