diff options
author | Eugene Sandulenko | 2013-09-03 00:21:34 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2013-09-06 14:51:24 +0300 |
commit | eea48b4f12f819a2bd595f3750a23998e96ee560 (patch) | |
tree | 61366ddf0c25679ffd45c4a19e8353938b09cdf1 /engines | |
parent | 1b057ba3465ac27a1ec855d2ddfbbd730edfa9f0 (diff) | |
download | scummvm-rg350-eea48b4f12f819a2bd595f3750a23998e96ee560.tar.gz scummvm-rg350-eea48b4f12f819a2bd595f3750a23998e96ee560.tar.bz2 scummvm-rg350-eea48b4f12f819a2bd595f3750a23998e96ee560.zip |
FULLPIPE: Implement Shadows::initMovement()
Diffstat (limited to 'engines')
-rw-r--r-- | engines/fullpipe/gfx.cpp | 24 | ||||
-rw-r--r-- | engines/fullpipe/statics.cpp | 16 | ||||
-rw-r--r-- | engines/fullpipe/statics.h | 1 |
3 files changed, 40 insertions, 1 deletions
diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp index 6627e35a85..d680d32790 100644 --- a/engines/fullpipe/gfx.cpp +++ b/engines/fullpipe/gfx.cpp @@ -1047,7 +1047,29 @@ void Shadows::init() { } void Shadows::initMovement(Movement *mov) { - warning("STUB: Shadows::initMovement()"); + uint num; + + if (mov->_currMovement) + num = mov->_currMovement->_dynamicPhases.size(); + else + num = mov->_dynamicPhases.size(); + + _items.clear(); + _items.resize(num); + + Common::Point point; + + _items[0].dynPhase = (DynamicPhase *)mov->_staticsObj1; + _items[0].dynPhase->getDimensions(&point); + _items[0].width = point.x; + _items[0].height = point.y; + + for (uint i = 1; i < num; i++) { + _items[i].dynPhase = mov->getDynamicPhaseByIndex(i); + _items[i].dynPhase->getDimensions(&point); + _items[i].width = point.x; + _items[i].height = point.y; + } } DynamicPhase *Shadows::findSize(int width, int height) { diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp index c4ceaf2439..46d48d5d29 100644 --- a/engines/fullpipe/statics.cpp +++ b/engines/fullpipe/statics.cpp @@ -1348,6 +1348,22 @@ void Movement::setDynamicPhaseIndex(int index) { gotoPrevFrame(); } +DynamicPhase *Movement::getDynamicPhaseByIndex(int idx) { + debug(7, "Movement::updateCurrDynamicPhase()"); + + if (_currMovement) { + if (_currMovement->_dynamicPhases.size() == 0 || (uint)idx >= _currMovement->_dynamicPhases.size()) + return 0; + + return (DynamicPhase *)_currMovement->_dynamicPhases[idx]; + } else { + if (_dynamicPhases.size() == 0 || (uint)idx >= _dynamicPhases.size()) + return 0; + + return (DynamicPhase *)_dynamicPhases[idx]; + } +} + void Movement::loadPixelData() { Movement *mov = this; for (Movement *i = _currMovement; i; i = i->_currMovement) diff --git a/engines/fullpipe/statics.h b/engines/fullpipe/statics.h index 5ae4a1c2d5..295da9b676 100644 --- a/engines/fullpipe/statics.h +++ b/engines/fullpipe/statics.h @@ -143,6 +143,7 @@ class Movement : public GameObject { void setAlpha(int alpha); void setDynamicPhaseIndex(int index); + DynamicPhase *getDynamicPhaseByIndex(int idx); void removeFirstPhase(); bool gotoNextFrame(int callback1, void (*callback2)(int *)); |