fixed get_level_num_from_course_num

This commit is contained in:
Isaac0-dev 2025-03-10 21:13:58 +10:00
parent 2d62121953
commit b1af1ade33
2 changed files with 19 additions and 7 deletions

View file

@ -55,11 +55,14 @@ s8 gLevelToCourseNumTable[] = {
#undef STUB_LEVEL #undef STUB_LEVEL
#undef DEFINE_LEVEL #undef DEFINE_LEVEL
#define STUB_LEVEL(_0, levelenum, _2, _3, _4, _5, _6, _7, _8) levelenum, #define STUB_LEVEL(_0, levelenum, courseenum, _3, _4, _5, _6, _7, _8) [courseenum] = levelenum,
#define DEFINE_LEVEL(_0, levelenum, _2, _3, _4, _5, _6, _7, _8, _9, _10) levelenum, #define DEFINE_LEVEL(_0, levelenum, courseenum, _3, _4, _5, _6, _7, _8, _9, _10) [courseenum] = levelenum,
s8 gCourseNumToLevelNumTable[] = { #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Woverride-init" // this is hacky, but its dealt with in the getter function
s8 sCourseNumToLevelNumTable[] = {
#include "levels/level_defines.h" #include "levels/level_defines.h"
}; };
#pragma GCC diagnostic pop
#undef STUB_LEVEL #undef STUB_LEVEL
#undef DEFINE_LEVEL #undef DEFINE_LEVEL
@ -70,7 +73,17 @@ s8 get_level_num_from_course_num(s16 courseNum) {
if (courseNum < 0 || courseNum >= COURSE_COUNT) { if (courseNum < 0 || courseNum >= COURSE_COUNT) {
return LEVEL_NONE; return LEVEL_NONE;
} }
return gCourseNumToLevelNumTable[courseNum]; switch (courseNum) { // deal with the overridden courses
case COURSE_NONE:
return LEVEL_CASTLE;
case COURSE_BITDW:
return LEVEL_BITDW;
case COURSE_BITFS:
return LEVEL_BITFS;
case COURSE_BITS:
return LEVEL_BITS;
}
return sCourseNumToLevelNumTable[courseNum];
} }
s8 get_level_course_num(s16 levelNum) { s8 get_level_course_num(s16 levelNum) {

View file

@ -80,7 +80,6 @@ extern s8 sUnusedGotGlobalCoinHiScore;
extern u8 gGotFileCoinHiScore; extern u8 gGotFileCoinHiScore;
extern u8 gCurrCourseStarFlags; extern u8 gCurrCourseStarFlags;
extern s8 gLevelToCourseNumTable[]; extern s8 gLevelToCourseNumTable[];
extern s8 gCourseNumToLevelNumTable[];
// game progress flags // game progress flags
#define SAVE_FLAG_FILE_EXISTS /* 0x00000001 */ (1 << 0) #define SAVE_FLAG_FILE_EXISTS /* 0x00000001 */ (1 << 0)