From b66b143f1aa0f9484e6b919cdc82ec087ca90db7 Mon Sep 17 00:00:00 2001 From: attilavs2 Date: Wed, 19 Mar 2025 20:26:54 +0100 Subject: [PATCH] Map tiled qui marche --- map/converter | Bin 0 -> 21056 bytes src/draw.c | 32 ++++++++++++++++++++++---------- src/draw.h | 2 ++ src/main.c | 6 ++++-- src/map.c | 9 +++++++-- src/map.h | 2 +- 6 files changed, 36 insertions(+), 15 deletions(-) create mode 100755 map/converter diff --git a/map/converter b/map/converter new file mode 100755 index 0000000000000000000000000000000000000000..f3e877d3adaaf71f2ac43f4691f7b54c6d2dc968 GIT binary patch literal 21056 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 literal 0 HcmV?d00001 diff --git a/src/draw.c b/src/draw.c index 271cb8c..fa4c9a0 100644 --- a/src/draw.c +++ b/src/draw.c @@ -28,9 +28,9 @@ char *tex_files[TEX_N] = { }; char *tile_files[TILE_N] = { + "assets/tile_grass.png", "assets/tile_grass.png", "assets/tile_cobble.png", - "assets/tile_grass.png" }; Texture2D tex_index[TEX_N]; @@ -44,28 +44,39 @@ int init_draw(){ SetTargetFPS(60); - for(int i = 0; i < TEX_N; i++) + for(int i = 0; i < TEX_N; i++){ tex_index[i] = LoadTexture(tex_files[i]); - for(int i = 0; i < TILE_N; i++) + GenTextureMipmaps(&tex_index[i]); + } + for(int i = 0; i < TILE_N; i++){ tile_index[i] = LoadImage(tile_files[i]); + ImageFormat(&tile_index[i], 4); + } return 0; } -Texture2D mkmap_img(Map *map){ +Texture2D mkmap_tex(Map *map){ uint8_t *tiles = map->layers[0]; - Image mapimg = GenImageColor(map->width*32, map->height*32, BLACK); - for(int x = 0; x < map->width; x++){ - for(int y = 0; y < map->height; y++){ + void *pixels = MemAlloc(3*map->width*32*map->height*32); + Image mapimg = {.data = pixels, + .width = map->width*32, + .height = map->height*32, + .mipmaps = 1, + .format = 4 + }; + for(int y = 0; y < map->height; y++){ + for(int x = 0; x < map->width; x++){ Rectangle recta = {.x = 0, .y = 0, - .width = map->width*32, .height = map->height*32}; + .width = 32, .height = 32}; Rectangle rectb = recta; - rectb.x = x; - rectb.y = y; + rectb.x = x*32; + rectb.y = y*32; ImageDraw(&mapimg, tile_index[tiles[map->width*y + x]], recta, rectb, WHITE); } } Texture2D maptex = LoadTextureFromImage(mapimg); + GenTextureMipmaps(&maptex); UnloadImage(mapimg); return maptex; } @@ -101,6 +112,7 @@ void draw_game(Game *game){ ClearBackground(BLACK); BeginMode2D(game->camera); + draw_map(game); draw_machines(game); draw_workers(game); EndMode2D(); diff --git a/src/draw.h b/src/draw.h index add5f10..9d3acbd 100644 --- a/src/draw.h +++ b/src/draw.h @@ -18,6 +18,8 @@ int init_draw(); +Texture2D mkmap_tex(Map *map); + void draw_game(Game *game); void draw(Game *game); diff --git a/src/main.c b/src/main.c index 0a3449e..a4b2722 100644 --- a/src/main.c +++ b/src/main.c @@ -9,6 +9,7 @@ #include "types.h" #include "game.h" +#include "map.h" #include "draw.h" #include "ui.h" @@ -26,6 +27,7 @@ int init(Game *game){ int err = init_draw(); err |= init_game(game); + load_map(game, 0); init_ui(); return err; } @@ -52,8 +54,8 @@ int main(){ int c_worker = 0; - for(int k = 0; k < 42; k++){ - for(int j = 0; j < 256; j++){ + for(int k = 0; k < 16; k++){ + for(int j = 0; j < 16; j++){ Machine *coal_mine = add_machine(&game.machines, (V2d){k*250+40,j*400+40}); coal_mine->type = MT_CoalMine; Machine *iron_mine = add_machine(&game.machines, (V2d){k*250+40,j*400+240}); diff --git a/src/map.c b/src/map.c index 93608fd..aa8ccd2 100644 --- a/src/map.c +++ b/src/map.c @@ -9,9 +9,14 @@ #include #include "types.h" +#include "draw.h" extern MapCollec mapcollec; -int load_map(int mapn){ - +int load_map(Game *game, int mapn){ + LoadedMap *nmap = &game->map; + Map *map = mapcollec.maps[mapn]; + nmap->maptex = mkmap_tex(map); + nmap->width = map->width; + nmap->height = map->height; } diff --git a/src/map.h b/src/map.h index e0ba8e5..f9d5105 100644 --- a/src/map.h +++ b/src/map.h @@ -12,4 +12,4 @@ #pragma once - +int load_map(Game *game, int mapn);