menu: improve grouping in spell practice and stage select

This commit is contained in:
Andrei Alexeyev 2024-06-14 22:25:30 +02:00
parent bad453ce61
commit 0fe465522f
No known key found for this signature in database
GPG key ID: 72D26128040B9690
2 changed files with 10 additions and 2 deletions

View file

@ -23,6 +23,7 @@ static void draw_spell_menu(MenuData *m) {
MenuData* create_spell_menu(void) {
char title[128];
Difficulty lastdiff = D_Any;
uint16_t lastgroup = 0;
MenuData *m = alloc_menu();
@ -32,6 +33,7 @@ MenuData* create_spell_menu(void) {
m->transition = TransFadeBlack;
int n = stageinfo_get_num_stages();
for(int i = 0; i < n; ++i) {
StageInfo *stg = stageinfo_get_by_index(i);
@ -39,7 +41,9 @@ MenuData* create_spell_menu(void) {
continue;
}
if(stg->difficulty < lastdiff || (stg->difficulty == D_Extra && lastdiff != D_Extra)) {
uint16_t group = stg->id & ~0xff;
if(i && (lastgroup != group || stg->difficulty < lastdiff)) {
add_menu_separator(m);
}
@ -54,6 +58,7 @@ MenuData* create_spell_menu(void) {
}
lastdiff = stg->difficulty;
lastgroup = group;
}
add_menu_separator(m);

View file

@ -24,6 +24,7 @@ static void draw_stage_menu(MenuData *m) {
MenuData* create_stage_menu(void) {
char title[STGMENU_MAX_TITLE_LENGTH];
Difficulty lastdiff = D_Any;
uint16_t lastgroup = 0;
MenuData *m = alloc_menu();
@ -36,8 +37,9 @@ MenuData* create_stage_menu(void) {
for(int i = 0; i < n; ++i) {
StageInfo *stg = stageinfo_get_by_index(i);
Difficulty diff = stg->difficulty;
uint16_t group = stg->id & ~0xff;
if(diff < lastdiff || (diff == D_Extra && lastdiff != D_Extra) || (diff && !lastdiff)) {
if(i && (lastgroup != group || diff < lastdiff)) {
add_menu_separator(m);
}
@ -45,6 +47,7 @@ MenuData* create_stage_menu(void) {
add_menu_entry(m, title, start_game, stg);
lastdiff = diff;
lastgroup = group;
}
add_menu_separator(m);