| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #pragma once
- #include <stdbool.h>
- #include "canvas.h"
- #include <gui/canvas.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef enum {
- GameKeyUp = 1 << 0,
- GameKeyDown = 1 << 1,
- GameKeyRight = 1 << 2,
- GameKeyLeft = 1 << 3,
- GameKeyOk = 1 << 4,
- GameKeyBack = 1 << 5,
- } GameKey;
- typedef struct {
- uint32_t held; // mask of GameKey held in current frame
- uint32_t pressed; // mask of GameKey pressed in current frame
- uint32_t released; // mask of GameKey released in current frame
- } InputState;
- typedef struct GameEngine GameEngine;
- typedef void (*GameEngineStartCallback)(GameEngine* engine, void* context);
- typedef void (*GameEngineStopCallback)(GameEngine* engine, void* context);
- typedef void (
- *GameEngineFrameCallback)(GameEngine* engine, Canvas* canvas, InputState input, void* context);
- typedef struct {
- float target_fps; // target fps
- bool show_fps; // show fps counter
- bool always_backlight; // keep backlight on
- GameEngineStartCallback start_callback; // called when engine starts
- GameEngineFrameCallback frame_callback; // frame callback, called at target fps
- GameEngineStopCallback stop_callback; // called when engine stops
- void* context; // user context passed to callback
- } GameEngineSettings;
- /** Default settings initializer */
- GameEngineSettings game_engine_settings_init(void);
- /** Game Engine allocator
- * @param settings engine settings
- * @return GameEngine* GameEngine instance
- */
- GameEngine* game_engine_alloc(GameEngineSettings settings);
- /** Run the Game Engine. Blocks until game_engine_stop() is called.
- * @param engine GameEngine instance
- */
- void game_engine_run(GameEngine* engine);
- /** Free the Game Engine
- * @param engine GameEngine instance
- */
- void game_engine_free(GameEngine* engine);
- /** Stop the Game Engine, will not block execution
- * @param engine GameEngine instance
- */
- void game_engine_stop(GameEngine* engine);
- /** Get delta time between current and previous frame
- * @param engine GameEngine instance
- * @return float delta time in seconds
- */
- float game_engine_get_delta_time(GameEngine* engine);
- /** Get delta frames between current and previous frame
- * @param engine GameEngine instance
- * @return float delta frames
- */
- float game_engine_get_delta_frames(GameEngine* engine);
- /** Enable/disable show fps counter
- * @param engine GameEngine instance
- * @param show_fps show fps counter
- */
- void game_engine_show_fps_set(GameEngine* engine, bool show_fps);
- #ifdef __cplusplus
- }
- #endif
|