diff options
author | Vincent Hamm | 2007-11-10 19:47:07 +0000 |
---|---|---|
committer | Vincent Hamm | 2007-11-10 19:47:07 +0000 |
commit | 34a696662a434fe8afdbee21d7986a88b49208ec (patch) | |
tree | b09401c40c72f06aed1a4bb3f6653d7e606bce74 /engines/cruise/cruise_main.cpp | |
parent | d624add74243152fa6639ba43cd04f6cfd816447 (diff) | |
download | scummvm-rg350-34a696662a434fe8afdbee21d7986a88b49208ec.tar.gz scummvm-rg350-34a696662a434fe8afdbee21d7986a88b49208ec.tar.bz2 scummvm-rg350-34a696662a434fe8afdbee21d7986a88b49208ec.zip |
Fix boggus object state
svn-id: r29469
Diffstat (limited to 'engines/cruise/cruise_main.cpp')
-rw-r--r-- | engines/cruise/cruise_main.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/engines/cruise/cruise_main.cpp b/engines/cruise/cruise_main.cpp index 5d220bc818..399704f350 100644 --- a/engines/cruise/cruise_main.cpp +++ b/engines/cruise/cruise_main.cpp @@ -98,7 +98,7 @@ int loadScriptSub1(int scriptIdx, int param) { counter = 0; for (i = 0; i < overlayTable[scriptIdx].ovlData->numObj; i++) { - if (ptr2[i].var0 == param) { + if (ptr2[i]._type == param) { counter++; } } @@ -764,45 +764,49 @@ void *allocAndZero(int size) { } const char *getObjectName(int index, const char *string) { - int i; const char *ptr = string; if (!string) return NULL; - for (i = 0; i < index; i++) { - while (*ptr) { - ptr++; - } - ptr++; + int i = 0; + int j = 0; + + while (i < index) + { + ptr += strlen(ptr)+1; + i++; } return ptr; } -int buildInventorySub1(int overlayIdx, int objIdx) { +int getObjectClass(int overlayIdx, int objIdx) { objDataStruct *pObjectData = getObjectDataFromOverlay(overlayIdx, objIdx); if (pObjectData) { - return pObjectData->type; + return pObjectData->_class; } else { return -11; } } void buildInventory(int X, int Y) { - int numObjectInInventory = 0; menuStruct *pMenu; pMenu = createMenu(X, Y, "Inventaire"); menuTable[1] = pMenu; - if (pMenu && numOfLoadedOverlay > 1) { - for (int i = 1; i < numOfLoadedOverlay; i++) { - ovlDataStruct *pOvlData = overlayTable[i].ovlData; + if(pMenu == NULL) + return; + + int numObjectInInventory = 0; + for (int i = 1; i < numOfLoadedOverlay; i++) { + ovlDataStruct *pOvlData = overlayTable[i].ovlData; - if (pOvlData && pOvlData->arrayObject && pOvlData->numObj) { + if (overlayTable[i].alreadyLoaded) { + if(overlayTable[i].ovlData->arrayObject) { for (int j = 0; j < pOvlData->numObj; j++) { - if (buildInventorySub1(i, j) != 3) { + if (getObjectClass(i, j) != 3) { int16 returnVar; getSingleObjectParam(i, j, 5, &returnVar); @@ -879,7 +883,7 @@ bool findRelation(int objOvl, int objIdx, int x, int y) { objDataStruct* pObject = getObjectDataFromOverlay(thisOvl, ptrHead->obj1Number); - if ((thisOvl == objOvl) && (objIdx ==ptrHead->obj1Number) && pObject && pObject->type != 3) { + if ((thisOvl == objOvl) && (objIdx ==ptrHead->obj1Number) && pObject && pObject->_class != 3) { int verbeOvl = ptrHead->verbOverlay; int obj1Ovl = ptrHead->obj1Overlay; int obj2Ovl = ptrHead->obj2Overlay; |