diff --git a/Makefile b/Makefile index bbfaef6..6f38a2d 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ INCLUDES = includes/ CODE = main error env input timedloop \ data_assets data_sprites \ display1 display2 display_utils sprite \ - room1 room2 room_utils point \ + room1 room2 room_utils1 room_utils2 point \ object_character object_snas object_wall LIBRARIES = mlx libtf LIBRARIES_FILES = libtf/libtf.a diff --git a/includes/data_sprites.h b/includes/data_sprites.h index f9cae7f..e85a6a2 100644 --- a/includes/data_sprites.h +++ b/includes/data_sprites.h @@ -6,7 +6,7 @@ /* By: mcolonna +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/11 15:56:31 by mcolonna #+# #+# */ -/* Updated: 2024/03/29 15:02:34 by mcolonna ### ########.fr */ +/* Updated: 2024/04/02 12:43:24 by mcolonna ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ # include "data_assets.h" -# define NB_SPRITES 8 +# define NB_SPRITES 9 typedef enum e_assettype { @@ -37,7 +37,8 @@ extern const t_spriteinfo g_spritesmap[NB_SPRITES]; typedef enum e_spriteid { CASE_WALL, - CASE_FLOOR, + CASE_FLOOR_1, + CASE_FLOOR_2, SPR_SNAS, SPR_SNAS_DOWN, SPR_SNAS_UP, diff --git a/includes/room.h b/includes/room.h index f7be26b..267ece2 100644 --- a/includes/room.h +++ b/includes/room.h @@ -6,7 +6,7 @@ /* By: mcolonna +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/07 23:00:45 by mcolonna #+# #+# */ -/* Updated: 2024/03/29 15:44:11 by mcolonna ### ########.fr */ +/* Updated: 2024/04/02 12:42:52 by mcolonna ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,6 @@ typedef struct s_room typedef struct s_roomcase { char c; - t_spriteid surface_spr; t_object_init object; } t_roomcase; diff --git a/includes/room_utils.h b/includes/room_utils.h index 4f695cd..6d818aa 100644 --- a/includes/room_utils.h +++ b/includes/room_utils.h @@ -6,7 +6,7 @@ /* By: mcolonna +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/13 16:34:01 by mcolonna #+# #+# */ -/* Updated: 2024/03/28 17:54:32 by mcolonna ### ########.fr */ +/* Updated: 2024/04/02 12:32:46 by mcolonna ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,5 +21,6 @@ void room_getsize(t_memclass mc, t_room *r, t_const_string path); t_roomcase *getroomcase(t_const_string path, char c); void moveobject(t_room room, t_point start, t_point move); bool isinlist(void *addr, t_list list); +void room_patch(t_room *room); #endif diff --git a/room/room.ber b/room/room.ber index 99eb0d9..662b7d6 100644 --- a/room/room.ber +++ b/room/room.ber @@ -1,5 +1,5 @@ -0011111 -0010000 -0011P00 -0000000 -0000000 +1111111 +1010001 +1011P01 +1000001 +1111111 diff --git a/src/data_sprites.c b/src/data_sprites.c index f9023ec..416ca87 100644 --- a/src/data_sprites.c +++ b/src/data_sprites.c @@ -6,7 +6,7 @@ /* By: mcolonna +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/11 16:02:29 by mcolonna #+# #+# */ -/* Updated: 2024/03/29 15:02:13 by mcolonna ### ########.fr */ +/* Updated: 2024/04/02 12:39:30 by mcolonna ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ const t_spriteinfo g_spritesmap[NB_SPRITES] = { {WALL_BORDER, 1, 50, 50, ANIMATION}, {FLOOR_1, 1, 50, 50, ANIMATION}, +{FLOOR_2, 1, 50, 50, ANIMATION}, {OBJECT_SNAS, 0, 50, 50, CHARACTER_STILL}, {OBJECT_SNAS_DOWN, 1, 50, 50, ANIMATION}, {OBJECT_SNAS_UP, 1, 50, 50, ANIMATION}, diff --git a/src/room1.c b/src/room1.c index b91c186..da7873c 100644 --- a/src/room1.c +++ b/src/room1.c @@ -6,7 +6,7 @@ /* By: mcolonna +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/07 23:31:22 by mcolonna #+# #+# */ -/* Updated: 2024/03/29 17:32:26 by mcolonna ### ########.fr */ +/* Updated: 2024/04/02 12:42:18 by mcolonna ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,7 +32,6 @@ static bool room_fromfile2( while (*line && *line != '\n') { roomcase = getroomcase(path, *line); - room->surfaces[*i] = sprite_init(roomcase->surface_spr); if (roomcase->object) { room->objects[*i] = mem_alloc(err, room->mc, sizeof(t_object)); @@ -65,6 +64,7 @@ t_room room_fromfile(t_const_string path) while (room_fromfile2(fd, path, &i, &r)) ; mem_freeall(mc); + room_patch(&r); return (r); } diff --git a/src/room_utils.c b/src/room_utils1.c similarity index 89% rename from src/room_utils.c rename to src/room_utils1.c index ce64ff4..593c0fb 100644 --- a/src/room_utils.c +++ b/src/room_utils1.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* room_utils.c :+: :+: :+: */ +/* room_utils1.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: mcolonna +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/13 16:26:28 by mcolonna #+# #+# */ -/* Updated: 2024/03/29 17:21:17 by mcolonna ### ########.fr */ +/* Updated: 2024/04/02 12:44:30 by mcolonna ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,9 +16,9 @@ #include "object.h" static t_roomcase g_roomcases[] = { -{c: '0', surface_spr: CASE_FLOOR, object: NULL}, -{c: '1', surface_spr: CASE_FLOOR, object: wall_init}, -{c: 'P', surface_spr: CASE_FLOOR, object: snas_init}, +{c: '0', object: NULL}, +{c: '1', object: wall_init}, +{c: 'P', object: snas_init}, {c: '\0'} }; diff --git a/src/room_utils2.c b/src/room_utils2.c new file mode 100644 index 0000000..8ae7389 --- /dev/null +++ b/src/room_utils2.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* room_utils2.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mcolonna +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/04/02 12:33:48 by mcolonna #+# #+# */ +/* Updated: 2024/04/02 12:51:20 by mcolonna ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "room_utils.h" +#include "data_sprites.h" + +void room_patch(t_room *room) +{ + int x; + int y; + + x = -1; + while (++x < room->width) + { + y = -1; + while (++y < room->height) + { + if (y == 0 || y == room->height - 1) + { + room->surfaces[y * room->width + x] = sprite_init(CASE_WALL); + room->objects[y * room->width + x] = NULL; + } + else + room->surfaces[y * room->width + x] = sprite_init( + CASE_FLOOR_1 + (x + y) % 2); + } + } +}