Updated collision event for screenshake.

This commit is contained in:
2026-09-29 07:48:20 +02:00
parent 2fc3bd07a2
commit 4a1df958e4
+14 -3
View File
@@ -1,6 +1,7 @@
package game package game
Change_Resolution_Data :: struct { res_dir: int } Change_Resolution_Data :: struct { res_dir: int }
Ball_Collision_Data :: struct { speed: f32, }
Game_Over_Data :: struct { winner_is_player: bool } Game_Over_Data :: struct { winner_is_player: bool }
Simple_Event :: enum { Simple_Event :: enum {
@@ -14,13 +15,13 @@ Simple_Event :: enum {
Game_Quit, Game_Quit,
UI_Select, UI_Select,
Score_Change, Score_Change,
Ball_Collision,
} }
Event :: union { Event :: union {
Simple_Event, Simple_Event,
Change_Resolution_Data, Change_Resolution_Data,
Game_Over_Data, Game_Over_Data,
Ball_Collision_Data,
} }
// global event storage // global event storage
@@ -56,6 +57,18 @@ process_events :: proc(game: ^Game) {
case Game_Over_Data: case Game_Over_Data:
push_scene(game, make_game_over_overlay(e.winner_is_player)) push_scene(game, make_game_over_overlay(e.winner_is_player))
case Ball_Collision_Data:
// normalize the speed between 0.0 -> 1.0
// map that value to the camera displacement
min_speed: f32 = 200.0
max_speed: f32 = 550.0
speed_factor := clamp((e.speed - min_speed) / (max_speed - min_speed), 0, 1.0)
intensity := 0.5 + (speed_factor * 4.5)
game_trigger_shake(game, intensity, duration = 0.15)
audio_play_sfx(&game.audio, .Ball_Collision)
case Simple_Event: case Simple_Event:
#partial switch e { #partial switch e {
case .Game_Start: case .Game_Start:
@@ -81,8 +94,6 @@ process_events :: proc(game: ^Game) {
case .UI_Select: case .UI_Select:
audio_play_sfx(&game.audio, .UI_Select) audio_play_sfx(&game.audio, .UI_Select)
case .Ball_Collision:
audio_play_sfx(&game.audio, .Ball_Collision)
} }
} }
} }