/* ================= UI_SPLevelMenu ================= */ void UI_SPLevelMenu( void ) { int level; int trainingLevel; const char *arenaInfo; trainingTier = -1; arenaInfo = UI_GetSpecialArenaInfo( "training" ); if( arenaInfo ) { minTier = trainingTier; trainingLevel = atoi( Info_ValueForKey( arenaInfo, "num" ) ); } else { minTier = 0; trainingLevel = -2; } finalTier = UI_GetNumSPTiers(); arenaInfo = UI_GetSpecialArenaInfo( "final" ); if( arenaInfo ) { maxTier = finalTier; } else { maxTier = finalTier - 1; if( maxTier < minTier ) { maxTier = minTier; } } level = UI_GetCurrentGame(); if ( level == -1 ) { level = UI_GetNumSPArenas() - 1; if( maxTier == finalTier ) { level++; } } if( level == trainingLevel ) { currentSet = -1; currentGame = 0; } else { currentSet = level / ARENAS_PER_TIER; currentGame = level % ARENAS_PER_TIER; } UI_SPLevelMenu_Init(); UI_PushMenu( &levelMenuInfo.menu ); Menu_SetCursorToItem( &levelMenuInfo.menu, &levelMenuInfo.item_next ); }
/* ================= UI_SPPostgameMenu_NextEvent ================= */ static void UI_SPPostgameMenu_NextEvent( void* ptr, int event ) { int level; const char *arenaInfo; if (event != QM_ACTIVATED) { return; } UI_PopMenu(); // handle specially if we just won the training map if( postgameMenuInfo.won == 0 ) { level = 0; } else { level = postgameMenuInfo.level + 1; } #if 0 currentLevel = UI_GetCurrentGame(); if( currentLevel == -1 ) { currentLevel = postgameMenuInfo.level; } currentSet = currentLevel / ARENAS_PER_TIER; if( levelSet > currentSet || levelSet == UI_GetNumSPTiers() ) { level = currentLevel; } #else level = UI_GetCurrentGame(postgameMenuInfo.level); if (level == UI_GetNumSPArenas()) { level = 0; } #endif arenaInfo = UI_GetArenaInfoByNumber( level ); if ( !arenaInfo ) { return; } UI_SPArena_Start( arenaInfo ); }