diff options
author | Paul Gilbert | 2015-05-23 16:06:29 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-05-23 16:06:29 -0400 |
commit | bcc31b2a663545ec448d886d8ed16546593f849e (patch) | |
tree | c2452b8ea70bc6adcb57c1a01e9af4610af05c79 /engines/sherlock/objects.cpp | |
parent | c8cfca749a5da09aead4ca0c499def9afab5317c (diff) | |
download | scummvm-rg350-bcc31b2a663545ec448d886d8ed16546593f849e.tar.gz scummvm-rg350-bcc31b2a663545ec448d886d8ed16546593f849e.tar.bz2 scummvm-rg350-bcc31b2a663545ec448d886d8ed16546593f849e.zip |
SHERLOCK: Implemented Tattoo loadWalk changes
Diffstat (limited to 'engines/sherlock/objects.cpp')
-rw-r--r-- | engines/sherlock/objects.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp index f3803518ee..0709f6b7a9 100644 --- a/engines/sherlock/objects.cpp +++ b/engines/sherlock/objects.cpp @@ -46,7 +46,7 @@ void Sprite::clear() { _description = ""; _examine.clear(); _pickUp = ""; - _sequences = nullptr; + _walkSequences.clear(); _images = nullptr; _imageFrame = nullptr; _walkCount = 0; @@ -63,12 +63,21 @@ void Sprite::clear() { _status = 0; _misc = 0; _numFrames = 0; + _altImages = nullptr; + _altSequences = false; + Common::fill(&_stopFrames[0], &_stopFrames[8], (ImageFrame *)nullptr); } void Sprite::setImageFrame() { - int imageNumber = (*_sequences)[_sequenceNumber][_frameNumber] + - (*_sequences)[_sequenceNumber][0] - 2; - _imageFrame = &(*_images)[imageNumber]; + int frameNum = MAX(_frameNumber, 0); + int imageNumber = _walkSequences[_sequenceNumber][frameNum]; + + if (IS_SERRATED_SCALPEL) + imageNumber = imageNumber + +_walkSequences[_sequenceNumber][0] - 2; + else if (imageNumber > _numFrames) + imageNumber = 1; + + _imageFrame = &(_altSequences ? *_altImages : *_images)[imageNumber]; } void Sprite::adjustSprite() { @@ -120,7 +129,7 @@ void Sprite::adjustSprite() { if (!map._active || (map._frameChangeFlag = !map._frameChangeFlag)) ++_frameNumber; - if ((*_sequences)[_sequenceNumber][_frameNumber] == 0) { + if (_walkSequences[_sequenceNumber][_frameNumber] == 0) { switch (_sequenceNumber) { case STOP_UP: case STOP_DOWN: |