From 27550d497d697333f49ba17af56b4c77839c1644 Mon Sep 17 00:00:00 2001 From: Quinten Mennen Date: Tue, 3 Jun 2025 14:59:06 +0200 Subject: [PATCH] merge --- assets/Run.png | Bin 0 -> 8330 bytes assets/shaders/frag.glsl | 8 +++++++- inc/types.h | 15 ++++++++------- src/game/game.c | 16 +++++++--------- src/manager/game_manager.c | 14 +++++++------- src/menu/main_menu.c | 2 +- src/menu/menu.c | 2 +- src/moves.c | 18 +++++++++++------- src/player.c | 15 ++++++++------- src/shader/shaders.c | 18 +++++++++++------- test.cub | 2 +- 11 files changed, 62 insertions(+), 48 deletions(-) create mode 100644 assets/Run.png diff --git a/assets/Run.png b/assets/Run.png new file mode 100644 index 0000000000000000000000000000000000000000..e9b6ee7c24035b803faf17d0d6ac932dab8c48b4 GIT binary patch literal 8330 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 DT*4z` literal 0 HcmV?d00001 diff --git a/assets/shaders/frag.glsl b/assets/shaders/frag.glsl index 0900c1d..fce6ff3 100644 --- a/assets/shaders/frag.glsl +++ b/assets/shaders/frag.glsl @@ -24,6 +24,7 @@ uniform sampler2D Texture15; uniform float u_time; uniform float u_battery; uniform vec2 u_resolution; +uniform float u_hit_timer; float rand(vec2 co) { return fract(sin(dot(co.xy, vec2(12.9898,78.233))) * 43758.5453); @@ -57,7 +58,12 @@ void main() case 15: texColor = texture(Texture15, TexCoord); break; default: texColor = vec4(1.0, 0.0, 0.0, 1.0); break; } - + //generate a red flash + // if (u_hit_timer > 0.0) { + // float flash = sin(u_hit_timer * 10.0) * 0.5 + 0.5; + // FragColor = vec4(1.0, flash * 0.2, flash * 0.2, texColor.a); + // return; + // } if (TexIndex == 1) { vec2 uv = gl_FragCoord.xy / u_resolution.xy; uv.x *= u_resolution.x / u_resolution.y; diff --git a/inc/types.h b/inc/types.h index 92bcbea..a07e703 100644 --- a/inc/types.h +++ b/inc/types.h @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ -/* :::::::: */ -/* types.h :+: :+: */ -/* +:+ */ -/* By: whaffman +#+ */ -/* +#+ */ -/* Created: 2025/04/15 15:52:44 by qmennen #+# #+# */ -/* Updated: 2025/05/29 11:06:24 by whaffman ######## odam.nl */ +/* ::: :::::::: */ +/* types.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/15 15:52:44 by qmennen #+# #+# */ +/* Updated: 2025/06/03 14:41:00 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,6 +64,7 @@ typedef struct s_player t_vec2 camera; double speed; int is_moving; + float hit_timer; float battery; } t_player; diff --git a/src/game/game.c b/src/game/game.c index 49f485b..e945234 100644 --- a/src/game/game.c +++ b/src/game/game.c @@ -1,18 +1,16 @@ /* ************************************************************************** */ /* */ -/* :::::::: */ -/* game.c :+: :+: */ -/* +:+ */ -/* By: qmennen +#+ */ -/* +#+ */ -/* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */ -/* Updated: 2025/06/03 13:24:01 by whaffman ######## odam.nl */ +/* ::: :::::::: */ +/* game.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */ +/* Updated: 2025/06/03 14:16:16 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ #include "game.h" -// #include "glad.h" -// #include "MLX42_Int.h" int game_create(t_game **game) { diff --git a/src/manager/game_manager.c b/src/manager/game_manager.c index 9f90906..f179aac 100644 --- a/src/manager/game_manager.c +++ b/src/manager/game_manager.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ -/* :::::::: */ -/* game_manager.c :+: :+: */ -/* +:+ */ -/* By: qmennen +#+ */ -/* +#+ */ -/* Created: 2025/05/27 13:48:18 by qmennen #+# #+# */ -/* Updated: 2025/05/29 11:06:33 by whaffman ######## odam.nl */ +/* ::: :::::::: */ +/* game_manager.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/05/27 13:48:18 by qmennen #+# #+# */ +/* Updated: 2025/06/03 14:55:46 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/menu/main_menu.c b/src/menu/main_menu.c index 4640c09..a96c52e 100644 --- a/src/menu/main_menu.c +++ b/src/menu/main_menu.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/28 14:14:11 by qmennen #+# #+# */ -/* Updated: 2025/05/28 15:00:41 by qmennen ### ########.fr */ +/* Updated: 2025/06/03 14:19:45 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/menu/menu.c b/src/menu/menu.c index 8218c9d..c31d8c6 100644 --- a/src/menu/menu.c +++ b/src/menu/menu.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/27 14:31:53 by qmennen #+# #+# */ -/* Updated: 2025/05/28 15:21:30 by qmennen ### ########.fr */ +/* Updated: 2025/06/03 14:22:52 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/moves.c b/src/moves.c index e67d974..890eec8 100644 --- a/src/moves.c +++ b/src/moves.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ -/* :::::::: */ -/* moves.c :+: :+: */ -/* +:+ */ -/* By: whaffman +#+ */ -/* +#+ */ -/* Created: 2025/05/14 20:08:27 by whaffman #+# #+# */ -/* Updated: 2025/06/03 13:43:26 by whaffman ######## odam.nl */ +/* ::: :::::::: */ +/* moves.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/05/14 20:08:27 by whaffman #+# #+# */ +/* Updated: 2025/06/03 14:54:45 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -96,4 +96,8 @@ void player_update(t_game *game, double delta_time) game->screen->flash = 3; game->player->battery -= 0.1f; } + if (game->player->hit_timer > 0) + { + game->player->hit_timer -= 1; + } } diff --git a/src/player.c b/src/player.c index 0be5d2d..ee421c1 100644 --- a/src/player.c +++ b/src/player.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ -/* :::::::: */ -/* player.c :+: :+: */ -/* +:+ */ -/* By: qmennen +#+ */ -/* +#+ */ -/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */ -/* Updated: 2025/05/23 15:22:22 by whaffman ######## odam.nl */ +/* ::: :::::::: */ +/* player.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */ +/* Updated: 2025/06/03 14:55:17 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,6 +24,7 @@ int player_create(t_game **game) player->pos.y = -1; player->speed = 3.f; player->battery = .5f; + player->hit_timer = 10.0f; (*game)->player = player; return (SUCCESS); } diff --git a/src/shader/shaders.c b/src/shader/shaders.c index ace3982..98d8442 100644 --- a/src/shader/shaders.c +++ b/src/shader/shaders.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/08 18:27:59 by qmennen #+# #+# */ -/* Updated: 2025/05/28 14:37:33 by qmennen ### ########.fr */ +/* Updated: 2025/06/03 14:41:38 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,8 @@ void set_uniforms(t_game *game) game->player->battery); glUniform2f(glGetUniformLocation(ctx->shaderprogram, "u_resolution"), game->screen->width, game->screen->height); + glUniform1f(glGetUniformLocation(ctx->shaderprogram, "u_hit_timer"), + game->player->hit_timer); } static const char *read_vertex_shader(void) @@ -32,19 +34,19 @@ static const char *read_vertex_shader(void) const char *target = "./assets/shaders/vert.glsl"; char *shader; int fd; + int file_size; size_t bytes_read; + file_size = get_file_size(target); fd = open(target, O_RDONLY); if (fd < 0) - { return (perror("Error opening shader file"), NULL); - } - shader = malloc(4096); + shader = malloc(file_size * sizeof(char) + 1); if (!shader) { return (perror("Error allocating memory for shader"), close(fd), NULL); } - bytes_read = read(fd, shader, 4096); + bytes_read = read(fd, shader, file_size); if (bytes_read < 0) { return (perror("Error reading shader file"), @@ -59,19 +61,21 @@ static const char *read_fragment_shader(void) const char *target = "./assets/shaders/frag.glsl"; char *shader; int fd; + int file_size; size_t bytes_read; + file_size = get_file_size(target); fd = open(target, O_RDONLY); if (fd < 0) { return (perror("Error opening shader file"), NULL); } - shader = malloc(4096); + shader = malloc(file_size * sizeof(char) + 1); if (!shader) { return (perror("Error allocating memory for shader"), close(fd), NULL); } - bytes_read = read(fd, shader, 4096); + bytes_read = read(fd, shader, file_size); if (bytes_read < 0) { return (perror("Error reading shader file"), diff --git a/test.cub b/test.cub index 2610275..5ca9cb5 100644 --- a/test.cub +++ b/test.cub @@ -18,7 +18,7 @@ CT ./assets/ceiling64x64.png -s a ./assets/lamp.png -c b ./assets/accu.png -s p ./assets/plant.png --e g ./assets/mushroom.png +-e g ./assets/Run.png -s m ./assets/broken_mirror.png -s t ./assets/test.png -e e ./assets/flying_eye.png