From d3a681d55a7f1ff71f6e782c0f1d17dd157b1c51 Mon Sep 17 00:00:00 2001
From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com>
Date: Wed, 22 Mar 2023 22:43:52 +0100
Subject: [PATCH] more playback stuff
---
assets/sounds/editors/charter/metronome.mp3 | Bin 1937 -> 1989 bytes
assets/sounds/editors/charter/metronome.ogg | Bin 4850 -> 4871 bytes
buildnumber.txt | 2 +-
source/funkin/editors/charter/Charter.hx | 48 ++++++++++++++++++--
4 files changed, 45 insertions(+), 5 deletions(-)
diff --git a/assets/sounds/editors/charter/metronome.mp3 b/assets/sounds/editors/charter/metronome.mp3
index e3e6cb475f49a89d5d8ab14abf41a6bcf13b8e6d..30dbfa8f9205aa128784cd8451d1408202fe36d0 100644
GIT binary patch
delta 1087
zcmbQpf0TbhyiXTHFAlI17kGyYOx!3u@c_%jL#nJ@Yi6|WpZM|hBu3Wy|GzIBVPN3e
zz}&b+fI)}R`fa)C0*{H49K15MC%t1}50hhHU`S)DVCetw;maH#o1ee_=L7~8Gx`4w
z{r~y-|NsAgz{bX=ZvX##a&mGK4Cy~ADk`cRfC?Et{QuGbq!=GQeE*Muq5j9e$6TD&
zJS
8EStRy=voXh`{`f^JHp5ay?aA9L+v<*-DBzSl-rRe6rGlT&
z6)u^Ar^c1@bGJr)>uHoV&3OLh_p9>a*Y@R_m22fsF3(c%&*Zo$usU96LS(7>DV;Ui
zOzRe=ty!lV6tycx(ugsNZ|mO1D-8^cReR>>Ijpdj<=V$6Hqqj!TjE>Eml0vR&2|Wj
zuC4d}y+T@Z`7frz5HXqB1zA@%&c52GVw4kKP@-I}w3($j^w&Fe9;*$@8N;$=)@;&R
zEs(V4uC|wdgTq|U9u2M;O8U1=_j@*Ln*9GaaV2Y5PwJZ!sfRaaMAU!!_581z$n?9%
z-u7wr6i!iK6u6VK)b(`LK{XD(1h&Udb8J#s)f8*%!`G}`=yX5Q)1*I*VUits!-K;HFYMYbd{<^3OCJ8@NNfU{9
z8v2R5y;pn&c1KM%ix_SChKO#gXRST*Mgo?|ok
z!Q;=_DX_9r^kJ_L3!k-%mUHJL)<+&LCzC8PI(IlK{{NkDfZ5?}8&Q8-zS3JAR$QprtRh%-r08VX`CJi^&bFHb7Z{
aBiEP@FfcBWVPH^TU@!rCg=KOfYcK#4Qv|gD
delta 1019
zcmX@gKaqbzyiXXzBpl!XF7Or?n7C1R;sKV4hg4a^@~YymO#JwI5+iH<|KAsmFfedM
zFxPGoV9+0yYn+JFbFpEGX(#!vCRXr+1vmB|G?n-savY3FVK9xl(U
z%PQOZD(~uVv-h8#RV`YuR=qtv{o~)uE}IVR*)IS8_m|D)8>U5UjDG*LYMt#ho2kiX
zHvIqhU1$3p)tg~k|E!%}x;osv|MTzv`@a8|2Zja+{CmCg+uG^Z)*j7FH0F4-%d@@Z
zzg9v<_m=~gJ%criU(GP!KAc;>d*3!Q878;F2aii$c?eH7WtwEEYW~?WcWczQ?y14y
z_P=VsTJQWifA^F<*ZQAaUK7wV?~>pm#jt&m3Y%W}Pl=c&+87?N+4a<;tE#J)9-OQo
zy5M#4gTxCgj@i>r9((dyu&+5;H&*GqBxC!Q^rbbqK6>Yuy$&3aW^@d9e)_wqDc-^-xO?-6nP+AVYz@W7oz*pT#P*n_hdVE$Y0s
zK(w_i@=R#zx4P{`rp}^kB6Vkeo^xd$r|O+Mtbr=?(u!PFG9|yd9aNbc-Nsb5f;&cI
z*0hBUb6#i(vo)@&`{SC)rL^D%MY-|gGiJ2fvB
z)ls)NT?uV^k2inL0-wHJgypDSxAIBfgA!urFbvFMz1@gV!$_NzX1^l_DIU&S4YKYA
z?b=Tb{p4h}QpK>B3h1#)_8TtoUmx)-$tzLOf6jkV8UU0pE){)^2
z($^^+Of@aLS4^in$1BQVXNQkxtEZFRKZjBt7HCE;O{TPy*5L9g+16rNTmuLV+pT)@aoNZdrz-KSN0!jOmXAOW-Fr#t(
zm)kQc;DuTlyaRYfKFMOu1CGbU_Tal-Y%aq>0z0X*kf
e1KMAuz?PJFQxPvBxMz*^Jjk>(9OpOy*R28OVYik5
delta 883
zcmV-(1C0EKCh{d3PiJRS00IC200000003cW00000000QRH2;wrE(~F500031008w9
zWo5BcNDqHuX#fBM0000U=n_;1H8eIc=he2PM!kzClp_Fr1r?DW*FWy(+q&MVV!fyy
zb&J!L(57R&`Ew5N@4R0WBS#&(-TqZB&h_CitXBQQ4%OXAo0YzQD#h{1YL>anKb~~w
zQ9Csi(6&mdE&oEdrvaDvuUok!uS7-vIY(j5>b{76Zu9(1|hSMjB$^;SHj%Q#zb#
z2IC9U=}ve>IqY!wc(&RkKfC(QFa|`u;x$nMO%ni|GQFL(s&>aw?qs1{eRGX>3m4H>
zJh9ru%aDbB)UnMRj{8l4;aK`{00R>AWz#W;_zKI61>me$J{Q3XJd-&QB7ekW
z)to#x>L7e_6Wd73mW+BWXk$|=j8cd5T(F@A%Ct;0i^OM
zn?wmR!~ph>_E%oHGT+*>*;jx5bM*fIvo-3oEw|HGSwDEx
z5IxhBd_NE6Kcl<2h+qOx>-GBaniybI_8}?&{@G^v)cw3P`59oG5Ej{@pV~>`CY(3T
zbO5v1SRxP}DCPI90RY3){V4p5f$b_bt`ClrufY%CInMz0AKFM^!j$7hfLz~ScUK9=
J84hsW8UWslup9sY
diff --git a/buildnumber.txt b/buildnumber.txt
index 3081bd86..196a78e0 100644
--- a/buildnumber.txt
+++ b/buildnumber.txt
@@ -1 +1 @@
-2667
\ No newline at end of file
+2670
\ No newline at end of file
diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx
index 3ab00714..074fd7d3 100644
--- a/source/funkin/editors/charter/Charter.hx
+++ b/source/funkin/editors/charter/Charter.hx
@@ -34,6 +34,7 @@ class Charter extends UIState {
public var topMenuSpr:UITopMenu;
public var gridBackdrop:CharterBackdrop;
public var gridBackdropDummy:CharterBackdropDummy;
+ public var conductorFollowerSpr:FlxSprite;
public var hitsound:FlxSound;
public var metronome:FlxSound;
@@ -145,14 +146,17 @@ class Charter extends UIState {
},
null,
{
- label: "Go back a section"
+ label: "Go back a section",
+ onSelect: _playback_back
},
{
- label: "Go forward a section"
+ label: "Go forward a section",
+ onSelect: _playback_forward
},
null,
{
- label: "Go back to the start"
+ label: "Go back to the start",
+ onSelect: _playback_start
},
null,
{
@@ -185,7 +189,11 @@ class Charter extends UIState {
selectionBox.scrollFactor.set(1, 1);
selectionBox.incorporeal = true;
- selectionBox.cameras = notesGroup.cameras = gridBackdrop.cameras = [charterCamera];
+ conductorFollowerSpr = new FlxSprite(0, 0).makeGraphic(1, 1, -1);
+ conductorFollowerSpr.scale.set(gridBackdrop.strumlinesAmount * 4 * 40, 4);
+ conductorFollowerSpr.updateHitbox();
+
+ conductorFollowerSpr.cameras = selectionBox.cameras = notesGroup.cameras = gridBackdrop.cameras = [charterCamera];
topMenuSpr = new UITopMenu(topMenu);
@@ -195,6 +203,7 @@ class Charter extends UIState {
// adds grid and notes so that they're ALWAYS behind the UI
add(gridBackdrop);
add(notesGroup);
+ add(conductorFollowerSpr);
add(selectionBox);
// add the ui group
add(uiGroup);
@@ -397,6 +406,8 @@ class Charter extends UIState {
public inline function sortNotes()
notesGroup.sort((i, c1, c2) -> FlxSort.byValues(i, c1.step, c2.step), FlxSort.ASCENDING);
#end
+
+ var __crochet:Float;
public override function update(elapsed:Float) {
// TODO: do optimization like NoteGroup
updateNoteLogic(elapsed);
@@ -419,7 +430,24 @@ class Charter extends UIState {
if (FlxG.keys.justPressed.SPACE)
_playback_play(null);
+
+ __crochet = ((60 / Conductor.bpm) * 1000);
+ Conductor.songPosition -= __crochet * FlxG.mouse.wheel;
+
+ if (FlxG.keys.justPressed.D)
+ _playback_forward(null);
+ if (FlxG.keys.justPressed.A)
+ _playback_back(null);
+ if (FlxG.keys.justPressed.HOME)
+ _playback_start(null);
+ if (FlxG.keys.justPressed.END)
+ _playback_end(null);
}
+
+ Conductor.songPosition = FlxMath.bound(Conductor.songPosition, 0, FlxG.sound.music.length);
+
+ conductorFollowerSpr.y = curStepFloat * 40;
+ charterCamera.scroll.set(conductorFollowerSpr.x + conductorFollowerSpr.scale.x - (FlxG.width / 2), conductorFollowerSpr.y - (FlxG.height * 0.25));
}
@@ -432,6 +460,18 @@ class Charter extends UIState {
if (selection == null) return;
selection = deleteNotes(selection);
}
+ function _playback_back(_) {
+ Conductor.songPosition -= Conductor.beatsPerMesure * __crochet;
+ }
+ function _playback_forward(_) {
+ Conductor.songPosition += Conductor.beatsPerMesure * __crochet;
+ }
+ function _playback_start(_) {
+ Conductor.songPosition = 0;
+ }
+ function _playback_end(_) {
+ Conductor.songPosition = FlxG.sound.music.time;
+ }
#end
}