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) {
|
||||
// Scale down input coordinates to leave room for distortion
|
||||
vec2 safeCoord = mix(vec2(0.5), coord, 0.85); // Scale down by 15%
|
||||
|
||||
vec2 centered = safeCoord * 2.0 - 1.0;
|
||||
strength = clamp(strength, 0.0, 1.0);
|
||||
vec2 centered = coord * 2.0 - 1.0;
|
||||
centered.xy *= 0.85;
|
||||
float distance = length(centered);
|
||||
|
||||
// Reduce strength near edges
|
||||
float adjustedStrength = (1 - strength) * (1.0 - smoothstep(0.7, 0.9, distance));
|
||||
|
||||
float distorted = distance * (1.0 + adjustedStrength * distance * distance);
|
||||
float distorted = distance * pow((1.0 + (1 - strength) * distance * distance), 2.0);
|
||||
|
||||
vec2 distortedCoord;
|
||||
if (distance < 0.001) {
|
||||
@ -62,6 +57,7 @@ vec2 fisheyeDistort(vec2 coord, float strength) {
|
||||
}
|
||||
|
||||
float calculateMask(vec2 coord, float fisheyeStrength, float maskThreshold, float softness) {
|
||||
fisheyeStrength = clamp(fisheyeStrength, 0.0, 1.0);
|
||||
vec2 centered = coord * 2.0 - 1.0;
|
||||
float distance = length(centered);
|
||||
|
||||
@ -69,7 +65,7 @@ float calculateMask(vec2 coord, float fisheyeStrength, float maskThreshold, floa
|
||||
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);
|
||||
distortedCoord = distortedCoord * 0.5 + 0.5;
|
||||
float maxDistortion = max(
|
||||
@ -127,7 +123,7 @@ void main()
|
||||
noise2 *= 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 );
|
||||
offset = offset > .05 ? .05 : offset;
|
||||
@ -151,7 +147,7 @@ void main()
|
||||
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);
|
||||
} else {
|
||||
FragColor = texColor;
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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 ATTACK_DAMAGE 0.03f
|
||||
# define INITIAL_BATTERY 1.0f
|
||||
# define INITIAL_BATTERY 0.5f
|
||||
# define BATTERY_RATE 0.01f
|
||||
# define BATTERY_CHARGE 0.5f
|
||||
# define CHARGE_FRAMES 10
|
||||
# define FLASH_BATTERY 0.05f
|
||||
# define SLIDESHOW_DURATION 3.0f
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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;
|
||||
int is_moving;
|
||||
float hit_timer;
|
||||
float battery_charger;
|
||||
float battery;
|
||||
} t_player;
|
||||
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* :::::::: */
|
||||
/* collision.c :+: :+: */
|
||||
/* +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* ::: :::::::: */
|
||||
/* collision.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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;
|
||||
|
||||
player = game->player;
|
||||
player->battery += 0.5f;
|
||||
if (player->battery > 1.f)
|
||||
player->battery = 1.f;
|
||||
player->battery_charger += CHARGE_FRAMES;
|
||||
sprite->type = SPRITE_TYPE_COLLECTED;
|
||||
game->scoreboard->collectibles++;
|
||||
}
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* :::::::: */
|
||||
/* game_hud.c :+: :+: */
|
||||
/* +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
||||
/* +#+ */
|
||||
/* ::: :::::::: */
|
||||
/* game_hud.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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)
|
||||
{
|
||||
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;
|
||||
if (game->player->battery < 0)
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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->speed = 3.f;
|
||||
player->battery = INITIAL_BATTERY;
|
||||
player->battery_charger = 5.f;
|
||||
player->hit_timer = 0.f;
|
||||
(*game)->player = player;
|
||||
return (SUCCESS);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user