From 45a73232132a6da2646bc7d5c4537ae6e058430d Mon Sep 17 00:00:00 2001 From: Ulysse Cura Date: Fri, 21 Aug 2026 23:13:20 +0200 Subject: [PATCH] Centering camera on map. --- src/camera.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/camera.c b/src/camera.c index 794ed3c..cb90cab 100644 --- a/src/camera.c +++ b/src/camera.c @@ -26,4 +26,39 @@ void camera_update(void) game.camera.view_rect.x = game.camera.tracking_pos->x + game.camera.tracking_center_offset.x - game.camera.view_rect.w / 2; game.camera.view_rect.y = game.camera.tracking_pos->y + game.camera.tracking_center_offset.y - game.camera.view_rect.h / 2; } + + if(game.map) + { + if(game.camera.view_rect.w > game.map->width * TILE_SIZE) + { + game.camera.view_rect.x = game.map->width * TILE_SIZE / 2 - game.camera.view_rect.w / 2; + } + else + { + if(game.camera.view_rect.x < 0) + { + game.camera.view_rect.x = 0; + } + else if(game.camera.view_rect.x + game.camera.view_rect.w > game.map->width * TILE_SIZE) + { + game.camera.view_rect.x = game.map->width * TILE_SIZE - game.camera.view_rect.w; + } + } + + if(game.camera.view_rect.h > game.map->height * TILE_SIZE) + { + game.camera.view_rect.y = game.map->height * TILE_SIZE / 2 - game.camera.view_rect.h / 2; + } + else + { + if(game.camera.view_rect.y < 0) + { + game.camera.view_rect.y = 0; + } + else if(game.camera.view_rect.y + game.camera.view_rect.h > game.map->height * TILE_SIZE) + { + game.camera.view_rect.y = game.map->height * TILE_SIZE - game.camera.view_rect.h; + } + } + } }