feat: reorganize the code

This commit is contained in:
mcolonna 2024-04-02 14:45:03 +02:00
parent a00a02e527
commit 5103cbf709
40 changed files with 326 additions and 325 deletions

View file

@ -2,11 +2,18 @@
NAME = so_long NAME = so_long
SRCS = src/ SRCS = src/
INCLUDES = includes/ INCLUDES = includes/
CODE = main error env input timedloop \ CODE = $(addprefix main/, \
data_assets data_sprites \ main error env input timedloop \
display1 display2 display_utils sprite \ ) \
room1 room2 room_utils1 room_utils2 point \ $(addprefix display/, \
object_character object_snas object_wall data_assets data_sprites \
display1 display2 display_utils sprite \
) \
$(addprefix room/, \
room1 room2 room_utils1 room_utils2 \
object_character object_snas object_wall \
) \
utils/point
LIBRARIES = mlx libtf LIBRARIES = mlx libtf
LIBRARIES_FILES = libtf/libtf.a LIBRARIES_FILES = libtf/libtf.a
LIBRARIES_LINK = mlx LIBRARIES_LINK = mlx

View file

@ -1,49 +0,0 @@
/!\ NEEDS UPDATE
data\_assets
- `NB_ASSETS`
- `t_assetinfo`
- `g_assetsmap`
- `t_assetid`...
- `t_direction`
- `t_pixel`
- `t_component`
data\_sprites
- `NB_SPRITES`
- `t_spriteinfo`
- `t_spritesmap`
- `t_spriteid`
display
- `t_image`
- `display_init()`
- `display_erase()`
- `display_draw()`
- `display_flush()`
- `display_destroyall()`
env
- `WINDOW_WIDTH`
- `WINDOW_HEIGHT`
- `WINDOW_TITLE`
- `t_env`
- `g_env`
error
- `err()`
- `err_perror()`
- `finish()`
room
- `t_surface`...
- `t_object`
- `t_room`
- `t_roomcase`
- `room_fromfile()`
- `room_draw()`
- `room_free()`
sprite
- `t_sprite`
- `sprite_init()`
- `sprite_draw()`
main
- `main()`
- `expose_hook()`
- `close_hook()`
- `loop_hook()`

View file

@ -6,22 +6,16 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/29 17:43:01 by mcolonna #+# #+# */ /* Created: 2024/02/29 17:43:01 by mcolonna #+# #+# */
/* Updated: 2024/03/28 15:09:30 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:27:46 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef DATA_ASSETS_H #ifndef DATA_ASSETS_H
# define DATA_ASSETS_H # define DATA_ASSETS_H
# include <stdint.h>
# include "libtf.h"
# define NB_ASSETS 36 # define NB_ASSETS 36
typedef uint32_t t_pixel; typedef struct s_assetmeta
typedef uint8_t t_component;
typedef struct s_asset
{ {
t_const_string src; t_const_string src;
int limit_left; int limit_left;
@ -29,9 +23,9 @@ typedef struct s_asset
int limit_up; int limit_up;
int limit_down; int limit_down;
bool opaque; bool opaque;
} t_assetinfo; } t_assetmeta;
extern const t_assetinfo g_assetsmap[NB_ASSETS]; extern const t_assetmeta g_assetsmap[NB_ASSETS];
/** /**
* Index for each asset. Must be in the same order than g_assetsmap. * Index for each asset. Must be in the same order than g_assetsmap.
@ -39,7 +33,7 @@ extern const t_assetinfo g_assetsmap[NB_ASSETS];
* The images of an object with directions must be in this order: * The images of an object with directions must be in this order:
* down, up, left, right * down, up, left, right
*/ */
typedef enum e_assetid typedef enum e_assetsmap_id
{ {
FLOOR_1, FLOOR_1,
FLOOR_2, FLOOR_2,
@ -77,16 +71,7 @@ typedef enum e_assetid
OBJECT_EXIT_USING2_5, OBJECT_EXIT_USING2_5,
OBJECT_EXIT_USING2_6, OBJECT_EXIT_USING2_6,
OBJECT_EXIT_USING2_7 OBJECT_EXIT_USING2_7
} t_assetid; } t_assetsmap_id;
typedef enum e_direction
{
DOWN,
UP,
LEFT,
RIGHT,
NO_DIRECTION
} t_direction;
# define OBJECT_SNAS OBJECT_SNAS_DOWN # define OBJECT_SNAS OBJECT_SNAS_DOWN
# define OBJECT_FIRSK OBJECT_FIRSK_DOWN # define OBJECT_FIRSK OBJECT_FIRSK_DOWN

View file

