Merge pull request #207 from westonCoder/savefile-chamber-number

Correct Chamber Numbers
This commit is contained in:
lambertjamesd 2023-08-05 20:58:14 -06:00 committed by GitHub
commit 2085847001
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 3 deletions

View file

@ -206,4 +206,42 @@ struct Location* levelGetLocation(short index) {
}
return &gCurrentLevel->locations[index];
}
int levelGetChamberNumber(int levelIndex, int roomIndex){
switch(levelIndex){
case 0:
if (roomIndex <= 2)
return 0;
else
return 1;
case 1:
if (roomIndex <= 2)
return 2;
else
return 3;
case 2:
if (roomIndex <= 2)
return 4;
else
return 5;
case 3:
if (roomIndex <= 2)
return 6;
else
return 7;
case 4:
return 8;
case 5:
return 9;
case 6:
return 10;
case 7:
if (roomIndex <= 2)
return 11;
else
return 12;
default:
return 0;
}
}

View file

@ -28,6 +28,8 @@ Gfx* levelMaterialRevert(int index);
int levelQuadIndex(struct CollisionObject* pointer);
int levelGetChamberNumber(int levelIndex, int roomIndex);
struct Location* levelGetLocation(short index);
#endif

View file

@ -37,7 +37,7 @@ void saveGamePopulate(struct SaveGameMenu* saveGame, int includeNew) {
if (includeNew && freeSlot != SAVEFILE_NO_SLOT) {
savefileInfo[numberOfSaves].slotIndex = freeSlot;
savefileInfo[numberOfSaves].savefileName = "NEW SAVE";
savefileInfo[numberOfSaves].testchamberIndex = gCurrentLevelIndex;
savefileInfo[numberOfSaves].testchamberIndex = levelGetChamberNumber(gCurrentLevelIndex, gScene.player.body.currentRoom);
savefileInfo[numberOfSaves].screenshot = gScreenGrabBuffer;
if (suggestedSlot == 0) {
@ -60,7 +60,7 @@ enum MenuDirection saveGameUpdate(struct SaveGameMenu* saveGame) {
if (controllerGetButtonDown(0, A_BUTTON) && saveGame->savefileList->numberOfSaves) {
Checkpoint* save = stackMalloc(MAX_CHECKPOINT_SIZE);
if (checkpointSaveInto(&gScene, save)) {
savefileSaveGame(save, gScreenGrabBuffer, gCurrentLevelIndex, gCurrentTestSubject, savefileGetSlot(saveGame->savefileList));
savefileSaveGame(save, gScreenGrabBuffer, levelGetChamberNumber(gCurrentLevelIndex, gScene.player.body.currentRoom), gCurrentTestSubject, savefileGetSlot(saveGame->savefileList));
saveGamePopulate(saveGame, 0);
}
stackMallocFree(save);

View file

@ -52,7 +52,7 @@ void checkpointSave(struct Scene* scene) {
savefileGrabScreenshot();
gHasCheckpoint = checkpointSaveInto(scene, gCheckpoint);
// slot 0 is the autosave slot
savefileSaveGame(gCheckpoint, gScreenGrabBuffer, gCurrentLevelIndex, gCurrentTestSubject, 0);
savefileSaveGame(gCheckpoint, gScreenGrabBuffer, levelGetChamberNumber(gCurrentLevelIndex, gScene.player.body.currentRoom), gCurrentTestSubject, 0);
}
void checkpointLoadLast(struct Scene* scene) {