| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include <furi.h>
- #include "fgeo/game_engine.h"
- #include "fgeo/director_i.h"
- #include "fgeo/level_manager_i.h"
- #include "fgeo/level_i.h"
- void game_setup(Level* level);
- void game_destroy(void);
- static void frame_cb(RunningGameEngine* engine, Canvas* canvas, InputState input, void* context) {
- Director* director = context;
- director_input_set(director, input);
- director_engine_set(director, engine);
- LevelManager* level_manager = director_level_manager_get(director);
- level_manager_update(level_manager, director);
- level_manager_render(level_manager, director, canvas);
- }
- int32_t game_app(void* p) {
- UNUSED(p);
- Director* director = director_alloc();
- LevelManager* level_manager = level_manager_alloc();
- director_level_manager_set(director, level_manager);
- Level* level = level_manager_add_level(level_manager);
- game_setup(level);
- GameEngineSettings settings = game_engine_settings_init();
- settings.fps = 60.0f;
- settings.show_fps = true;
- settings.always_backlight = true;
- settings.frame_callback = frame_cb;
- settings.context = director;
- GameEngine* engine = game_engine_alloc(settings);
- game_engine_run(engine);
- game_engine_free(engine);
- game_destroy();
- level_manager_free(level_manager);
- director_free(director);
- return 0;
- }
|