@ -6,35 +6,33 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/11 15:56:31 by mcolonna #+# #+# */ /* Created: 2024/03/11 15:56:31 by mcolonna #+# #+# */
/* Updated: 2024/04/02 12:43:24 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:38:37 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef DATA_SPRITES_H #ifndef DATA_SPRITES_H
# define DATA_SPRITES_H # define DATA_SPRITES_H
# include "data_assets.h"
# define NB_SPRITES 9 # define NB_SPRITES 9
typedef enum e_assettype typedef enum e_spritetype
{ {
ANIMATION, // loops through all the sprites ANIMATION, // loops through all the sprites
CHARACTER_STILL, // down up left and right positions CHARACTER_STILL, // down up left and right positions
} t_assettype; } t_spritetype;
typedef struct s_spriteinfo typedef struct s_spritemeta
{ {
t_assetid first_frame; t_assetsmap_id first_frame;
int nb_frames; int nb_frames;
int origin_x; int origin_x;
int origin_y; int origin_y;
t_assettype type; t_spritetype type;
} t_spriteinfo; } t_spritemeta;
extern const t_spriteinfo g_spritesmap[NB_SPRITES]; extern const t_spritemeta g_spritesmap[NB_SPRITES];
typedef enum e_spriteid typedef enum e_spritesmap_id
{ {
CASE_WALL, CASE_WALL,
CASE_FLOOR_1, CASE_FLOOR_1,
@ -45,6 +43,6 @@ typedef enum e_spriteid
SPR_SNAS_LEFT, SPR_SNAS_LEFT,
SPR_SNAS_RIGHT, SPR_SNAS_RIGHT,
SPR_WALL, SPR_WALL,
} t_spriteid; } t_spritesmap_id;
#endif #endif

View file

@ -6,22 +6,18 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 14:32:08 by mcolonna #+# #+# */ /* Created: 2024/02/26 14:32:08 by mcolonna #+# #+# */
/* Updated: 2024/03/11 15:53:57 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:26:51 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef DISPLAY_H #ifndef DISPLAY_H
# define DISPLAY_H # define DISPLAY_H
# include <stdint.h>
# include "libtf.h"
# include "data_assets.h"
typedef struct s_image typedef struct s_image
{ {
int width; int width;
int height; int height;
t_assetinfo asset; t_assetmeta asset;
void *img; void *img;
t_pixel *data; t_pixel *data;
} t_image; } t_image;
@ -41,7 +37,7 @@ void display_erase(void);
* You must call display_flush() after drawing all images. * You must call display_flush() after drawing all images.
* x,y is the top-left position of the image. * x,y is the top-left position of the image.
*/ */
void display_draw(int x, int y, t_assetid asset); void display_draw(int x, int y, t_assetsmap_id asset);
/** /**
* Draw all the screen in the buffer. * Draw all the screen in the buffer.

19
includes/display/pixel.h Normal file
View file

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* pixel.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/02 17:17:44 by mcolonna #+# #+# */
/* Updated: 2024/04/02 17:18:22 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef PIXEL_H
# define PIXEL_H
typedef uint32_t t_pixel;
typedef uint8_t t_component;
#endif

View file

@ -6,23 +6,20 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/07 22:13:20 by mcolonna #+# #+# */ /* Created: 2024/03/07 22:13:20 by mcolonna #+# #+# */
/* Updated: 2024/03/28 15:59:30 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:37:12 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef SPRITE_H #ifndef SPRITE_H
# define SPRITE_H # define SPRITE_H
# include "data_assets.h"
# include "data_sprites.h"
typedef struct s_sprite typedef struct s_sprite
{ {
t_spriteinfo *info; t_spritemeta *meta;
int index; int index;
} t_sprite; } t_sprite;
t_sprite sprite_init(t_spriteid spr); t_sprite sprite_init(t_spritesmap_id spr);
void sprite_draw(int x, int y, t_sprite *spr); void sprite_draw(int x, int y, t_sprite *spr);

49
includes/includes.h Normal file
View file

@ -0,0 +1,49 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* includes.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/02 13:53:41 by mcolonna #+# #+# */
/* Updated: 2024/04/02 18:26:03 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef INCLUDES_H
# define INCLUDES_H
# include <fcntl.h>
# include <time.h>
# include <stdbool.h>
# include <string.h>
# include <stdlib.h>
# include <stddef.h>
# include <stdint.h>
# include <X11/keysym.h>
# include <X11/Xlib.h>
# include <errno.h>
# include "libtf.h"
# include "mlx.h"
# include "utils/direction.h"
# include "utils/point.h"
# include "display/pixel.h"
# include "display/data_assets.h"
# include "display/data_sprites.h"
# include "display/display.h"
# include "display/sprite.h"
# include "room/object.h"
# include "room/character.h"
# include "room/objects.h"
# include "room/room.h"
# include "main/env.h"
# include "main/error.h"
# include "main/input.h"
# include "main/timedloop.h"
# include "main/main.h"
#endif

View file

@ -6,16 +6,13 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 15:26:13 by mcolonna #+# #+# */ /* Created: 2024/02/26 15:26:13 by mcolonna #+# #+# */
/* Updated: 2024/03/29 18:27:02 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 14:39:26 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef ENV_H #ifndef ENV_H
# define ENV_H # define ENV_H
# include "libtf.h"
# include "room.h"
# define WINDOW_WIDTH 600 # define WINDOW_WIDTH 600
# define WINDOW_HEIGHT 400 # define WINDOW_HEIGHT 400
# define WINDOW_TITLE "undretale" # define WINDOW_TITLE "undretale"

View file

@ -6,18 +6,16 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 16:04:31 by mcolonna #+# #+# */ /* Created: 2024/02/26 16:04:31 by mcolonna #+# #+# */
/* Updated: 2024/03/11 13:23:02 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 18:04:00 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef ERROR_H #ifndef ERROR_H
# define ERROR_H # define ERROR_H
# include "libtf.h" void error_err(t_const_string msg);
void error_perror(t_const_string s);
void err(t_const_string msg); void error_str(t_const_string s, t_const_string msg);
void err_perror(t_const_string s); void success(void);
void err_perror_str(t_const_string s, t_const_string msg);
void finish(void);
#endif #endif

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/26 12:16:32 by mcolonna #+# #+# */ /* Created: 2024/03/26 12:16:32 by mcolonna #+# #+# */
/* Updated: 2024/03/29 18:32:38 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 14:39:38 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

18
includes/main/main.h Normal file
View file

@ -0,0 +1,18 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/02 13:39:54 by mcolonna #+# #+# */
/* Updated: 2024/04/02 14:39:40 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef MAIN_H
# define MAIN_H
int main(void);
#endif

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/26 15:02:16 by mcolonna #+# #+# */ /* Created: 2024/03/26 15:02:16 by mcolonna #+# #+# */
/* Updated: 2024/03/26 15:02:50 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 14:39:46 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -1,50 +1,25 @@
/* ************************************************************************** */ /* ************************************************************************** */
/* */ /* */
/* ::: :::::::: */ /* ::: :::::::: */
/* object.h :+: :+: :+: */ /* character.h :+: :+: :+: */
/* +:+ +:+ +:+ */ /* +:+ +:+ +:+ */
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 14:58:25 by mcolonna #+# #+# */ /* Created: 2024/04/02 17:46:05 by mcolonna #+# #+# */
/* Updated: 2024/03/29 15:29:58 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:46:46 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef OBJECT_H #ifndef CHARACTER_H
# define OBJECT_H # define CHARACTER_H
# include "point.h"
# include "data_assets.h"
# include "libtf.h"
# include "display.h"
# include "sprite.h"
/**** OBJECT ****/
typedef struct s_object t_object;
typedef struct s_objecttype
{
t_point (*loop)(t_object *, t_point pos);
void (*draw)(t_object *, int x, int y);
} t_objecttype;
typedef struct s_object
{
t_objecttype type;
void *data;
bool solid;
} t_object;
typedef t_object (*t_object_init)(t_memclass);
/**** CHARACTER ****/
typedef struct s_character_sprites typedef struct s_character_sprites
{ {
t_spriteid still; t_spritesmap_id still;
t_spriteid walk_left; t_spritesmap_id walk_left;
t_spriteid walk_right; t_spritesmap_id walk_right;
t_spriteid walk_up; t_spritesmap_id walk_up;
t_spriteid walk_down; t_spritesmap_id walk_down;
} t_character_sprites; } t_character_sprites;
typedef struct s_character typedef struct s_character
@ -60,20 +35,4 @@ t_point character_loop(t_character *character, t_point pos,
t_direction (*brain)(void)); t_direction (*brain)(void));
t_character character_init(t_character_sprites *sprites); t_character character_init(t_character_sprites *sprites);
/**** SNAS ****/
typedef struct s_snas_data
{
t_character character;
} t_snas_data;
t_object snas_init(t_memclass mc);
/**** WALL ****/
typedef struct s_wall_data
{
t_sprite spr;
} t_wall_data;
t_object wall_init(t_memclass mc);
#endif #endif

