diff options
author | johndoe123 | 2011-07-18 18:54:43 +0000 |
---|---|---|
committer | Willem Jan Palenstijn | 2013-05-08 20:38:48 +0200 |
commit | 720050bec1477b1e7df5bb34bb6ecf992d2a8ca1 (patch) | |
tree | a8a780a9644c2954b28555791281222628fbcd99 /engines/neverhood/gamevars.cpp | |
parent | b1377ab153399db3fdca784ef03a040090a59706 (diff) | |
download | scummvm-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.cpp | 20 |
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; } |