refactor some stuff

This commit is contained in:
hackgrid 2023-12-01 00:06:52 +01:00
parent d98f371aee
commit 6ee86df06a
9 changed files with 44 additions and 43 deletions

View file

@ -222,7 +222,7 @@ struct Location* levelGetLocation(short index) {
return &gCurrentLevel->locations[index]; return &gCurrentLevel->locations[index];
} }
int getChamberNumberFromLevelIndex(int levelIndex, int roomIndex){ int getChamberDisplayNumberFromLevelIndex(int levelIndex, int roomIndex){
switch(levelIndex){ switch(levelIndex){
case 0: case 0:
if (roomIndex <= 2) if (roomIndex <= 2)
@ -260,7 +260,7 @@ int getChamberNumberFromLevelIndex(int levelIndex, int roomIndex){
} }
} }
int getLevelIndexFromChamberNumber(int chamberNumber) { int getLevelIndexFromChamberDisplayNumber(int chamberNumber) {
switch (chamberNumber) { switch (chamberNumber) {
case 0: case 0:
case 1: case 1:

View file

@ -30,9 +30,9 @@ Gfx* levelMaterialRevert(int index);
int levelQuadIndex(struct CollisionObject* pointer); int levelQuadIndex(struct CollisionObject* pointer);
int getChamberNumberFromLevelIndex(int levelIndex, int roomIndex); int getChamberDisplayNumberFromLevelIndex(int levelIndex, int roomIndex);
void levelClearQueuedLevel(); void levelClearQueuedLevel();
int getLevelIndexFromChamberNumber(int chamberIndex); int getLevelIndexFromChamberDisplayNumber(int chamberIndex);
struct Location* levelGetLocation(short index); struct Location* levelGetLocation(short index);

View file

@ -38,7 +38,7 @@ enum InputCapture loadGameUpdate(struct LoadGameMenu* loadGame) {
savefileLoadGame(savefileGetSlot(loadGame->savefileList), save, &testChamber, &testSubject); savefileLoadGame(savefileGetSlot(loadGame->savefileList), save, &testChamber, &testSubject);
gCurrentTestSubject = testSubject; gCurrentTestSubject = testSubject;
levelQueueLoad(getLevelIndexFromChamberNumber(testChamber), NULL, NULL); levelQueueLoad(getLevelIndexFromChamberDisplayNumber(testChamber), NULL, NULL);
checkpointUse(save); checkpointUse(save);
stackMallocFree(save); stackMallocFree(save);

View file

@ -41,7 +41,7 @@ struct Chapter gChapters[] = {
struct Chapter* chapterFindForChamber(int chamberIndex) { struct Chapter* chapterFindForChamber(int chamberIndex) {
for (int i = 1; i < MAX_CHAPTER_COUNT; ++i) { for (int i = 1; i < MAX_CHAPTER_COUNT; ++i) {
if (gChapters[i].testChamberNumber > chamberIndex) { if (gChapters[i].testChamberLevelIndex > chamberIndex) {
return &gChapters[i - 1]; return &gChapters[i - 1];
} }
} }
@ -110,11 +110,11 @@ void newGameInit(struct NewGameMenu* newGameMenu) {
newGameMenu->topLine = menuBuildHorizontalLine(52, 64, 214); newGameMenu->topLine = menuBuildHorizontalLine(52, 64, 214);
chapterMenuInit(&newGameMenu->chapter0, 55, 76); chapterMenuInit(&newGameMenu->displayedChapter0_left, 55, 76);
chapterMenuInit(&newGameMenu->chapter1, 163, 76); chapterMenuInit(&newGameMenu->displayedChapter1_right, 163, 76);
chapterMenuSetChapter(&newGameMenu->chapter0, &gChapters[0], 0); chapterMenuSetChapter(&newGameMenu->displayedChapter0_left, &gChapters[0], 0);
chapterMenuSetChapter(&newGameMenu->chapter1, &gChapters[1], 1); chapterMenuSetChapter(&newGameMenu->displayedChapter1_right, &gChapters[1], 1);
newGameMenu->chapterOffset = 0; newGameMenu->chapterOffset = 0;
newGameMenu->selectedChapter = 0; newGameMenu->selectedChapter = 0;
@ -122,8 +122,8 @@ void newGameInit(struct NewGameMenu* newGameMenu) {
} }
void newGameRebuildText(struct NewGameMenu* newGameMenu) { void newGameRebuildText(struct NewGameMenu* newGameMenu) {
chapterMenuSetChapter(&newGameMenu->chapter0, &gChapters[newGameMenu->chapterOffset], newGameMenu->chapterOffset); chapterMenuSetChapter(&newGameMenu->displayedChapter0_left, &gChapters[newGameMenu->chapterOffset], newGameMenu->chapterOffset);
chapterMenuSetChapter(&newGameMenu->chapter1, &gChapters[newGameMenu->chapterOffset + 1], newGameMenu->chapterOffset + 1); chapterMenuSetChapter(&newGameMenu->displayedChapter1_right, &gChapters[newGameMenu->chapterOffset + 1], newGameMenu->chapterOffset + 1);
prerenderedTextFree(newGameMenu->newGameText); prerenderedTextFree(newGameMenu->newGameText);
newGameMenu->newGameText = menuBuildPrerenderedText(&gDejaVuSansFont, translationsGet(GAMEUI_NEWGAME), 48, 48, SCREEN_WD); newGameMenu->newGameText = menuBuildPrerenderedText(&gDejaVuSansFont, translationsGet(GAMEUI_NEWGAME), 48, 48, SCREEN_WD);
@ -132,7 +132,7 @@ void newGameRebuildText(struct NewGameMenu* newGameMenu) {
enum InputCapture newGameUpdate(struct NewGameMenu* newGameMenu) { enum InputCapture newGameUpdate(struct NewGameMenu* newGameMenu) {
// this is done on update so if the unlock menu cheat is used it shows up right away // this is done on update so if the unlock menu cheat is used it shows up right away
while (newGameMenu->chapterCount < MAX_CHAPTER_COUNT && while (newGameMenu->chapterCount < MAX_CHAPTER_COUNT &&
gChapters[newGameMenu->chapterCount].testChamberNumber <= gSaveData.header.chapterProgress) { gChapters[newGameMenu->chapterCount].testChamberLevelIndex <= gSaveData.header.chapterProgressLevelIndex) {
++newGameMenu->chapterCount; ++newGameMenu->chapterCount;
} }
@ -140,10 +140,10 @@ enum InputCapture newGameUpdate(struct NewGameMenu* newGameMenu) {
return InputCaptureExit; return InputCaptureExit;
} }
if (controllerGetButtonDown(0, A_BUTTON) && gChapters[newGameMenu->selectedChapter].testChamberNumber >= 0) { if (controllerGetButtonDown(0, A_BUTTON) && gChapters[newGameMenu->selectedChapter].testChamberLevelIndex >= 0) {
gCurrentTestSubject = savefileNextTestSubject(); gCurrentTestSubject = savefileNextTestSubject();
soundPlayerPlay(SOUNDS_BUTTONCLICKRELEASE, 1.0f, 0.5f, NULL, NULL, SoundTypeAll); soundPlayerPlay(SOUNDS_BUTTONCLICKRELEASE, 1.0f, 0.5f, NULL, NULL, SoundTypeAll);
levelQueueLoad(gChapters[newGameMenu->selectedChapter].testChamberNumber, NULL, NULL); levelQueueLoad(gChapters[newGameMenu->selectedChapter].testChamberLevelIndex, NULL, NULL);
} }
if ((controllerGetDirectionDown(0) & ControllerDirectionRight) != 0 && if ((controllerGetDirectionDown(0) & ControllerDirectionRight) != 0 &&
@ -164,8 +164,8 @@ enum InputCapture newGameUpdate(struct NewGameMenu* newGameMenu) {
if (nextChapterOffset != newGameMenu->chapterOffset) { if (nextChapterOffset != newGameMenu->chapterOffset) {
newGameMenu->chapterOffset = nextChapterOffset; newGameMenu->chapterOffset = nextChapterOffset;
chapterMenuSetChapter(&newGameMenu->chapter0, &gChapters[newGameMenu->chapterOffset], newGameMenu->chapterOffset); chapterMenuSetChapter(&newGameMenu->displayedChapter0_left, &gChapters[newGameMenu->chapterOffset], newGameMenu->chapterOffset);
chapterMenuSetChapter(&newGameMenu->chapter1, &gChapters[newGameMenu->chapterOffset + 1], newGameMenu->chapterOffset + 1); chapterMenuSetChapter(&newGameMenu->displayedChapter1_right, &gChapters[newGameMenu->chapterOffset + 1], newGameMenu->chapterOffset + 1);
} }
return InputCapturePass; return InputCapturePass;
@ -187,14 +187,14 @@ void newGameRender(struct NewGameMenu* newGameMenu, struct RenderState* renderSt
gDPPipeSync(renderState->dl++); gDPPipeSync(renderState->dl++);
menuSetRenderColor(renderState, newGameMenu->selectedChapter == newGameMenu->chapterOffset, &gSelectionOrange, &gColorBlack); menuSetRenderColor(renderState, newGameMenu->selectedChapter == newGameMenu->chapterOffset, &gSelectionOrange, &gColorBlack);
gSPDisplayList(renderState->dl++, newGameMenu->chapter0.border); gSPDisplayList(renderState->dl++, newGameMenu->displayedChapter0_left.border);
int showSecondChapter = newGameMenu->chapter1.chapter->imageData && newGameMenu->chapter1.chapter->testChamberNumber <= gSaveData.header.chapterProgress; int showSecondChapter = newGameMenu->displayedChapter1_right.chapter->imageData && newGameMenu->displayedChapter1_right.chapter->testChamberLevelIndex <= gSaveData.header.chapterProgressLevelIndex;
if (showSecondChapter) { if (showSecondChapter) {
gDPPipeSync(renderState->dl++); gDPPipeSync(renderState->dl++);
menuSetRenderColor(renderState, newGameMenu->selectedChapter != newGameMenu->chapterOffset, &gSelectionOrange, &gColorBlack); menuSetRenderColor(renderState, newGameMenu->selectedChapter != newGameMenu->chapterOffset, &gSelectionOrange, &gColorBlack);
gSPDisplayList(renderState->dl++, newGameMenu->chapter1.border); gSPDisplayList(renderState->dl++, newGameMenu->displayedChapter1_right.border);
} }
gSPDisplayList(renderState->dl++, ui_material_revert_list[SOLID_ENV_INDEX]); gSPDisplayList(renderState->dl++, ui_material_revert_list[SOLID_ENV_INDEX]);
@ -203,12 +203,12 @@ void newGameRender(struct NewGameMenu* newGameMenu, struct RenderState* renderSt
prerenderedBatchAdd(batch, newGameMenu->newGameText, NULL); prerenderedBatchAdd(batch, newGameMenu->newGameText, NULL);
prerenderedBatchAdd(batch, newGameMenu->chapter0.chapterText, newGameMenu->selectedChapter == newGameMenu->chapterOffset ? &gSelectionOrange : &gColorWhite); prerenderedBatchAdd(batch, newGameMenu->displayedChapter0_left.chapterText, newGameMenu->selectedChapter == newGameMenu->chapterOffset ? &gSelectionOrange : &gColorWhite);
prerenderedBatchAdd(batch, newGameMenu->chapter0.testChamberText, newGameMenu->selectedChapter == newGameMenu->chapterOffset ? &gSelectionOrange : &gColorWhite); prerenderedBatchAdd(batch, newGameMenu->displayedChapter0_left.testChamberText, newGameMenu->selectedChapter == newGameMenu->chapterOffset ? &gSelectionOrange : &gColorWhite);
if (showSecondChapter) { if (showSecondChapter) {
prerenderedBatchAdd(batch, newGameMenu->chapter1.chapterText, newGameMenu->selectedChapter != newGameMenu->chapterOffset ? &gSelectionOrange : &gColorWhite); prerenderedBatchAdd(batch, newGameMenu->displayedChapter1_right.chapterText, newGameMenu->selectedChapter != newGameMenu->chapterOffset ? &gSelectionOrange : &gColorWhite);
prerenderedBatchAdd(batch, newGameMenu->chapter1.testChamberText, newGameMenu->selectedChapter != newGameMenu->chapterOffset ? &gSelectionOrange : &gColorWhite); prerenderedBatchAdd(batch, newGameMenu->displayedChapter1_right.testChamberText, newGameMenu->selectedChapter != newGameMenu->chapterOffset ? &gSelectionOrange : &gColorWhite);
} }
renderState->dl = prerenderedBatchFinish(batch, gDejaVuSansImages, renderState->dl); renderState->dl = prerenderedBatchFinish(batch, gDejaVuSansImages, renderState->dl);
@ -216,22 +216,22 @@ void newGameRender(struct NewGameMenu* newGameMenu, struct RenderState* renderSt
gSPDisplayList(renderState->dl++, ui_material_revert_list[DEJAVU_SANS_0_INDEX]); gSPDisplayList(renderState->dl++, ui_material_revert_list[DEJAVU_SANS_0_INDEX]);
graphicsCopyImage( graphicsCopyImage(
renderState, newGameMenu->chapter0.imageBuffer, renderState, newGameMenu->displayedChapter0_left.imageBuffer,
84, 48, 84, 48,
0, 0, 0, 0,
newGameMenu->chapter0.x + 5, newGameMenu->displayedChapter0_left.x + 5,
newGameMenu->chapter0.testChamberText->y + newGameMenu->chapter0.testChamberText->height + 9, newGameMenu->displayedChapter0_left.testChamberText->y + newGameMenu->displayedChapter0_left.testChamberText->height + 9,
84, 48, 84, 48,
gColorWhite gColorWhite
); );
if (showSecondChapter) { if (showSecondChapter) {
graphicsCopyImage( graphicsCopyImage(
renderState, newGameMenu->chapter1.imageBuffer, renderState, newGameMenu->displayedChapter1_right.imageBuffer,
84, 48, 84, 48,
0, 0, 0, 0,
newGameMenu->chapter1.x + 5, newGameMenu->displayedChapter1_right.x + 5,
newGameMenu->chapter1.testChamberText->y + newGameMenu->chapter1.testChamberText->height + 9, newGameMenu->displayedChapter1_right.testChamberText->y + newGameMenu->displayedChapter1_right.testChamberText->height + 9,
84, 48, 84, 48,
gColorWhite gColorWhite
); );

View file

@ -11,8 +11,8 @@
struct Chapter { struct Chapter {
void* imageData; void* imageData;
short testChamberNumber; short testChamberLevelIndex;
short testChamberDisplayNumber; short testChamberDisplayNumber; // chamberNumber
}; };
struct ChapterMenu { struct ChapterMenu {
@ -34,8 +34,8 @@ struct NewGameMenu {
struct PrerenderedText* newGameText; struct PrerenderedText* newGameText;
Gfx* topLine; Gfx* topLine;
struct ChapterMenu chapter0; struct ChapterMenu displayedChapter0_left;
struct ChapterMenu chapter1; struct ChapterMenu displayedChapter1_right;
short selectedChapter; short selectedChapter;
short chapterOffset; short chapterOffset;

View file

@ -39,7 +39,7 @@ void saveGamePopulate(struct SaveGameMenu* saveGame, int includeNew) {
if (includeNew && freeSlot != SAVEFILE_NO_SLOT) { if (includeNew && freeSlot != SAVEFILE_NO_SLOT) {
savefileInfo[numberOfSaves].slotIndex = freeSlot; savefileInfo[numberOfSaves].slotIndex = freeSlot;
savefileInfo[numberOfSaves].savefileName = translationsGet(GAMEUI_NEWSAVEGAME); savefileInfo[numberOfSaves].savefileName = translationsGet(GAMEUI_NEWSAVEGAME);
savefileInfo[numberOfSaves].testchamberIndex = getChamberNumberFromLevelIndex(gCurrentLevelIndex, gScene.player.body.currentRoom); savefileInfo[numberOfSaves].testchamberIndex = getChamberDisplayNumberFromLevelIndex(gCurrentLevelIndex, gScene.player.body.currentRoom);
savefileInfo[numberOfSaves].screenshot = gScreenGrabBuffer; savefileInfo[numberOfSaves].screenshot = gScreenGrabBuffer;
if (suggestedSlot == 0) { if (suggestedSlot == 0) {
@ -62,7 +62,7 @@ enum InputCapture saveGameUpdate(struct SaveGameMenu* saveGame) {
if (controllerGetButtonDown(0, A_BUTTON) && saveGame->savefileList->numberOfSaves) { if (controllerGetButtonDown(0, A_BUTTON) && saveGame->savefileList->numberOfSaves) {
Checkpoint* save = stackMalloc(MAX_CHECKPOINT_SIZE); Checkpoint* save = stackMalloc(MAX_CHECKPOINT_SIZE);
if (checkpointSaveInto(&gScene, save)) { if (checkpointSaveInto(&gScene, save)) {
savefileSaveGame(save, gScreenGrabBuffer, getChamberNumberFromLevelIndex(gCurrentLevelIndex, gScene.player.body.currentRoom), gCurrentTestSubject, savefileGetSlot(saveGame->savefileList)); savefileSaveGame(save, gScreenGrabBuffer, getChamberDisplayNumberFromLevelIndex(gCurrentLevelIndex, gScene.player.body.currentRoom), gCurrentTestSubject, savefileGetSlot(saveGame->savefileList));
saveGamePopulate(saveGame, 0); saveGamePopulate(saveGame, 0);
soundPlayerPlay(SOUNDS_BUTTONCLICKRELEASE, 1.0f, 0.5f, NULL, NULL, SoundTypeAll); soundPlayerPlay(SOUNDS_BUTTONCLICKRELEASE, 1.0f, 0.5f, NULL, NULL, SoundTypeAll);
}else{ }else{

View file

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

View file

@ -154,7 +154,7 @@ void savefileSave() {
#define SAVE_SLOT_SRAM_ADDRESS(index) (SRAM_ADDR + (1 + (index)) * SAVE_SLOT_SIZE) #define SAVE_SLOT_SRAM_ADDRESS(index) (SRAM_ADDR + (1 + (index)) * SAVE_SLOT_SIZE)
void savefileSaveGame(Checkpoint checkpoint, u16* screenshot, int testChamberIndex, int subjectNumber, int slotIndex) { void savefileSaveGame(Checkpoint checkpoint, u16* screenshot, int testChamberDisplayNumber, int subjectNumber, int slotIndex) {
savefileSramSave((void*)SAVE_SLOT_SRAM_ADDRESS(slotIndex), checkpoint, MAX_CHECKPOINT_SIZE); savefileSramSave((void*)SAVE_SLOT_SRAM_ADDRESS(slotIndex), checkpoint, MAX_CHECKPOINT_SIZE);
savefileSramSave((void*)SCREEN_SHOT_SRAM(slotIndex), screenshot, THUMBNAIL_IMAGE_SIZE); savefileSramSave((void*)SCREEN_SHOT_SRAM(slotIndex), screenshot, THUMBNAIL_IMAGE_SIZE);
@ -167,7 +167,7 @@ void savefileSaveGame(Checkpoint checkpoint, u16* screenshot, int testChamberInd
} }
} }
gSaveData.saveSlotMetadata[slotIndex].testChamber = testChamberIndex; gSaveData.saveSlotMetadata[slotIndex].testChamber = testChamberDisplayNumber;
gSaveData.saveSlotMetadata[slotIndex].testSubjectNumber = subjectNumber; gSaveData.saveSlotMetadata[slotIndex].testSubjectNumber = subjectNumber;
gSaveData.saveSlotMetadata[slotIndex].saveSlotOrder = 0; gSaveData.saveSlotMetadata[slotIndex].saveSlotOrder = 0;
@ -291,9 +291,10 @@ int savefileOldestSlot() {
return result; return result;
} }
void savefileMarkChapterProgress(int chamberNumber) { void savefileMarkChapterProgress(int levelIndex) {
if (chamberNumber > gSaveData.header.chapterProgress) { //int chamberNumer = getChamberDisplayNumberFromLevelIndex(levelIndex);//todo correct?
gSaveData.header.chapterProgress = chamberNumber; if (levelIndex > gSaveData.header.chapterProgressLevelIndex) {
gSaveData.header.chapterProgressLevelIndex = levelIndex;
savefileSave(); savefileSave();
} }
} }

View file

@ -28,7 +28,7 @@
struct SaveHeader { struct SaveHeader {
unsigned header; unsigned header;
unsigned char chapterProgress; unsigned char chapterProgressLevelIndex;
unsigned char flags; unsigned char flags;
unsigned char nextTestSubject; unsigned char nextTestSubject;
}; };