diff options
author | Eugene Sandulenko | 2013-08-14 09:30:30 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2013-09-06 14:51:14 +0300 |
commit | 682eb87af6788cf576691ecc938da9dbc48802cf (patch) | |
tree | 0912d64e521b4dd04e79a8efd5a45cc4db09649e /engines/fullpipe/behavior.cpp | |
parent | db290e9b0ce3c0a76d42365cd9ca494605f3bf05 (diff) | |
download | scummvm-rg350-682eb87af6788cf576691ecc938da9dbc48802cf.tar.gz scummvm-rg350-682eb87af6788cf576691ecc938da9dbc48802cf.tar.bz2 scummvm-rg350-682eb87af6788cf576691ecc938da9dbc48802cf.zip |
FULLPIPE: Implement BehaviorInfo::initObjectBehavior()
Diffstat (limited to 'engines/fullpipe/behavior.cpp')
-rw-r--r-- | engines/fullpipe/behavior.cpp | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/engines/fullpipe/behavior.cpp b/engines/fullpipe/behavior.cpp index d1048948ac..f2d0d5594d 100644 --- a/engines/fullpipe/behavior.cpp +++ b/engines/fullpipe/behavior.cpp @@ -145,12 +145,57 @@ void BehaviorManager::updateStaticAniBehavior(StaticANIObject *ani, unsigned int warning("STUB: BehaviorManager::updateStaticAniBehavior()"); } +void BehaviorInfo::clear() { + _ani = 0; + _staticsId = 0; + _counter = 0; + _counterMax = 0; + _flags = 0; + _subIndex = 0; + _itemsCount = 0; + + _bheItems.clear(); +} + void BehaviorInfo::initAmbientBehavior(CGameVar *var) { warning("STUB: BehaviorInfo::initAmbientBehavior(%s)", transCyrillic((byte *)var->_varName)); } -void BehaviorInfo::initObjectBehavior(CGameVar *var, Scene *sceneObj, StaticANIObject *ani) { - warning("STUB: BehaviorInfo::initObjectBehavior(%s)", transCyrillic((byte *)var->_varName)); +void BehaviorInfo::initObjectBehavior(CGameVar *var, Scene *sc, StaticANIObject *ani) { + debug(0, "BehaviorInfo::initObjectBehavior(%s)", transCyrillic((byte *)var->_varName)); + + clear(); + + _itemsCount = var->getSubVarsCount(); + _counterMax = -1; + + while (var->_varType == 2) { + if (strcmp(var->_value.stringValue, "ROOT")) + break; + + CGameVar *v1 = g_fullpipe->getGameLoaderGameVar()->getSubVarByName("BEHAVIOR")->getSubVarByName(ani->getName()); + if (v1 == var) + return; + + sc = g_fullpipe->accessScene(ani->_sceneId); + clear(); + var = v1; + _itemsCount = var->getSubVarsCount(); + _counterMax = -1; + } + + for (int i = 0; i < _itemsCount; i++) { + int maxDelay; + + _bheItems.push_back(new BehaviorEntry(var->getSubVarByIndex(i), sc, ani, &maxDelay)); + + if (maxDelay < _counterMax ) + _counterMax = maxDelay; + } +} + +BehaviorEntry::BehaviorEntry(CGameVar *var, Scene *sc, StaticANIObject *ani, int *maxDelay) { + warning("STUB: BehaviorEntry::BehaviorEntry()"); } } // End of namespace Fullpipe |