33
includes/room/object.h Normal file
View file

@ -0,0 +1,33 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* object.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 14:58:25 by mcolonna #+# #+# */
/* Updated: 2024/04/02 17:49:28 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef OBJECT_H
# define OBJECT_H
typedef struct s_object t_object;
typedef struct s_objecttype
{
t_point (*loop)(t_object *, t_point pos);
void (*draw)(t_object *, int x, int y);
} t_objecttype;
typedef struct s_object
{
t_objecttype type;
void *data;
bool solid;
} t_object;
typedef t_object (*t_object_init)(t_memclass);
#endif

32
includes/room/objects.h Normal file
View file

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* objects.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/02 17:47:01 by mcolonna #+# #+# */
/* Updated: 2024/04/02 17:48:38 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef OBJECTS_H
# define OBJECTS_H
// SNAS
typedef struct s_snas_data
{
t_character character;
} t_snas_data;
t_object snas_init(t_memclass mc);
// WALL
typedef struct s_wall_data
{
t_sprite spr;
} t_wall_data;
t_object wall_init(t_memclass mc);
#endif

View file

@ -6,17 +6,13 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/07 23:00:45 by mcolonna #+# #+# */ /* Created: 2024/03/07 23:00:45 by mcolonna #+# #+# */
/* Updated: 2024/04/02 12:42:52 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:50:58 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef ROOM_H #ifndef ROOM_H
# define ROOM_H # define ROOM_H
# include "sprite.h"
# include "libtf.h"
# include "object.h"
typedef struct s_room typedef struct s_room
{ {
int width; int width;
@ -26,12 +22,6 @@ typedef struct s_room
t_memclass mc; t_memclass mc;
} t_room; } t_room;
typedef struct s_roomcase
{
char c;
t_object_init object;
} t_roomcase;
t_room room_fromfile(t_const_string path); t_room room_fromfile(t_const_string path);
void room_loop(t_room room); void room_loop(t_room room);

View file

@ -0,0 +1,25 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* direction.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/02 17:28:40 by mcolonna #+# #+# */
/* Updated: 2024/04/02 17:28:56 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef DIRECTION_H
# define DIRECTION_H
typedef enum e_direction
{
DOWN,
UP,
LEFT,
RIGHT,
NO_DIRECTION
} t_direction;
#endif

View file

@ -6,15 +6,13 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 15:05:03 by mcolonna #+# #+# */ /* Created: 2024/03/15 15:05:03 by mcolonna #+# #+# */
/* Updated: 2024/03/27 18:22:51 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 14:39:41 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef POINT_H #ifndef POINT_H
# define POINT_H # define POINT_H
# include "data_assets.h"
typedef struct s_point typedef struct s_point
{ {
int x; int x;

View file

@ -6,16 +6,16 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 16:27:06 by mcolonna #+# #+# */ /* Created: 2024/02/26 16:27:06 by mcolonna #+# #+# */
/* Updated: 2024/03/11 15:54:15 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:27:27 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "data_assets.h" #include "includes.h"
/** /**
* Path of each asset relative to assets/, without extension. * Path of each asset relative to assets/, without extension.
*/ */
const t_assetinfo g_assetsmap[NB_ASSETS] = { const t_assetmeta g_assetsmap[NB_ASSETS] = {
{"floor/1", 50, 100, 50, 100, true}, {"floor/1", 50, 100, 50, 100, true},
{"floor/2", 50, 100, 50, 100, true}, {"floor/2", 50, 100, 50, 100, true},
// WALL // WALL

View file

@ -6,13 +6,13 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/11 16:02:29 by mcolonna #+# #+# */ /* Created: 2024/03/11 16:02:29 by mcolonna #+# #+# */
/* Updated: 2024/04/02 12:39:30 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:37:34 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "data_sprites.h" #include "includes.h"
const t_spriteinfo g_spritesmap[NB_SPRITES] = { const t_spritemeta g_spritesmap[NB_SPRITES] = {
{WALL_BORDER, 1, 50, 50, ANIMATION}, {WALL_BORDER, 1, 50, 50, ANIMATION},
{FLOOR_1, 1, 50, 50, ANIMATION}, {FLOOR_1, 1, 50, 50, ANIMATION},
{FLOOR_2, 1, 50, 50, ANIMATION}, {FLOOR_2, 1, 50, 50, ANIMATION},

View file

@ -6,17 +6,12 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 15:05:30 by mcolonna #+# #+# */ /* Created: 2024/02/26 15:05:30 by mcolonna #+# #+# */
/* Updated: 2024/03/11 13:03:37 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 18:03:21 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "display.h" #include "includes.h"
#include "display_utils.h" #include "display_utils.h"
#include "env.h"
#include "error.h"
#include "mlx.h"
#include "libtf.h"
#include <stdlib.h>
void display_init(void) void display_init(void)
{ {
@ -30,7 +25,7 @@ void display_init(void)
} }
g_screenbuf.img = mlx_new_image(g_env.mlx, WINDOW_WIDTH, WINDOW_HEIGHT); g_screenbuf.img = mlx_new_image(g_env.mlx, WINDOW_WIDTH, WINDOW_HEIGHT);
if (!g_screenbuf.img) if (!g_screenbuf.img)
err("on mlx_new_image()"); error_err("on mlx_new_image()");
g_screenbuf.width = WINDOW_WIDTH; g_screenbuf.width = WINDOW_WIDTH;
g_screenbuf.height = WINDOW_HEIGHT; g_screenbuf.height = WINDOW_HEIGHT;
g_screenbuf.data = get_data_addr(g_screenbuf.img); g_screenbuf.data = get_data_addr(g_screenbuf.img);

View file

@ -6,17 +6,12 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 15:05:30 by mcolonna #+# #+# */ /* Created: 2024/02/26 15:05:30 by mcolonna #+# #+# */
/* Updated: 2024/03/06 13:40:18 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:43:34 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "display.h" #include "includes.h"
#include "display_utils.h" #include "display_utils.h"
#include "env.h"
#include "error.h"
#include "mlx.h"
#include "libtf.h"
#include <stdlib.h>
static inline void add_color(t_pixel *dest, t_pixel src) static inline void add_color(t_pixel *dest, t_pixel src)
{ {
@ -98,7 +93,7 @@ static inline void display_draw_opaque(int x, int y, t_image img)
} }
} }
void display_draw(int x, int y, t_assetid asset) void display_draw(int x, int y, t_assetsmap_id asset)
{ {
const t_image img = g_allassets[asset]; const t_image img = g_allassets[asset];

View file

@ -6,14 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/06 13:03:30 by mcolonna #+# #+# */ /* Created: 2024/03/06 13:03:30 by mcolonna #+# #+# */
/* Updated: 2024/03/06 13:48:02 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 18:03:15 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "display_utils.h" #include "includes.h"
#include "mlx.h"
#include "error.h"
#include "env.h"
t_image g_allassets[NB_ASSETS]; t_image g_allassets[NB_ASSETS];
t_image g_screenbuf; t_image g_screenbuf;
@ -27,7 +24,7 @@ t_pixel *get_data_addr(void *img)
r = (t_pixel *)mlx_get_data_addr(img, &bpp, &size_line, &endian); r = (t_pixel *)mlx_get_data_addr(img, &bpp, &size_line, &endian);
if (!r || bpp != 32 || endian != 0) if (!r || bpp != 32 || endian != 0)
err("wrong image format"); error_err("wrong image format");
return (r); return (r);
} }
@ -50,17 +47,17 @@ void load_xpm_file_with_alpha(int i)
t_string src_mask; t_string src_mask;
void *mask; void *mask;
tmp = str_join(err, g_env.mc, "assets/", g_assetsmap[i].src); tmp = str_join(error_err, g_env.mc, "assets/", g_assetsmap[i].src);
src = str_join(err, g_env.mc, tmp, ".xpm"); src = str_join(error_err, g_env.mc, tmp, ".xpm");
src_mask = str_join(err, g_env.mc, tmp, ".alpha.xpm"); src_mask = str_join(error_err, g_env.mc, tmp, ".alpha.xpm");
g_allassets[i].img = mlx_xpm_file_to_image(g_env.mlx, src, g_allassets[i].img = mlx_xpm_file_to_image(g_env.mlx, src,
&(g_allassets[i].width), &g_allassets[i].height); &(g_allassets[i].width), &g_allassets[i].height);
if (!g_allassets[i].img) if (!g_allassets[i].img)
err("image loading failed"); error_err("image loading failed");
mask = mlx_xpm_file_to_image(g_env.mlx, src_mask, mask = mlx_xpm_file_to_image(g_env.mlx, src_mask,
&(g_allassets[i].width), &g_allassets[i].height); &(g_allassets[i].width), &g_allassets[i].height);
if (!mask) if (!mask)
err("image loading failed"); error_err("image loading failed");
apply_mask_to_image(g_allassets[i].img, mask, apply_mask_to_image(g_allassets[i].img, mask,
g_allassets[i].width * g_allassets[i].height); g_allassets[i].width * g_allassets[i].height);
mlx_destroy_image(g_env.mlx, mask); mlx_destroy_image(g_env.mlx, mask);

View file

@ -6,15 +6,13 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/06 12:59:24 by mcolonna #+# #+# */ /* Created: 2024/03/06 12:59:24 by mcolonna #+# #+# */
/* Updated: 2024/03/06 13:47:02 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 14:39:19 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef DISPLAY_UTILS_H #ifndef DISPLAY_UTILS_H
# define DISPLAY_UTILS_H # define DISPLAY_UTILS_H
# include "display.h"
extern t_image g_allassets[NB_ASSETS]; extern t_image g_allassets[NB_ASSETS];
extern t_image g_screenbuf; extern t_image g_screenbuf;

View file

@ -6,19 +6,17 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/07 22:28:52 by mcolonna #+# #+# */ /* Created: 2024/03/07 22:28:52 by mcolonna #+# #+# */
/* Updated: 2024/03/28 16:02:01 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 18:02:35 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "sprite.h" #include "includes.h"
#include "display.h"
#include "error.h"
t_sprite sprite_init(t_spriteid id) t_sprite sprite_init(t_spritesmap_id id)
{ {
t_sprite r; t_sprite r;
r.info = (t_spriteinfo *)(g_spritesmap + id); r.meta = (t_spritemeta *)(g_spritesmap + id);
r.index = 0; r.index = 0;
return (r); return (r);
} }
@ -26,19 +24,19 @@ t_sprite sprite_init(t_spriteid id)
void sprite_draw(int x, int y, t_sprite *spr) void sprite_draw(int x, int y, t_sprite *spr)
{ {
display_draw( display_draw(
x - spr->info->origin_x, y - spr->info->origin_y, x - spr->meta->origin_x, y - spr->meta->origin_y,
spr->info->first_frame + spr->index); spr->meta->first_frame + spr->index);
if (spr->info->type == ANIMATION) if (spr->meta->type == ANIMATION)
{ {
spr->index++; spr->index++;
if (spr->index >= spr->info->nb_frames) if (spr->index >= spr->meta->nb_frames)
spr->index = 0; spr->index = 0;
} }
} }
void sprite_character_set_direction(t_sprite *spr, t_direction value) void sprite_character_set_direction(t_sprite *spr, t_direction value)
{ {
if (spr->info->type != CHARACTER_STILL) if (spr->meta->type != CHARACTER_STILL)
err("the sprite must be a CHARACTER_STILL sprite."); error_err("the sprite must be a CHARACTER_STILL sprite.");
spr->index = value; spr->index = value;
} }

View file

@ -6,10 +6,10 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 16:32:36 by mcolonna #+# #+# */ /* Created: 2024/02/26 16:32:36 by mcolonna #+# #+# */
/* Updated: 2024/02/27 16:42:22 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 14:41:12 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "env.h" #include "includes.h"
t_env g_env; t_env g_env;

View file

@ -6,17 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 16:05:21 by mcolonna #+# #+# */ /* Created: 2024/02/26 16:05:21 by mcolonna #+# #+# */
/* Updated: 2024/03/11 13:37:12 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:56:31 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include <stdlib.h> #include "includes.h"
#include <string.h>
#include <errno.h>
#include "error.h"
#include "libtf.h"
#include "display.h"
#include "env.h"
static void end(int no) static void end(int no)
{ {
@ -25,7 +19,7 @@ static void end(int no)
exit(no); exit(no);
} }
void err(t_const_string msg) void error_err(t_const_string msg)
{ {
print_line(err_remember, 2, "Error"); print_line(err_remember, 2, "Error");
if (str_eq(msg, "errno")) if (str_eq(msg, "errno"))
@ -35,7 +29,7 @@ void err(t_const_string msg)
end(1); end(1);
} }
void err_perror(t_const_string s) void error_perror(t_const_string s)
{ {
print_line(err_remember, 2, "Error"); print_line(err_remember, 2, "Error");
print_str(err_remember, 2, s); print_str(err_remember, 2, s);
@ -44,7 +38,7 @@ void err_perror(t_const_string s)
end(1); end(1);
} }
void err_perror_str(t_const_string s, t_const_string msg) void error_str(t_const_string s, t_const_string msg)
{ {
print_line(err_remember, 2, "Error"); print_line(err_remember, 2, "Error");
print_str(err_remember, 2, s); print_str(err_remember, 2, s);
@ -53,7 +47,7 @@ void err_perror_str(t_const_string s, t_const_string msg)
end(1); end(1);
} }
void finish(void) void success(void)
{ {
end(0); end(0);
} }

View file

@ -6,14 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/26 12:26:17 by mcolonna #+# #+# */ /* Created: 2024/03/26 12:26:17 by mcolonna #+# #+# */
/* Updated: 2024/03/29 18:32:27 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 14:41:14 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "error.h" #include "includes.h"
#include "libtf.h"
#include "env.h"
#include <X11/keysym.h>
static int g_input_i = 0; static int g_input_i = 0;
static bool g_to_unpress[4] = {false, false, false, false}; static bool g_to_unpress[4] = {false, false, false, false};

View file

@ -6,19 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 15:28:34 by mcolonna #+# #+# */ /* Created: 2024/02/26 15:28:34 by mcolonna #+# #+# */
/* Updated: 2024/03/29 18:33:10 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 18:04:18 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "mlx.h" #include "includes.h"
#include "env.h"
#include "error.h"
#include "display.h"
#include "data_assets.h"
#include "room.h"
#include "input.h"
#include "timedloop.h"
#include <X11/Xlib.h>
int expose_hook(void) int expose_hook(void)
{ {
@ -29,7 +21,7 @@ int expose_hook(void)
int close_hook(void) int close_hook(void)
{ {
mlx_do_key_autorepeaton(g_env.mlx); mlx_do_key_autorepeaton(g_env.mlx);
finish(); success();
return (0); return (0);
} }
@ -50,15 +42,15 @@ int loop_hook(void)
int main(void) int main(void)
{ {
g_env.mc = mem_newclass(err); g_env.mc = mem_newclass(error_err);
g_env.mlx = mlx_init(); g_env.mlx = mlx_init();
if (!g_env.mlx) if (!g_env.mlx)
err("mlx_init() failed"); error_err("mlx_init() failed");
display_init(); display_init();
g_env.win = mlx_new_window(g_env.mlx, WINDOW_WIDTH, WINDOW_HEIGHT, g_env.win = mlx_new_window(g_env.mlx, WINDOW_WIDTH, WINDOW_HEIGHT,
WINDOW_TITLE); WINDOW_TITLE);
if (!g_env.win) if (!g_env.win)
err("mlx_new_window() failed"); error_err("mlx_new_window() failed");
g_env.room = room_fromfile("room/room.ber"); g_env.room = room_fromfile("room/room.ber");
room_draw(g_env.room); room_draw(g_env.room);
mlx_expose_hook(g_env.win, expose_hook, NULL); mlx_expose_hook(g_env.win, expose_hook, NULL);

View file

@ -6,12 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/26 14:54:49 by mcolonna #+# #+# */ /* Created: 2024/03/26 14:54:49 by mcolonna #+# #+# */
/* Updated: 2024/03/26 15:51:04 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 14:41:31 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include <time.h> #include "includes.h"
#include "env.h"
static long get_nanos(void) static long get_nanos(void)
{ {

View file

@ -6,19 +6,15 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 15:27:03 by mcolonna #+# #+# */ /* Created: 2024/03/15 15:27:03 by mcolonna #+# #+# */
/* Updated: 2024/03/29 15:51:38 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:35:56 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "object.h" #include "includes.h"
#include "error.h"
#include "sprite.h"
#include "libtf.h"
#include "env.h"
static void character_initstate(t_character *character) static void character_initstate(t_character *character)
{ {
const t_spriteid walk_sprites[] = { const t_spritesmap_id walk_sprites[] = {
character->sprites->walk_down, character->sprites->walk_down,
character->sprites->walk_up, character->sprites->walk_up,
character->sprites->walk_left, character->sprites->walk_left,

View file

@ -6,15 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 15:27:03 by mcolonna #+# #+# */ /* Created: 2024/03/15 15:27:03 by mcolonna #+# #+# */
/* Updated: 2024/03/29 18:29:12 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 18:02:48 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "object.h" #include "includes.h"
#include "error.h"
#include "sprite.h"
#include "libtf.h"
#include "env.h"
static t_direction snas_brain(void) static t_direction snas_brain(void)
{ {
@ -55,7 +51,7 @@ t_object snas_init(t_memclass mc)
t_snas_data *data; t_snas_data *data;
r.type = type; r.type = type;
data = mem_alloc(err, mc, sizeof(t_snas_data)); data = mem_alloc(error_err, mc, sizeof(t_snas_data));
data->character = character_init((t_character_sprites *)&sprites); data->character = character_init((t_character_sprites *)&sprites);
r.data = data; r.data = data;
r.solid = true; r.solid = true;

View file

@ -6,15 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 15:27:03 by mcolonna #+# #+# */ /* Created: 2024/03/15 15:27:03 by mcolonna #+# #+# */
/* Updated: 2024/03/29 15:52:32 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 18:02:25 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "object.h" #include "includes.h"
#include "error.h"
#include "sprite.h"
#include "libtf.h"
#include "env.h"
static t_point wall_loop(t_object *obj, t_point pos) static t_point wall_loop(t_object *obj, t_point pos)
{ {
@ -36,7 +32,7 @@ t_object wall_init(t_memclass mc)
t_wall_data *data; t_wall_data *data;
r.type = type; r.type = type;
data = mem_alloc(err, mc, sizeof(t_wall_data)); data = mem_alloc(error_err, mc, sizeof(t_wall_data));
data->spr = sprite_init(SPR_WALL); data->spr = sprite_init(SPR_WALL);
r.data = data; r.data = data;
r.solid = true; r.solid = true;

View file

@ -6,15 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/07 23:31:22 by mcolonna #+# #+# */ /* Created: 2024/03/07 23:31:22 by mcolonna #+# #+# */
/* Updated: 2024/04/02 12:42:18 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 18:28:28 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include <fcntl.h> #include "includes.h"
#include "room.h"
#include "error.h"
#include "libtf.h"
#include "env.h"
#include "room_utils.h" #include "room_utils.h"
static bool room_fromfile2( static bool room_fromfile2(
@ -22,11 +18,11 @@ static bool room_fromfile2(
{ {
t_const_string line; t_const_string line;
t_roomcase *roomcase; t_roomcase *roomcase;
const t_memclass mc = mem_subclass(err, g_env.mc); const t_memclass mc = mem_subclass(error_err, g_env.mc);
line = read_line(err_remember, mc, fd); line = read_line(err_remember, mc, fd);
if (err_get()) if (err_get())
err_perror(path); error_perror(path);
if (!line) if (!line)
return (false); return (false);
while (*line && *line != '\n') while (*line && *line != '\n')
@ -34,7 +30,8 @@ static bool room_fromfile2(
roomcase = getroomcase(path, *line); roomcase = getroomcase(path, *line);
if (roomcase->object) if (roomcase->object)
{ {
room->objects[*i] = mem_alloc(err, room->mc, sizeof(t_object)); room->objects[*i] = mem_alloc(error_err, room->mc,
sizeof(t_object));
*(room->objects[*i]) = roomcase->object(room->mc); *(room->objects[*i]) = roomcase->object(room->mc);
} }
else else
@ -50,16 +47,18 @@ t_room room_fromfile(t_const_string path)
{ {
t_room r; t_room r;
int fd; int fd;
const t_memclass mc = mem_subclass(err, g_env.mc); const t_memclass mc = mem_subclass(error_err, g_env.mc);
int i; int i;
room_getsize(mc, &r, path); room_getsize(mc, &r, path);
r.mc = mem_subclass(err, g_env.mc); r.mc = mem_subclass(error_err, g_env.mc);
fd = open(path, O_RDONLY); fd = open(path, O_RDONLY);
if (fd == -1) if (fd == -1)
err_perror(path); error_perror(path);
r.surfaces = mem_alloc(err, r.mc, r.width * r.height * sizeof(t_sprite)); r.surfaces = mem_alloc(error_err, r.mc, r.width * r.height
r.objects = mem_alloc(err, r.mc, r.width * r.height * sizeof(t_object *)); * sizeof(t_sprite));
r.objects = mem_alloc(error_err, r.mc, r.width * r.height
* sizeof(t_object *));
i = 0; i = 0;
while (room_fromfile2(fd, path, &i, &r)) while (room_fromfile2(fd, path, &i, &r))
; ;
@ -99,7 +98,7 @@ void room_loop(t_room room)
t_point pos; t_point pos;
t_object *object; t_object *object;
t_point move; t_point move;
const t_memclass mc = mem_subclass(err, g_env.mc); const t_memclass mc = mem_subclass(error_err, g_env.mc);
t_list objects_done; t_list objects_done;
objects_done = list_createempty(mc); objects_done = list_createempty(mc);
@ -114,7 +113,7 @@ void room_loop(t_room room)
{ {
move = object->type.loop(object, pos); move = object->type.loop(object, pos);
moveobject(room, pos, move); moveobject(room, pos, move);
list_add(err, &objects_done, object); list_add(error_err, &objects_done, object);
} }
pos.y++; pos.y++;
} }

View file

@ -6,15 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/07 23:31:22 by mcolonna #+# #+# */ /* Created: 2024/03/07 23:31:22 by mcolonna #+# #+# */
/* Updated: 2024/03/29 17:32:47 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:44:12 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include <fcntl.h> #include "includes.h"
#include "room.h"
#include "error.h"
#include "libtf.h"
#include "env.h"
#include "room_utils.h" #include "room_utils.h"
t_object *room_getobjectfaced( t_object *room_getobjectfaced(

View file

@ -6,15 +6,18 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/13 16:34:01 by mcolonna #+# #+# */ /* Created: 2024/03/13 16:34:01 by mcolonna #+# #+# */
/* Updated: 2024/04/02 12:32:46 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:51:05 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#ifndef ROOM_UTILS_H #ifndef ROOM_UTILS_H
# define ROOM_UTILS_H # define ROOM_UTILS_H
# include "libtf.h" typedef struct s_roomcase
# include "room.h" {
char c;
t_object_init object;
} t_roomcase;
int getlinelen(t_const_string line); int getlinelen(t_const_string line);
void room_getsize(t_memclass mc, t_room *r, t_const_string path); void room_getsize(t_memclass mc, t_room *r, t_const_string path);

View file

@ -6,14 +6,12 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/13 16:26:28 by mcolonna #+# #+# */ /* Created: 2024/03/13 16:26:28 by mcolonna #+# #+# */
/* Updated: 2024/04/02 12:44:30 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:58:59 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include <fcntl.h> #include "includes.h"
#include "room_utils.h" #include "room_utils.h"
#include "error.h"
#include "object.h"
static t_roomcase g_roomcases[] = { static t_roomcase g_roomcases[] = {
{c: '0', object: NULL}, {c: '0', object: NULL},
@ -39,23 +37,23 @@ void room_getsize(t_memclass mc, t_room *r, t_const_string path)
fd = open(path, O_RDONLY); fd = open(path, O_RDONLY);
if (fd == -1) if (fd == -1)
err_perror(path); error_perror(path);
line = read_line(err_remember, mc, fd); line = read_line(err_remember, mc, fd);
if (err_get()) if (err_get())
err_perror(path); error_perror(path);
if (!line) if (!line)
err_perror_str(path, "room is empty"); error_str(path, "room is empty");
r->width = getlinelen(line); r->width = getlinelen(line);
r->height = 1; r->height = 1;
while (true) while (true)
{ {
line = read_line(err_remember, mc, fd); line = read_line(err_remember, mc, fd);
if (err_get()) if (err_get())
err_perror(path); error_perror(path);
if (!line) if (!line)
break ; break ;
if (getlinelen(line) != r->width) if (getlinelen(line) != r->width)
err_perror_str(path, "the lines have different lengths"); error_str(path, "the lines have different lengths");
r->height++; r->height++;
} }
} }
@ -70,7 +68,7 @@ t_roomcase *getroomcase(t_const_string path, char c)
if (g_roomcases[i].c == c) if (g_roomcases[i].c == c)
return (&g_roomcases[i]); return (&g_roomcases[i]);
} }
err_perror_str(path, "unknown char"); error_str(path, "unknown char");
return (NULL); return (NULL);
} }

View file

@ -6,12 +6,12 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/02 12:33:48 by mcolonna #+# #+# */ /* Created: 2024/04/02 12:33:48 by mcolonna #+# #+# */
/* Updated: 2024/04/02 12:51:20 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 17:52:14 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "includes.h"
#include "room_utils.h" #include "room_utils.h"
#include "data_sprites.h"
void room_patch(t_room *room) void room_patch(t_room *room)
{ {

View file

@ -6,11 +6,11 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */ /* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 15:24:37 by mcolonna #+# #+# */ /* Created: 2024/03/15 15:24:37 by mcolonna #+# #+# */
/* Updated: 2024/03/27 18:23:24 by mcolonna ### ########.fr */ /* Updated: 2024/04/02 14:41:19 by mcolonna ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "point.h" #include "includes.h"
t_point point_init(int x, int y) t_point point_init(int x, int y)
{ {