mirror of
https://github.com/mwpenny/portal64-still-alive.git
synced 2024-10-20 10:37:37 -04:00
refactor some stuff
This commit is contained in:
parent
d98f371aee
commit
6ee86df06a
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
struct SaveHeader {
|
||||
unsigned header;
|
||||
unsigned char chapterProgress;
|
||||
unsigned char chapterProgressLevelIndex;
|
||||
unsigned char flags;
|
||||
unsigned char nextTestSubject;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue