From c488ac4c403292fa8fbb9caba09328afbec0830f Mon Sep 17 00:00:00 2001 From: huaqo-games Date: Thu, 6 Nov 2025 11:30:03 +0100 Subject: [PATCH] feat: add camera singleton --- src/appGame.c | 18 ++++++++++++------ src/appGameFloor.c | 4 +++- src/engineInput.c | 4 ++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/appGame.c b/src/appGame.c index eeb502e..5c380ca 100644 --- a/src/appGame.c +++ b/src/appGame.c @@ -1,3 +1,4 @@ +#include "engine.h" #include "appTypes.h" const ShaderAsset shaderAssets[SHADER_COUNT] = { @@ -11,7 +12,9 @@ const SoundtrackAsset soundtrackAssets[SOUNDTRACK_COUNT] = { void InitGame(App *app) { - GameState *g = &app->game; + + SetRandomSeed(1234); + GameState *g = &app->game; g->assets = (Assets){ .shaderAssets = shaderAssets, .soundtrackAssets = soundtrackAssets @@ -27,12 +30,14 @@ void InitGame(App *app) g->soundtracks[i] = LoadSoundtrack(g->assets.soundtrackAssets[i].path); } + g->target = LoadRenderTexture(app->window.width, app->window.height); + g->player = CreatePlayer(); + CreateCamera(g->player.physics.position, 10.0f); g->birds = CreateBirds(); g->islands = CreateIslands(); g->floor = CreateFloor(); - g->camera = CreateCamera(g->player.physics.position, 10.0f); Texture2D mouseTexture = LoadTexture("assets/mouse.png"); g->mouse = CreateMouse(0.10f, 5.0f, 10.0f, &mouseTexture); @@ -66,9 +71,9 @@ void UpdateGame(App *app) UpdateSoundtrack(&g->soundtracks[i], app->flags.soundtrackOn); } - UpdateMouse(&g->mouse, &g->camera); - UpdateCamera2D(&g->camera, &g->player.physics.position, &g->mouse); - UpdateFloor(&g->floor, &g->camera); + UpdateMouse(&g->mouse); + UpdateCamera2D(&g->player.physics.position, &g->mouse); + UpdateFloor(&g->floor); UpdatePlayer(&g->player); UpdateBirds(&g->birds); UpdateIslands(&g->islands); @@ -89,7 +94,8 @@ void RenderGame(App *app) BeginTextureMode(g->target); ClearBackground(BLACK); - BeginMode2D(g->camera); + Camera2D *camera = GetCamera(); + BeginMode2D(*camera); RenderComponents(app); EndMode2D(); DrawTextureRec diff --git a/src/appGameFloor.c b/src/appGameFloor.c index 2aea7c6..3644f1d 100644 --- a/src/appGameFloor.c +++ b/src/appGameFloor.c @@ -1,3 +1,4 @@ +#include "engine.h" #include "appTypes.h" Floor CreateFloor(void) @@ -54,8 +55,9 @@ Floor CreateFloor(void) return floor; } -void UpdateFloor(Floor *floor, const Camera2D *camera) +void UpdateFloor(Floor *floor) { + Camera2D *camera = GetCamera(); floor->bounds.x = (int)((camera->target.x - (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) - 1; floor->bounds.width = (int)((camera->target.x + (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) + 1; floor->bounds.y = (int)((camera->target.y - (GetScreenHeight() / 2.0f / camera->zoom)) / floor->sprite.frameSize.y) - 1; diff --git a/src/engineInput.c b/src/engineInput.c index 5a076ce..ebd4009 100644 --- a/src/engineInput.c +++ b/src/engineInput.c @@ -15,8 +15,8 @@ void UpdateMouseScreen(Mouse *mouse){ } -void UpdateMouse(Mouse *mouse, Camera2D *camera) { - +void UpdateMouse(Mouse *mouse) { + Camera2D* camera = GetCamera(); Vector2 pos = GetMousePosition(); mouse->screenPosition = pos; mouse->worldPosition = GetScreenToWorld2D(pos, *camera);