Change title screen options and level ordering

This commit is contained in:
Lucas S. Vieira 2025-04-13 16:05:26 -03:00
parent 5ef1ad42ce
commit 05c8bc2c2f
5 changed files with 45 additions and 20 deletions

View file

@ -276,13 +276,11 @@ _goal_sign_update(ObjectState *state, ObjectTableEntry *, VECTOR *pos)
screen_level_setstate(3); screen_level_setstate(3);
} else if(screen_level_getstate() == 4) { } else if(screen_level_getstate() == 4) {
uint8_t lvl = screen_level_getlevel(); uint8_t lvl = screen_level_getlevel();
// TODO: This is temporary and goes only upto R2Z1 if(lvl == 3) {
if(lvl < 10) { // Finished engine test
if(lvl == 4) { scene_change(SCREEN_TITLE);
// Transition from GHZ1 to SWZ1 } else if(lvl < 10) {
// TODO: THIS IS TEMPORARY if(lvl == 6) {
screen_level_setlevel(6);
} else if(lvl == 6) {
// Transition from SWZ1 to AOZ1 // Transition from SWZ1 to AOZ1
// TODO: THIS IS TEMPORARY // TODO: THIS IS TEMPORARY
screen_level_setlevel(10); screen_level_setlevel(10);

View file

@ -113,7 +113,8 @@ screen_charselect_update(void *d)
if(pad_pressed(PAD_CROSS) || pad_pressed(PAD_START)) { if(pad_pressed(PAD_CROSS) || pad_pressed(PAD_START)) {
screen_level_setcharacter(data->character); screen_level_setcharacter(data->character);
screen_level_setlevel(6); // NOTE: screen_level_setlevel should have
// been called from previous screen
screen_level_setmode(LEVEL_MODE_NORMAL); screen_level_setmode(LEVEL_MODE_NORMAL);
scene_change(SCREEN_LEVEL); scene_change(SCREEN_LEVEL);
} }

View file

@ -49,8 +49,9 @@ screen_disclaimer_update(void *d)
data->disclaimer_timer++; data->disclaimer_timer++;
if((data->disclaimer_timer > 1200) || pad_pressed(PAD_START) || pad_pressed(PAD_CROSS)) { if((data->disclaimer_timer > 1200) || pad_pressed(PAD_START) || pad_pressed(PAD_CROSS)) {
if(pad_pressing(PAD_SQUARE)) { if(pad_pressing(PAD_SQUARE)) {
// Change to level select
scene_change(SCREEN_LEVELSELECT); scene_change(SCREEN_LEVELSELECT);
} else if(pad_pressing(PAD_CIRCLE)) {
scene_change(SCREEN_TITLE);
} else { } else {
screen_slide_set_next(SLIDE_SEGALOGO); screen_slide_set_next(SLIDE_SEGALOGO);
scene_change(SCREEN_SLIDE); scene_change(SCREEN_SLIDE);

View file

@ -781,7 +781,7 @@ level_load_level(screen_level_data *data)
data->level_name = "PLACEHOLDER"; data->level_name = "PLACEHOLDER";
switch(level) { switch(level) {
case 0: case 1: case 2: case 3: // Playground case 0: case 1: case 2: case 3: // Test level
data->level_name = "TEST LEVEL"; data->level_name = "TEST LEVEL";
data->level_round = 0; data->level_round = 0;
data->level_act = level; data->level_act = level;

View file

@ -183,7 +183,7 @@ screen_title_update(void *d)
} }
if(pad_pressed(PAD_START)) { if(pad_pressed(PAD_START)) {
// TODO: Check for saved data // TODO: Check for saved data?
data->menu_option = 2; // New Game data->menu_option = 2; // New Game
//data->menu_option = 1; // Continue //data->menu_option = 1; // Continue
} }
@ -196,17 +196,19 @@ screen_title_update(void *d)
if(pad_pressed(PAD_START) || pad_pressed(PAD_CROSS)) { if(pad_pressed(PAD_START) || pad_pressed(PAD_CROSS)) {
data->selected = 1; data->selected = 1;
switch(data->menu_option) { switch(data->menu_option) {
case 1: // Continue case 1: // Engine Test
// For now, this redirects you to Surely Wood Zone
screen_title_reset_demo(); screen_title_reset_demo();
screen_level_setlevel(6); // Go to Engine Test
screen_level_setlevel(0);
screen_level_setmode(LEVEL_MODE_NORMAL); screen_level_setmode(LEVEL_MODE_NORMAL);
data->next_scene = SCREEN_LEVEL; data->next_scene = SCREEN_CHARSELECT;
level_score_count = 0; level_score_count = 0;
break; break;
case 2: // New Game case 2: // New Game
// Use Surely Wood Zone 1 as first level
screen_title_reset_demo(); screen_title_reset_demo();
// Use Surely Wood Zone 1 as first level
screen_level_setlevel(6);
screen_level_setmode(LEVEL_MODE_NORMAL);
data->next_scene = SCREEN_CHARSELECT; data->next_scene = SCREEN_CHARSELECT;
level_score_count = 0; level_score_count = 0;
break; break;
@ -290,7 +292,7 @@ screen_title_drawtxt(screen_title_data *data, uint8_t idx, int16_t cx, int16_t c
u0 + w , v0, u0 + w , v0,
u0, v0 + h, u0, v0 + h,
u0 + w , v0 + h); u0 + w , v0 + h);
sort_prim(poly, OTZ_LAYER_HUD); sort_prim(poly, OTZ_LAYER_TOPMOST);
} }
static void static void
@ -415,13 +417,36 @@ screen_title_draw(void *d)
/* render_model(&data->planet); */ /* render_model(&data->planet); */
if(data->rgb_count >= 128) { if(data->rgb_count >= 128) {
screen_title_drawtxt(data, data->menu_option, CENTERX, 208); // New menu text
const char *menutxt = NULL;
switch(data->menu_option) {
case 0: menutxt = "PRESS START"; break;
case 1: menutxt = "ENGINE TEST"; break;
case 2: menutxt = "START GAME"; break;
case 3: menutxt = "LEVEL SELECT"; break;
case 4: menutxt = "SCENE SELECT"; break;
default: menutxt = "????????"; break;
}
uint16_t txt_hsize = font_measurew_big(menutxt) >> 1;
int16_t vx = CENTERX - txt_hsize;
font_set_color(0xc8, 0xc8, 0x00);
font_draw_big(menutxt, vx, 200);
if(data->menu_option > 0) { if(data->menu_option > 0) {
if(data->menu_option > 1) if(data->menu_option > 1)
screen_title_drawtxt(data, 4, CENTERX - 60, 208); screen_title_drawtxt(data, 4, CENTERX - txt_hsize - 12, 205);
if(data->menu_option < 3) if(data->menu_option < 3)
screen_title_drawtxt(data, 5, CENTERX + 60, 208); screen_title_drawtxt(data, 5, CENTERX + txt_hsize + 12, 205);
} }
font_reset_color();
/* // Old menu text */
/* screen_title_drawtxt(data, data->menu_option, CENTERX, 208); */
/* if(data->menu_option > 0) { */
/* if(data->menu_option > 1) */
/* screen_title_drawtxt(data, 4, CENTERX - 60, 208); */
/* if(data->menu_option < 3) */
/* screen_title_drawtxt(data, 5, CENTERX + 60, 208); */
/* } */
} }
int16_t x; int16_t x;