diff --git a/assets/flying_eye.png b/assets/flying_eye.png new file mode 100644 index 0000000..cd6d5de Binary files /dev/null and b/assets/flying_eye.png differ diff --git a/assets/mushroom.png b/assets/mushroom.png new file mode 100644 index 0000000..a2d40b0 Binary files /dev/null and b/assets/mushroom.png differ diff --git a/inc/types.h b/inc/types.h index 71c661a..067d9ec 100644 --- a/inc/types.h +++ b/inc/types.h @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 15:52:44 by qmennen #+# #+# */ -/* Updated: 2025/05/28 14:40:50 by qmennen ### ########.fr */ +/* Updated: 2025/05/28 16:44:33 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -61,6 +61,7 @@ typedef struct s_player typedef struct s_sprite { int n_frames; + int animation_speed; double dist; double cam_frac; int alpha; @@ -145,7 +146,7 @@ typedef struct s_game t_player *player; t_screen *screen; t_keyboard *keyboard; - int framecount; + double elapsed_time; int fps; } t_game; typedef struct s_game_manager diff --git a/src/game/game.c b/src/game/game.c index 0803437..5922e7d 100644 --- a/src/game/game.c +++ b/src/game/game.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */ -/* Updated: 2025/05/28 14:28:16 by qmennen ### ########.fr */ +/* Updated: 2025/05/28 16:40:12 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ // #include "glad.h" // #include "MLX42_Int.h" -int game_create(t_game **game) +int game_create(t_game **game) { *game = malloc(sizeof(t_game)); if (!game) @@ -24,7 +24,7 @@ int game_create(t_game **game) return (SUCCESS); } -void free_game(t_game **game) +void free_game(t_game **game) { if (game && *game) { @@ -38,32 +38,27 @@ void free_game(t_game **game) } } -void game_run(t_game *game) +void game_run(t_game *game) { - static int fps = 0; + static int fps = 0; - game->framecount++; + game->elapsed_time += game->screen->mlx->delta_time; fps += (int)(1.f / game->screen->mlx->delta_time); set_uniforms(game); - if (game->framecount % 20 == 0) - { - game->fps = (int)(fps / 20); - fprintf(stderr, "FPS: %d\n", fps / 20); - fps = 0; - } + player_update(game, game->screen->mlx->delta_time); cast_rays(game); render_map(game); if (game->player->is_moving) { - game->screen->img->instances[0].x = sin(game->framecount / 6.0) * 20; - game->screen->img->instances[0].y = cos(game->framecount / 3.0) * 10; + game->screen->img->instances[0].x = sin(game->elapsed_time * 10) * 20; + game->screen->img->instances[0].y = cos(game->elapsed_time * 18) * 10; } handle_battery(game); handle_record(game); } -void game_free(t_game *game) +void game_free(t_game *game) { if (game->screen) { @@ -86,7 +81,7 @@ void game_free(t_game *game) free(game); } -void game_terminate(t_game *game) +void game_terminate(t_game *game) { print_scores(game); game_free(game); diff --git a/src/game/game_hud.c b/src/game/game_hud.c index 010e56f..394d53d 100644 --- a/src/game/game_hud.c +++ b/src/game/game_hud.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/28 14:26:29 by qmennen #+# #+# */ -/* Updated: 2025/05/28 14:28:40 by qmennen ### ########.fr */ +/* Updated: 2025/05/28 16:03:03 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -78,7 +78,7 @@ void handle_record(t_game *game) int x; int y; - flash = (game->framecount / 30) % 2; + flash = ((int) game->elapsed_time) % 2; y = -15; while (y <= 15) { diff --git a/src/parser/parse_config_line.c b/src/parser/parse_config_line.c index 6ca5b3f..e1bba70 100644 --- a/src/parser/parse_config_line.c +++ b/src/parser/parse_config_line.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/22 13:10:06 by whaffman #+# #+# */ -/* Updated: 2025/05/28 14:32:43 by qmennen ### ########.fr */ +/* Updated: 2025/05/28 16:42:59 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/render/render_sprite.c b/src/render/render_sprite.c index d72a4b4..2a1549a 100644 --- a/src/render/render_sprite.c +++ b/src/render/render_sprite.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/08 12:23:17 by qmennen #+# #+# */ -/* Updated: 2025/05/28 15:05:38 by qmennen ### ########.fr */ +/* Updated: 2025/05/28 16:45:20 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -60,7 +60,7 @@ static void draw_sprite_column( tex.y = (y - column.start.y) * sprite->texture->height; tex.y *= inv_range.y; color = sample_texture_color(sprite, tex, - (int)(game->framecount / 20) % sprite->n_frames); + (int)(game->elapsed_time * sprite->animation_speed) % sprite->n_frames); if (y > 0 && y < game->screen->height && (color & 0xFF) != 0) mlx_put_pixel(game->screen->img, column.x, y, color); y++; diff --git a/src/util/initialize.c b/src/util/initialize.c index 9b554ae..d526ee9 100644 --- a/src/util/initialize.c +++ b/src/util/initialize.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/22 17:08:26 by qmennen #+# #+# */ -/* Updated: 2025/05/28 15:05:21 by qmennen ### ########.fr */ +/* Updated: 2025/05/28 16:44:40 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,7 @@ t_sprite make_sprite(mlx_texture_t *texture, double x, double y, // exit(EXIT_FAILURE); // } sprite.n_frames = sprite.texture->width / sprite.texture->height; + sprite.animation_speed = 10; sprite.pos.x = x; sprite.pos.y = y; sprite.visible = 1; diff --git a/test.cub b/test.cub index d56d505..e1fec73 100644 --- a/test.cub +++ b/test.cub @@ -18,12 +18,13 @@ CT ./assets/ceiling64x64.png -s a ./assets/lamp.png -c b ./assets/accu.png -s p ./assets/plant.png +-s g ./assets/mushroom.png -s m ./assets/broken_mirror.png -s t ./assets/test.png 1111111 111 1111 111111 1111111111 111111 1000001110111001 100001 1000000001 10001 -10010000000b0001 100001 100000110111100011 +1001000g000b0001 100001 100000110111100011 10b0001110000001110011111111 1100b0001000000001 1000001 1000100a000010000001 10000000100b000001 100m00111000100000b00000b00111110p00000100p00m001