From bd185bda08d20bc5e0905e8eeaef6bb0d273ba02 Mon Sep 17 00:00:00 2001 From: sillyborja Date: Fri, 4 Sep 2026 00:18:06 -0300 Subject: [PATCH 1/2] zoom bop event (requires testing) --- .../scripting/events/gameplay/BopZoomEvent.hx | 28 ++++++++++++++++ source/funkin/game/PlayState.hx | 32 +++++++++++++++---- 2 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 source/funkin/backend/scripting/events/gameplay/BopZoomEvent.hx diff --git a/source/funkin/backend/scripting/events/gameplay/BopZoomEvent.hx b/source/funkin/backend/scripting/events/gameplay/BopZoomEvent.hx new file mode 100644 index 0000000000..e808dd0322 --- /dev/null +++ b/source/funkin/backend/scripting/events/gameplay/BopZoomEvent.hx @@ -0,0 +1,28 @@ +package funkin.backend.scripting.events.gameplay; + +final class BopZoomEvent extends CancellableEvent { + /** + Whether to use the zoomMultiplier property in the camera. + **/ + public var useZoomMultiplier:Bool; + + /** + If higher than this, the zoom will be skipped. + **/ + public var maxZoomMultiplier:Float; + + /** + The zoom's strength multiplier. + **/ + public var zoomStrength:Float; + + /** + The zoom's strength multiplier on the game camera. + **/ + public var camGameZoomMultiplier:Float; + + /** + The zoom's strength multiplier on the HUD camera. + **/ + public var camHUDZoomMultiplier:Float; +} \ No newline at end of file diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index 135edeb766..dfcb0dd75d 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -1428,13 +1428,8 @@ class PlayState extends MusicBeatState var beat = Conductor.getBeats(camZoomingEvery, camZoomingInterval, camZoomingOffset); if (camZoomingLastBeat != beat) { camZoomingLastBeat = beat; - if (useCamZoomMult) { - if (camZoomingMult < maxCamZoomMult) camZoomingMult += camZoomingStrength; - } - else if (FlxG.camera.zoom < maxCamZoom) { - FlxG.camera.zoom += camGameZoomMult * camZoomingStrength; - camHUD.zoom += camHUDZoomMult * camZoomingStrength; - } + + doBopZoom(); } } @@ -1514,6 +1509,29 @@ class PlayState extends MusicBeatState scripts.event("postDraw", e); } + public function doZoomBop() + { + var event:BopZoomEvent = EventManager.get(BopZoomEvent).recycle(useCamZoomMult, maxCamZoomMult, camZoomingStrength, camGameZoomMult, camHUDZoomMult); + gameAndCharsEvent("OnBopZoom", event); + + if (event.cancelled) + { + gameAndCharsEvent("onPostBopZoom", event); + return; + } + + if (event.useZoomMultiplier) { + if (camZoomingMult < event.maxZoomMultiplier) + camZoomingMult += event.zoomStrength; + } + else if (FlxG.camera.zoom < maxCamZoom) { + FlxG.camera.zoom += event.camGameZoomMultiplier * event.zoomStrength; + camHUD.zoom += event.camHUDZoomMultiplier * event.zoomStrength; + } + + gameAndCharsEvent("onPostBopZoom", event); + } + public function moveCamera() if (strumLines.members[curCameraTarget] != null) { var data:CamPosData = getStrumlineCamPos(curCameraTarget); data.pos.add(cameraFocusOffset.x, cameraFocusOffset.y); From 63bdc80befc0069fee468a5ebfa54c1873d21915 Mon Sep 17 00:00:00 2001 From: sillyborja Date: Fri, 4 Sep 2026 01:11:52 -0300 Subject: [PATCH 2/2] fixes --- .../backend/scripting/events/gameplay/BopZoomEvent.hx | 10 ---------- source/funkin/game/PlayState.hx | 8 ++++---- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/source/funkin/backend/scripting/events/gameplay/BopZoomEvent.hx b/source/funkin/backend/scripting/events/gameplay/BopZoomEvent.hx index e808dd0322..d9a6a54793 100644 --- a/source/funkin/backend/scripting/events/gameplay/BopZoomEvent.hx +++ b/source/funkin/backend/scripting/events/gameplay/BopZoomEvent.hx @@ -15,14 +15,4 @@ final class BopZoomEvent extends CancellableEvent { The zoom's strength multiplier. **/ public var zoomStrength:Float; - - /** - The zoom's strength multiplier on the game camera. - **/ - public var camGameZoomMultiplier:Float; - - /** - The zoom's strength multiplier on the HUD camera. - **/ - public var camHUDZoomMultiplier:Float; } \ No newline at end of file diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index dfcb0dd75d..c0eed26bb4 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -1509,9 +1509,9 @@ class PlayState extends MusicBeatState scripts.event("postDraw", e); } - public function doZoomBop() + public function doBopZoom() { - var event:BopZoomEvent = EventManager.get(BopZoomEvent).recycle(useCamZoomMult, maxCamZoomMult, camZoomingStrength, camGameZoomMult, camHUDZoomMult); + var event:BopZoomEvent = EventManager.get(BopZoomEvent).recycle(useCamZoomMult, maxCamZoomMult, camZoomingStrength); gameAndCharsEvent("OnBopZoom", event); if (event.cancelled) @@ -1525,8 +1525,8 @@ class PlayState extends MusicBeatState camZoomingMult += event.zoomStrength; } else if (FlxG.camera.zoom < maxCamZoom) { - FlxG.camera.zoom += event.camGameZoomMultiplier * event.zoomStrength; - camHUD.zoom += event.camHUDZoomMultiplier * event.zoomStrength; + FlxG.camera.zoom += camGameZoomMult * event.zoomStrength; + camHUD.zoom += camHUDZoomMult * event.zoomStrength; } gameAndCharsEvent("onPostBopZoom", event);