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];
}
int getChamberNumberFromLevelIndex(int levelIndex, int roomIndex){
int getChamberDisplayNumberFromLevelIndex(int levelIndex, int roomIndex){
switch(levelIndex){
case 0:
if (roomIndex <= 2)
@ -260,7 +260,7 @@ int getChamberNumberFromLevelIndex(int levelIndex, int roomIndex){
}
}
int getLevelIndexFromChamberNumber(int chamberNumber) {
int getLevelIndexFromChamberDisplayNumber(int chamberNumber) {
switch (chamberNumber) {
case 0:
case 1:

View file

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

View file

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

View file

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

View file

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

View file

@ -39,7 +39,7 @@ void saveGamePopulate(struct SaveGameMenu* saveGame, int includeNew) {
if (includeNew && freeSlot != SAVEFILE_NO_SLOT) {
savefileInfo[numberOfSaves].slotIndex = freeSlot;
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;
if (suggestedSlot == 0) {
@ -62,7 +62,7 @@ enum InputCapture 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, 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);
soundPlayerPlay(SOUNDS_BUTTONCLICKRELEASE, 1.0f, 0.5f, NULL, NULL, SoundTypeAll);
}else{

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, getChamberNumberFromLevelIndex(gCurrentLevelIndex, gScene.player.body.currentRoom), gCurrentTestSubject, 0);
savefileSaveGame(gCheckpoint, gScreenGrabBuffer, getChamberDisplayNumberFromLevelIndex(gCurrentLevelIndex, gScene.player.body.currentRoom), gCurrentTestSubject, 0);
}
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)
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*)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].saveSlotOrder = 0;
@ -291,9 +291,10 @@ int savefileOldestSlot() {
return result;
}
void savefileMarkChapterProgress(int chamberNumber) {
if (chamberNumber > gSaveData.header.chapterProgress) {
gSaveData.header.chapterProgress = chamberNumber;
void savefileMarkChapterProgress(int levelIndex) {
//int chamberNumer = getChamberDisplayNumberFromLevelIndex(levelIndex);//todo correct?
if (levelIndex > gSaveData.header.chapterProgressLevelIndex) {
gSaveData.header.chapterProgressLevelIndex = levelIndex;
savefileSave();
}
}

View file

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