aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/behavior.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2013-08-14 01:51:03 +0300
committerEugene Sandulenko2013-09-06 14:51:14 +0300
commitdb290e9b0ce3c0a76d42365cd9ca494605f3bf05 (patch)
treeb06de832edc5b29e261203866a16dd560640571f /engines/fullpipe/behavior.cpp
parent3cacf6486d09b2062f5cdb57d283977c7c71d2eb (diff)
downloadscummvm-rg350-db290e9b0ce3c0a76d42365cd9ca494605f3bf05.tar.gz
scummvm-rg350-db290e9b0ce3c0a76d42365cd9ca494605f3bf05.tar.bz2
scummvm-rg350-db290e9b0ce3c0a76d42365cd9ca494605f3bf05.zip
FULLPIPE: Implement BehaviorManager::initBehavior()
Diffstat (limited to 'engines/fullpipe/behavior.cpp')
-rw-r--r--engines/fullpipe/behavior.cpp53
1 files changed, 51 insertions, 2 deletions
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