aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/gamevars.cpp
diff options
context:
space:
mode:
authorjohndoe1232011-07-18 18:54:43 +0000
committerWillem Jan Palenstijn2013-05-08 20:38:48 +0200
commit720050bec1477b1e7df5bb34bb6ecf992d2a8ca1 (patch)
treea8a780a9644c2954b28555791281222628fbcd99 /engines/neverhood/gamevars.cpp
parentb1377ab153399db3fdca784ef03a040090a59706 (diff)
downloadscummvm-rg350-720050bec1477b1e7df5bb34bb6ecf992d2a8ca1.tar.gz
scummvm-rg350-720050bec1477b1e7df5bb34bb6ecf992d2a8ca1.tar.bz2
scummvm-rg350-720050bec1477b1e7df5bb34bb6ecf992d2a8ca1.zip
NEVERHOOD: Start with Module1200/Scene1201 (not complete yet)
- Fix an odd bug with the game variables (index of newly added subvar was sometimes -1)
Diffstat (limited to 'engines/neverhood/gamevars.cpp')
-rw-r--r--engines/neverhood/gamevars.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/engines/neverhood/gamevars.cpp b/engines/neverhood/gamevars.cpp
index 98ae709cfd..caf79b2ad9 100644
--- a/engines/neverhood/gamevars.cpp
+++ b/engines/neverhood/gamevars.cpp
@@ -57,7 +57,16 @@ uint32 GameVars::getSubVar(uint32 nameHash, uint32 subNameHash) {
void GameVars::setSubVar(uint32 nameHash, uint32 subNameHash, uint32 value) {
debug("GameVars::setSubVar(%08X, %08X, %d)", nameHash, subNameHash, value);
- _vars[getSubVarIndex(getSubVarIndex(0, nameHash), subNameHash)].value = value;
+
+ int16 varIndex = getSubVarIndex(0, nameHash);
+ debug(" varIndex = %d", varIndex);
+
+ int16 subVarIndex = getSubVarIndex(varIndex, subNameHash);
+ debug(" subVarIndex = %d", subVarIndex);
+
+ _vars[subVarIndex].value = value;
+
+ //_vars[getSubVarIndex(getSubVarIndex(0, nameHash), subNameHash)].value = value;
}
int16 GameVars::addVar(uint32 nameHash, uint32 value) {
@@ -89,16 +98,19 @@ int16 GameVars::addSubVar(int16 varIndex, uint32 subNameHash, uint32 value) {
} else {
while (_vars[nextIndex].nextIndex != -1)
nextIndex = _vars[nextIndex].nextIndex;
- _vars[nextIndex].nextIndex = addVar(subNameHash, value);
- return _vars[nextIndex].nextIndex;
+ int16 index = addVar(subNameHash, value);
+ _vars[nextIndex].nextIndex = index;
+ return index;
}
}
int16 GameVars::getSubVarIndex(int16 varIndex, uint32 subNameHash) {
debug("GameVars::getSubVarIndex(%d, %08X)", varIndex, subNameHash);
int16 subVarIndex = findSubVarIndex(varIndex, subNameHash);
- if (subVarIndex == -1)
+ if (subVarIndex == -1) {
subVarIndex = addSubVar(varIndex, subNameHash, 0);
+ debug("need to create: subVarIndex = %d", subVarIndex);
+ }
return subVarIndex;
}