feat: multi level management *

when called without arguments, use the default levels
This commit is contained in:
mcolonna 2024-04-19 14:16:25 +02:00
parent a9c292d72b
commit 7b1e519db6
8 changed files with 44 additions and 23 deletions

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 15:26:13 by mcolonna #+# #+# */
/* Updated: 2024/04/19 14:03:49 by mcolonna ### ########.fr */
/* Updated: 2024/04/19 14:14:09 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
@ -19,31 +19,34 @@
# define FPS 20
# define TEXT_SPACE 9
# define LEVEL_COUNT 3
extern const t_const_string g_levels[LEVEL_COUNT];
typedef struct s_env
{
// GLOBAL
t_memclass mc;
t_memclass mc;
// IO
// display
void *mlx;
void *win;
void *mlx;
void *win;
// input
bool input[4];
bool enter;
bool input[4];
bool enter;
// GAME
// levels
t_const_string *levels;
int level_count;
int level_current;
const t_const_string *levels;
int level_count;
int level_current;
// room
t_room room;
t_camera camera;
int ketchup;
int max_ketchup;
t_room room;
t_camera camera;
int ketchup;
int max_ketchup;
// moves
int moves;
int moves;
} t_env;
extern t_env g_env;

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/18 17:45:16 by mcolonna #+# #+# */
/* Updated: 2024/04/19 12:48:33 by mcolonna ### ########.fr */
/* Updated: 2024/04/19 14:12:07 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
@ -15,7 +15,7 @@
void init_level(void);
void ask_retry(bool current);
void init_levels(int count, t_const_string *srcs);
void init_levels(int count, const t_const_string *srcs);
void win(void);
#endif

3
rooms/1.ber Normal file
View file

@ -0,0 +1,3 @@
1111111
1FBPCE1
1111111

3
rooms/2.ber Normal file
View file

@ -0,0 +1,3 @@
11111111
1FBPCCE1
11111111

3
rooms/3.ber Normal file
View file

@ -0,0 +1,3 @@
111111111
1FBPCCCE1
111111111

View file

@ -6,10 +6,16 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 16:32:36 by mcolonna #+# #+# */
/* Updated: 2024/04/02 14:41:12 by mcolonna ### ########.fr */
/* Updated: 2024/04/19 14:12:41 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
#include "includes.h"
const t_const_string g_levels[LEVEL_COUNT] = {
"rooms/1.ber",
"rooms/2.ber",
"rooms/3.ber",
};
t_env g_env;

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/18 17:49:39 by mcolonna #+# #+# */
/* Updated: 2024/04/19 13:18:45 by mcolonna ### ########.fr */
/* Updated: 2024/04/19 14:13:01 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
@ -29,7 +29,7 @@ void ask_retry(bool current)
}
}
void init_levels(int count, t_const_string *srcs)
void init_levels(int count, const t_const_string *srcs)
{
g_env.moves = 0;
g_env.levels = srcs;

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 15:28:34 by mcolonna #+# #+# */
/* Updated: 2024/04/18 18:04:37 by mcolonna ### ########.fr */
/* Updated: 2024/04/19 14:11:01 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
@ -43,8 +43,8 @@ int loop_hook(void)
int main(int argc, t_const_string *argv)
{
if (argc != 2)
error_str("so_long", "takes 1 argument");
if (argc > 2)
error_str("so_long", "takes max 1 argument");
g_env.mc = mem_newclass(error_err);
g_env.mlx = mlx_init();
if (!g_env.mlx)
@ -55,7 +55,10 @@ int main(int argc, t_const_string *argv)
WINDOW_TITLE);
if (!g_env.win)
error_err("mlx_new_window() failed");
init_levels(1, &argv[1]);
if (argc == 2)
init_levels(1, &argv[1]);
else
init_levels(LEVEL_COUNT, g_levels);
mlx_expose_hook(g_env.win, expose_hook, NULL);
mlx_hook(g_env.win, DestroyNotify, StructureNotifyMask, close_hook, NULL);
mlx_loop_hook(g_env.mlx, loop_hook, NULL);