From db290e9b0ce3c0a76d42365cd9ca494605f3bf05 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 14 Aug 2013 01:51:03 +0300 Subject: FULLPIPE: Implement BehaviorManager::initBehavior() --- engines/fullpipe/behavior.cpp | 53 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) (limited to 'engines/fullpipe/behavior.cpp') diff --git a/engines/fullpipe/behavior.cpp b/engines/fullpipe/behavior.cpp index cf1a436c6a..d1048948ac 100644 --- a/engines/fullpipe/behavior.cpp +++ b/engines/fullpipe/behavior.cpp @@ -34,8 +34,49 @@ BehaviorManager::BehaviorManager() { _isActive = 1; } -void BehaviorManager::initBehavior(Scene *scene, CGameVar *var) { - warning("STUB: BehaviorManager::initBehavior()"); +BehaviorManager::~BehaviorManager() { + clear(); +} + +void BehaviorManager::clear() { + for (uint i = 0; i < _behaviors.size(); i++) { + for (int j = 0; j < _behaviors[i]->_itemsCount; j++) + delete _behaviors[i]->_bheItems[j]; + + delete _behaviors[i]; + } + _behaviors.clear(); +} + +void BehaviorManager::initBehavior(Scene *sc, CGameVar *var) { + clear(); + _scene = sc; + + BehaviorInfo *behinfo; + + CGameVar *behvar = var->getSubVarByName("BEHAVIOR"); + if (!behvar) + return; + + for (CGameVar *subvar = behvar->_subVars; subvar; subvar = subvar->_nextVarObj) { + if (!strcmp(subvar->_varName, "AMBIENT")) { + behinfo = new BehaviorInfo; + behinfo->initAmbientBehavior(subvar); + + _behaviors.push_back(behinfo); + } else { + StaticANIObject *ani = sc->getStaticANIObject1ByName(subvar->_varName, -1); + if (ani) + for (uint i = 0; i < sc->_staticANIObjectList1.size(); i++) + if (((StaticANIObject *)sc->_staticANIObjectList1[i])->_id == ani->_id) { + behinfo = new BehaviorInfo; + behinfo->initObjectBehavior(subvar, sc, ani); + behinfo->_ani = (StaticANIObject *)sc->_staticANIObjectList1[i]; + + _behaviors.push_back(behinfo); + } + } + } } void BehaviorManager::updateBehaviors() { @@ -104,4 +145,12 @@ void BehaviorManager::updateStaticAniBehavior(StaticANIObject *ani, unsigned int warning("STUB: BehaviorManager::updateStaticAniBehavior()"); } +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)); +} + } // End of namespace Fullpipe -- cgit v1.2.3