Integrate Level Selection scene transition
Internal Changelog: - Changing scene now return the scene to change into - Set the level pack and selected levelmain
parent
98b957a8ff
commit
41f3656ba1
|
@ -89,10 +89,10 @@ void process_inputs(GameEngine_t* engine, Scene_t* scene)
|
|||
}
|
||||
}
|
||||
|
||||
void change_scene(GameEngine_t* engine, unsigned int idx)
|
||||
Scene_t* change_scene(GameEngine_t* engine, unsigned int idx)
|
||||
{
|
||||
// Backwards compat
|
||||
change_active_scene(engine, idx);
|
||||
return change_active_scene(engine, idx);
|
||||
}
|
||||
|
||||
bool load_sfx(GameEngine_t* engine, const char* snd_name, uint32_t tag_idx)
|
||||
|
@ -361,11 +361,13 @@ void remove_child_scene(GameEngine_t* engine, unsigned int idx)
|
|||
child->parent_scene = NULL;
|
||||
}
|
||||
|
||||
void change_active_scene(GameEngine_t* engine, unsigned int idx)
|
||||
Scene_t* change_active_scene(GameEngine_t* engine, unsigned int idx)
|
||||
{
|
||||
engine->scenes[engine->curr_scene]->state = 0;
|
||||
engine->curr_scene = idx;
|
||||
engine->scenes[engine->curr_scene]->state = SCENE_COMPLETE_ACTIVE;
|
||||
sc_queue_clear(&engine->key_buffer);
|
||||
return engine->scenes[engine->curr_scene];
|
||||
}
|
||||
|
||||
void change_focused_scene(GameEngine_t* engine, unsigned int idx)
|
||||
|
|
|
@ -86,8 +86,8 @@ void process_active_scene_inputs(GameEngine_t* engine);
|
|||
void update_curr_scene(GameEngine_t* engine);
|
||||
void render_curr_scene(GameEngine_t* engine);
|
||||
|
||||
void change_scene(GameEngine_t* engine, unsigned int idx);
|
||||
void change_active_scene(GameEngine_t* engine, unsigned int idx);
|
||||
Scene_t* change_scene(GameEngine_t* engine, unsigned int idx);
|
||||
Scene_t* change_active_scene(GameEngine_t* engine, unsigned int idx);
|
||||
void change_focused_scene(GameEngine_t* engine, unsigned int idx);
|
||||
bool load_sfx(GameEngine_t* engine, const char* snd_name, uint32_t tag_idx);
|
||||
void play_sfx(GameEngine_t* engine, unsigned int tag_idx);
|
||||
|
|
1
main.c
1
main.c
|
@ -68,7 +68,6 @@ int main(void)
|
|||
{
|
||||
level_scene.data.level_pack = pack;
|
||||
level_scene.data.current_level = 0;
|
||||
load_level_tilemap(&level_scene, 0);
|
||||
}
|
||||
|
||||
MenuScene_t menu_scene;
|
||||
|
|
|
@ -39,18 +39,27 @@ static void level_select_do_action(Scene_t* scene, ActionType_t action, bool pre
|
|||
}
|
||||
break;
|
||||
case ACTION_EXIT:
|
||||
if (!pressed)
|
||||
{
|
||||
if(scene->engine != NULL)
|
||||
{
|
||||
change_scene(scene->engine, MAIN_MENU_SCENE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ACTION_CONFIRM:
|
||||
if (!pressed)
|
||||
{
|
||||
if (data->level_pack != NULL && data->scroll_area.curr_selection < data->level_pack->n_levels)
|
||||
{
|
||||
// TODO: Need to load the current level
|
||||
change_scene(scene->engine, LEVEL_SELECT_SCENE);
|
||||
LevelScene_t* level_scene = (LevelScene_t*)change_scene(scene->engine, GAME_SCENE);
|
||||
level_scene->data.level_pack = data->level_pack;
|
||||
level_scene->data.current_level = data->scroll_area.curr_selection;
|
||||
reload_level_tilemap(level_scene);
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -94,6 +103,7 @@ void init_level_select_scene(LevelSelectScene_t* scene)
|
|||
sc_map_put_64(&scene->scene.action_map, KEY_UP, ACTION_UP);
|
||||
sc_map_put_64(&scene->scene.action_map, KEY_DOWN, ACTION_DOWN);
|
||||
sc_map_put_64(&scene->scene.action_map, KEY_Q, ACTION_EXIT);
|
||||
sc_map_put_64(&scene->scene.action_map, KEY_ENTER, ACTION_CONFIRM);
|
||||
}
|
||||
void free_level_select_scene(LevelSelectScene_t* scene)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue