rework to context: now there's engine and user code copies, renaming of fields, most things that shouldn't be there are hidden

This commit is contained in:
2024-10-12 20:24:47 +03:00
parent 7886650339
commit e70366f82f
14 changed files with 106 additions and 97 deletions

View File

@ -17,6 +17,8 @@
typedef struct EngineContext {
/* user code facing context */
Context game_copy;
/* engine-side context, copied to `game_copy` before every frame */
Context game;
InputState input;
@ -27,6 +29,8 @@ typedef struct EngineContext {
/* where the app was run from, used as the root for packs */
char *base_dir;
Vec2i window_dims;
/* configuration */
toml_table_t *config_table;
int64_t base_render_width;
@ -52,6 +56,7 @@ typedef struct EngineContext {
uint8_t audio_stream_channel_count;
/* main loop machinery */
int64_t delta_time; /* preserves real time frame delta with no manipilation */
int64_t clocks_per_second;
int64_t prev_frame_time;
int64_t desired_frametime; /* how long one tick should be */
@ -59,10 +64,17 @@ typedef struct EngineContext {
int64_t delta_averager_residual;
int64_t time_averager[4];
/* this should be a multiple of the current ticks per second */
/* use it to simulate low framerate (e.g. at 60 tps, set to 2 for 30 fps) */
/* it can be changed at runtime; any resulting logic anomalies are bugs */
uint32_t update_multiplicity;
SDL_GLContext *gl_context;
SDL_Window *window;
uint32_t window_id;
bool is_running;
bool window_size_has_changed;
bool resync_flag;
bool was_successful;
} EngineContext;