aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.c14
-rw-r--r--src/map.c41
2 files changed, 25 insertions, 30 deletions
diff --git a/src/main.c b/src/main.c
index 5b45923..bc0a14d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -14,11 +14,12 @@ int main(void) {
SetTargetFPS(TARGET_FPS);
Entities entities = {0};
- Map *map = LoadMap("assets/maps/debug.tmx", &entities);
+ Map map = LoadMap("assets/maps/debug.tmx", &entities);
- Marker *spawn = FindMarker(map, "player_spawn");
+ Marker *spawn = FindMarker(&map, "player_spawn");
Vector2 spawnPos = spawn ? spawn->position : (Vector2){0, 0};
+
RaytmxExternalTileset playerTileset = LoadTSX("assets/tilesets/elf.tsx");
Player player = {.position = spawnPos,
.speed = 80.0f,
@@ -39,16 +40,16 @@ int main(void) {
};
while (!WindowShouldClose()) {
- UpdatePlayer(&player, map, &entities);
+ UpdatePlayer(&player, &map, &entities);
UpdateFairy(&fairy, player.position);
camera.target = player.position;
BeginDrawing();
ClearBackground(BLACK);
BeginMode2D(camera);
- DrawMap(map);
- DrawPickups(&entities, map);
- DrawKeys(&entities, map);
+ DrawMap(&map);
+ DrawPickups(&entities, &map);
+ DrawKeys(&entities, &map);
DrawPlayer(&player);
DrawFairy(&fairy);
EndMode2D();
@@ -56,6 +57,7 @@ int main(void) {
}
UnloadMap(map);
+
CloseWindow();
return 0;
}
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);
}