aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/behavior.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2013-08-14 09:30:30 +0300
committerEugene Sandulenko2013-09-06 14:51:14 +0300
commit682eb87af6788cf576691ecc938da9dbc48802cf (patch)
tree0912d64e521b4dd04e79a8efd5a45cc4db09649e /engines/fullpipe/behavior.cpp
parentdb290e9b0ce3c0a76d42365cd9ca494605f3bf05 (diff)
downloadscummvm-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.cpp49
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