battery fun
This commit is contained in:
parent
280d1ac498
commit
300b867ef7
@ -38,16 +38,11 @@ float hash(vec2 p) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
vec2 fisheyeDistort(vec2 coord, float strength) {
|
vec2 fisheyeDistort(vec2 coord, float strength) {
|
||||||
// Scale down input coordinates to leave room for distortion
|
strength = clamp(strength, 0.0, 1.0);
|
||||||
vec2 safeCoord = mix(vec2(0.5), coord, 0.85); // Scale down by 15%
|
vec2 centered = coord * 2.0 - 1.0;
|
||||||
|
centered.xy *= 0.85;
|
||||||
vec2 centered = safeCoord * 2.0 - 1.0;
|
|
||||||
float distance = length(centered);
|
float distance = length(centered);
|
||||||
|
float distorted = distance * pow((1.0 + (1 - strength) * distance * distance), 2.0);
|
||||||
// Reduce strength near edges
|
|
||||||
float adjustedStrength = (1 - strength) * (1.0 - smoothstep(0.7, 0.9, distance));
|
|
||||||
|
|
||||||
float distorted = distance * (1.0 + adjustedStrength * distance * distance);
|
|
||||||
|
|
||||||
vec2 distortedCoord;
|
vec2 distortedCoord;
|
||||||
if (distance < 0.001) {
|
if (distance < 0.001) {
|
||||||
@ -62,14 +57,15 @@ vec2 fisheyeDistort(vec2 coord, float strength) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
float calculateMask(vec2 coord, float fisheyeStrength, float maskThreshold, float softness) {
|
float calculateMask(vec2 coord, float fisheyeStrength, float maskThreshold, float softness) {
|
||||||
vec2 centered = coord * 2.0 - 1.0;
|
fisheyeStrength = clamp(fisheyeStrength, 0.0, 1.0);
|
||||||
|
vec2 centered = coord * 2.0 - 1.0;
|
||||||
float distance = length(centered);
|
float distance = length(centered);
|
||||||
|
|
||||||
if (distance == 0.0) {
|
if (distance == 0.0) {
|
||||||
return 1.0;
|
return 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float distorted = distance * (1.0 + (1 - fisheyeStrength) * distance * distance);
|
float distorted = distance * pow((1 + (1 - fisheyeStrength) * distance * distance), 2.0);
|
||||||
vec2 distortedCoord = centered * (distorted / distance);
|
vec2 distortedCoord = centered * (distorted / distance);
|
||||||
distortedCoord = distortedCoord * 0.5 + 0.5;
|
distortedCoord = distortedCoord * 0.5 + 0.5;
|
||||||
float maxDistortion = max(
|
float maxDistortion = max(
|
||||||
@ -127,7 +123,7 @@ void main()
|
|||||||
noise2 *= 0.9 + 0.1 * sin(uv.y * 400.0);
|
noise2 *= 0.9 + 0.1 * sin(uv.y * 400.0);
|
||||||
noise3 *= 0.9 + 0.1 * sin(uv.y * 400.0);
|
noise3 *= 0.9 + 0.1 * sin(uv.y * 400.0);
|
||||||
|
|
||||||
distortedCoord = fisheyeDistort(TexCoord, u_battery * 1.2);
|
distortedCoord = fisheyeDistort(TexCoord, u_battery);
|
||||||
|
|
||||||
float offset = 0.001 / (u_battery * u_battery + 0.001 );
|
float offset = 0.001 / (u_battery * u_battery + 0.001 );
|
||||||
offset = offset > .05 ? .05 : offset;
|
offset = offset > .05 ? .05 : offset;
|
||||||
@ -151,7 +147,7 @@ void main()
|
|||||||
noiseColor *= vec4(vig) * vec4(1.0, inv_hit, inv_hit, 1.0);
|
noiseColor *= vec4(vig) * vec4(1.0, inv_hit, inv_hit, 1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
float mask = calculateMask(gl_FragCoord.xy / u_resolution, u_battery, 0.08f, 0.02f);
|
float mask = calculateMask(gl_FragCoord.xy / u_resolution, u_battery, 0.08f, 0.16f);
|
||||||
FragColor = vec4(noiseColor.rgb * mask, noiseColor.a);
|
FragColor = vec4(noiseColor.rgb * mask, noiseColor.a);
|
||||||
} else {
|
} else {
|
||||||
FragColor = texColor;
|
FragColor = texColor;
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */
|
/* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/11 16:29:00 by qmennen ### ########.fr */
|
/* Updated: 2025/06/11 20:16:49 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -21,8 +21,10 @@
|
|||||||
# define TITLE "Cub3D"
|
# define TITLE "Cub3D"
|
||||||
|
|
||||||
# define ATTACK_DAMAGE 0.03f
|
# define ATTACK_DAMAGE 0.03f
|
||||||
# define INITIAL_BATTERY 1.0f
|
# define INITIAL_BATTERY 0.5f
|
||||||
# define BATTERY_RATE 0.01f
|
# define BATTERY_RATE 0.01f
|
||||||
|
# define BATTERY_CHARGE 0.5f
|
||||||
|
# define CHARGE_FRAMES 10
|
||||||
# define FLASH_BATTERY 0.05f
|
# define FLASH_BATTERY 0.05f
|
||||||
# define SLIDESHOW_DURATION 3.0f
|
# define SLIDESHOW_DURATION 3.0f
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 15:52:44 by qmennen #+# #+# */
|
/* Created: 2025/04/15 15:52:44 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/11 17:49:35 by qmennen ### ########.fr */
|
/* Updated: 2025/06/11 20:14:51 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -67,6 +67,7 @@ typedef struct s_player
|
|||||||
double speed;
|
double speed;
|
||||||
int is_moving;
|
int is_moving;
|
||||||
float hit_timer;
|
float hit_timer;
|
||||||
|
float battery_charger;
|
||||||
float battery;
|
float battery;
|
||||||
} t_player;
|
} t_player;
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* collision.c :+: :+: */
|
/* collision.c :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/22 14:40:59 by qmennen #+# #+# */
|
/* Created: 2025/04/22 14:40:59 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/10 19:34:32 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/11 20:17:16 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -17,9 +17,7 @@ static void collect(t_game *game, t_sprite *sprite)
|
|||||||
t_player *player;
|
t_player *player;
|
||||||
|
|
||||||
player = game->player;
|
player = game->player;
|
||||||
player->battery += 0.5f;
|
player->battery_charger += CHARGE_FRAMES;
|
||||||
if (player->battery > 1.f)
|
|
||||||
player->battery = 1.f;
|
|
||||||
sprite->type = SPRITE_TYPE_COLLECTED;
|
sprite->type = SPRITE_TYPE_COLLECTED;
|
||||||
game->scoreboard->collectibles++;
|
game->scoreboard->collectibles++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* game_hud.c :+: :+: */
|
/* game_hud.c :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/05/28 14:26:29 by qmennen #+# #+# */
|
/* Created: 2025/05/28 14:26:29 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/10 19:37:31 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/11 20:19:25 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -53,6 +53,15 @@ static void draw_battery(mlx_image_t *img, float battery)
|
|||||||
|
|
||||||
void handle_battery(t_game *game)
|
void handle_battery(t_game *game)
|
||||||
{
|
{
|
||||||
|
if (game->player->battery_charger > 0)
|
||||||
|
{
|
||||||
|
game->player->battery += (BATTERY_CHARGE / CHARGE_FRAMES);
|
||||||
|
game->player->battery_charger--;
|
||||||
|
}
|
||||||
|
if (game->player->battery > 1.0f)
|
||||||
|
{
|
||||||
|
game->player->battery = 1.0f;
|
||||||
|
}
|
||||||
game->player->battery -= game->screen->mlx->delta_time * BATTERY_RATE;
|
game->player->battery -= game->screen->mlx->delta_time * BATTERY_RATE;
|
||||||
if (game->player->battery < 0)
|
if (game->player->battery < 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */
|
/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/11 16:26:14 by qmennen ### ########.fr */
|
/* Updated: 2025/06/11 20:15:21 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -24,6 +24,7 @@ int player_create(t_game **game)
|
|||||||
player->pos.y = -1;
|
player->pos.y = -1;
|
||||||
player->speed = 3.f;
|
player->speed = 3.f;
|
||||||
player->battery = INITIAL_BATTERY;
|
player->battery = INITIAL_BATTERY;
|
||||||
|
player->battery_charger = 5.f;
|
||||||
player->hit_timer = 0.f;
|
player->hit_timer = 0.f;
|
||||||
(*game)->player = player;
|
(*game)->player = player;
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user