aboutsummaryrefslogtreecommitdiff
path: root/src/map.c
diff options
context:
space:
mode:
authorschererleander <leander@schererleander.de>2026-03-12 02:01:02 +0100
committerschererleander <leander@schererleander.de>2026-03-12 02:01:02 +0100
commit0adca22d9e86130dfbcbfe2fc021710a8d45a927 (patch)
treece009a5c3464abd5ad66a352f6b79d8a4d0c195e /src/map.c
parentaafdfa0734b7c5dcea9f0e914ef6c66852b9d3a7 (diff)
refactor(map): return Map by value instead of heap allocation
Diffstat (limited to 'src/map.c')
-rw-r--r--src/map.c41
1 files changed, 17 insertions, 24 deletions
diff --git a/src/map.c b/src/map.c
index 468024f..29d8dfe 100644
--- a/src/map.c
+++ b/src/map.c
@@ -6,7 +6,6 @@
#include "raytmx.h"
#include <assert.h>
-#include <stdlib.h>
#include <string.h>
static TmxLayer *FindLayerByName(TmxMap *map, const char *name) {
@@ -115,34 +114,30 @@ static void LoadMarkers(Map *map, TmxLayer *layer) {
}
}
-Map *LoadMap(const char *filename, Entities *entities) {
- Map *map = (Map *)malloc(sizeof(Map));
- if (!map)
- return NULL;
+Map LoadMap(const char *filename, Entities *entities) {
+ Map map = {0};
- map->map = LoadTMX(filename);
- if (!map->map) {
- free(map);
- return NULL;
- }
+ map.map = LoadTMX(filename);
+ if (!map.map)
+ return map;
- map->wallLayer = FindLayerByName(map->map, "Walls");
- map->groundLayer = FindLayerByName(map->map, "Ground");
- map->decorLayer = FindLayerByName(map->map, "Decor");
+ map.wallLayer = FindLayerByName(map.map, "Walls");
+ map.groundLayer = FindLayerByName(map.map, "Ground");
+ map.decorLayer = FindLayerByName(map.map, "Decor");
if (entities) {
- TmxLayer *pickupsLayer = FindLayerByName(map->map, "Pickups");
+ TmxLayer *pickupsLayer = FindLayerByName(map.map, "Pickups");
if (pickupsLayer)
- LoadPickups(map->map, pickupsLayer, entities);
+ LoadPickups(map.map, pickupsLayer, entities);
- TmxLayer *itemsLayer = FindLayerByName(map->map, "Items");
+ TmxLayer *itemsLayer = FindLayerByName(map.map, "Items");
if (itemsLayer)
- LoadKeys(map->map, itemsLayer, entities);
+ LoadKeys(map.map, itemsLayer, entities);
}
- TmxLayer *markersLayer = FindLayerByName(map->map, "Markers");
+ TmxLayer *markersLayer = FindLayerByName(map.map, "Markers");
if (markersLayer)
- LoadMarkers(map, markersLayer);
+ LoadMarkers(&map, markersLayer);
return map;
}
@@ -212,12 +207,10 @@ Marker *FindMarker(Map *map, const char *name) {
for (int i = 0; i < map->markersCount; i++)
if (strcmp(map->markers[i].name, name) == 0)
return &map->markers[i];
+ TraceLog(2, "Marker not found");
return NULL;
}
-void UnloadMap(Map *map) {
- if (!map)
- return;
- UnloadTMX(map->map);
- free(map);
+void UnloadMap(Map map) {
+ UnloadTMX(map.map);
}