From 5721ce68a0737255e81c51524ce405fc79098a22 Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Sat, 3 Feb 2024 20:28:45 -0700 Subject: [PATCH] some new assets (not warnings) --- .../images/editors/charter/add-strumline.png | Bin 611 -> 0 bytes .../images/editors/charter/lock-strumline.png | Bin 949 -> 1525 bytes assets/images/editors/new.png | Bin 5596 -> 588 bytes source/funkin/editors/charter/Charter.hx | 19 +++++- .../editors/charter/CharterStrumlineButton.hx | 54 +++++++++++++++++- source/funkin/options/type/NewOption.hx | 2 + 6 files changed, 69 insertions(+), 6 deletions(-) delete mode 100644 assets/images/editors/charter/add-strumline.png diff --git a/assets/images/editors/charter/add-strumline.png b/assets/images/editors/charter/add-strumline.png deleted file mode 100644 index f6355d051bbc3a2310c2d3006fc8388cbbe13dc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611 zcmeAS@N?(olHy`uVBq!ia0vp^?jX#;1|&l_M9Bjw&H|6fVg?4jBOuH;Rhv(mfr0V2 zr;B4q#hkaZ_ZA*<5OBLLr_M9eIMne8Q%Hl6m%>t3_Pm2Dy$hBxX*8S&onZOd;>bl_ zr)go|H*eq0e*g50#FFL9ufF~0DZmIcpW%)gzf|*@ve%oB6xP|-g*%Z&u_lZjo-g@*^xz2mcG}81TX$R9e%;^*rqM3mUqbXSr$4w zMipJj)0Q`MaryoD*{kA=sh*!Aa-MLl@as$4zRIspZNgy&OP*&>-}KL3ZKk*P@w0%* zkIRmkChjZpVzT4`ORk#OD)P8*YWDS*rE?6u-`a-Fn=W&9uPa~J?yr_^7Z%BQCoN0r z53Zl#D;g~9I+1l|w~cDXt}-+JN5}l;hF_UwJZA;>;%90`eCwCYwBG09Ar@j89A5D9 ziMLv%bJ8^SiFs3ZTX{A5Dlk7W&^dLnjwQQu!KsyolRY1*)!F$JW(s{27s=)WO5T|| z=R)s;*pr;96^?!{BlhVFKasFzTYqZfhU*grgsbFkM(v#KktO$}Zb#nl|Hr=_?47Ur zM#`_lI*|LSsq3jdOGebA$wQO^dvMVUxwZX}508bv|x?t1G*wwod-WTA!Q}a6Ta@CGu&u`8WOIPzf#6c`WDw=)>gTe~DWM4fOG^Kz diff --git a/assets/images/editors/charter/lock-strumline.png b/assets/images/editors/charter/lock-strumline.png index cf283f1959dee183af41d45b22de99217a84328b..5c5ff017ba3741a3ad4e8ffd83ddfc48eb1ef37c 100644 GIT binary patch literal 1525 zcmVPx)uSrBfRCt{2olR;RF%*DbN)KT0VGQ2HV3R<-XsIE-LApvWkhY7oy+E^SZ{R>f zx@aJw0cR8FVFJBDy3(MLC5`^x)03hP1~PU$9&0{7JxL=OpwS3mFZT&Fv^)(wpZ&UJ zKY>QakSr#$T*D>~4??98kYC3pPJXP?{QUh#`}k_PP#+?_mQ9?z>_}r0#e^ad+4XGV z(|zABII*qG!L=V@T86>n(-sys4E)Il#lYH@tTs9GXlX#}!7mZ*acr8qGH)FO}d zbF7w&ZnI&EJe0Z4OQQF&7T9)kqkVj~K2(oUax2hUMX9o=`|4{hukU&-Eovw(#Evv3 zQA{WTl`4-`obAIS0PHlWwW#t4aV*Vqw6emks(R9FH#b&k_Kyy_?cd$sZo4`@Gaj=L ztkM94RWr6^S$*HskmWeOQRemckG*|Go~oEl$1t0Y<%jl^4FI&m4B5aGr?cHvn){2} z-o7f2?%1UwM;m}aDcH$_C62c=0#zQFLaQw6dCsO|*YPIje1)QQg<4hlN+Xcvu|%EX z2<^L3kwwdu=U|9q|Aws(yUm6v^3;&)$kkM?(d}4L_v2WrC{-49UwzH}#Vza~9i%)z zR?MbjIQM(W9x$n*Nm^B+Sv`a)3RzlMEDA9Pa-^C~$K=BgDaFx78(El;YQ~l#AguN1V{U8x>i!8uA=2J-(?xtE%K`s*=&|h6H+YtR%!PR4G=f zUSkuQRvId-Z&sHh)o4DcYWRT=lrJKRIHH=;M4Kw333K?5Rk;i^IHDEo*SpUl$70F$ z;W2s?d$nA^_TjPH1QZkWsO~v#AmMV$DF&=_oQ9EJZ~MUip^#LZ*5gZ#I&7mI#=#(I zRi)-Q8j-vcHTf8=x0nwh;utSJcEow}Vlakr` z&^bBQNJJ_Q_PCTvgk-_x;uCSaZily4ID#HB63zH-<@|>J*%9&Ty#-(e(#xJr}qF2P`N3QBa@_aal1B0(;y zsw(A1t`c(=Ur?&5+|ej^enZ^>7(s9}4iU%c%}nxyN>xg<$wgIDfK_55Q3=g#fvu{_ z9gSFb0Ak>>PR?jPaav9V5vOQuk|$Iu>SzN%EDl8zK6ic-N=zi8o{R?&DUMBq*3UzS z%L?nW>3C`(76fj7P zqX`wtVaeL$#E8@THp}ve-)u1bc0-70E>bW_jIB|QQM8GQ#>pq->7*F?@sC)zMjI}- zOr%bX0n+9GPCqXcdN*KT#K}3p>GUhVIrF5 z7uuN%hMr>bnVb~(O2qB_Q{YqvvP_BDfC0%#e3~Qgt4q#vDSh`PA;^U^BHM zg_uPD0+=+W)2cUTISE+hSee;!agLk>;su$L(m7KrlZYItDZ(V=NUg0zujlL!M_4ab zgN9rwo9!;R0@rBrsa@=9p+#;BX4C5J<^F;a5t2(1^O4hYJ!Up?ETAe!tH;fSXj+8| zX^SB9o0qJA`kVrbo~U;FS`4X$Dwm*YIogf4T9GZH$Ti1GI>q``v5Dg4)y;dYAoKGa zOsbKGALE))lZWye`;>h+608?1mX4^{JO@kZC8-q=IWZ9}g4T(5391#R9W?;TY1I-@ z+6_H`5!D>ZPWI(|M%oNcMOBW*@Xy)CX_AwAvs0J{si#$~wA^-E3997eMl35))4CRH zjvOnOBe;t(K;zxP)VqH}@=AyG+#C0AApkHCIha@!-Q8Y`&YC5n2B1-nYxet}P)d>n z5@G-ZZo23A4+J470=W0=h_qKzZJb(BIXV91&#asft=&?}4lhTSjwct?1|b$!GF=$8 z9E|1vtJ7T$rc{*lmK0NRLiobQc3aY9`2d~Wga$}~4`l!V01jnXNoGw=04e|g00;m8 X000000Mb*F00000NkvXXu0mjfetfT? diff --git a/assets/images/editors/new.png b/assets/images/editors/new.png index 945c49e04578324be65fc1c26195b527301076f4..9db3dd59a57406f42d60a98880e15bfc8ed6b0c2 100644 GIT binary patch delta 563 zcmV-30?hr~E6fCciBL{Q4GJ0x0000DNk~Le0000-0000-2nGNE09CMB9{>OV32;bR za{vHbMgRa@MgbI*LqPxl0pv+UK~#90?VHVQ!!Qg+nW9q^=*0`<)G2BplVqAsVj!6! zr!J67fv%CB)E16J>xZI5<$LGAl3!?({+tj200000jLA-aX`P$UakTcUwwRO{hnk>g zt%Zn)re&t<;Y374=kM3x=iXnww6?^eS~=4)6A{tJ+h@`NJhD`(r->YnkhqngvE;;v z@!@2(kn^Omh*d1gQR`L~<){HU43NXny`1A^zwT7h6L%0bIc_qxME8}`63AhI90tf? zP>n1ES$C{|DpRvnIcv7sdzQRdIcl>-C2o`7NNilvF7$PJl`JSCWx zIhY4=YnSdTrqu2#=l@2xBG2PxpS&pvJRw=~WtCJpzHe~rZlEd zKnBQRh>@fE3brSbD#v0bQ^F{Z4|n`EiTptj_Z$X)$YFRiIZ1=yqsd7kwoQvXndknP zz#-Hvqeqk2%4t69Xp14L+sfTWimLAS>Dqtn7~J|*!Y;>-_!DhjT>-N9m0CI33zgn) zT7YiFU{MZ!ywn4=<#hArA_r6sgGD)N)!2QWBazGGVy1Fh%t>bCw1{ZU$Y}xOFw~wl z+4t-!92=L>5dWH~)pm!FLuB}Gj4d*l5?Q@wMgRZ+003YVegLNAUTzn3?a`CA6($Et B2QB~r literal 5596 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 { - if (_ != null) createStrumline(strumLines.members.length, _); + if (_ != null) { + createStrumline(strumLines.members.length, _); + + strumlineAddButton.textTweenColor.color = 0xFF00FF00; + strumlineAddButton.pressAnimation(true); + } })); } @@ -1025,6 +1035,9 @@ class Charter extends UIState { if (charterCamera.zoom != (charterCamera.zoom = lerp(charterCamera.zoom, __camZoom, __firstFrame ? 1 : 0.125))) updateDisplaySprites(); + if (strumLines != null) + strumlineLockButton.button.animation.play(strumLines.draggable ? "1" : "0", true); + WindowUtils.prefix = undos.unsaved ? "* " : ""; SaveWarning.showWarning = undos.unsaved; diff --git a/source/funkin/editors/charter/CharterStrumlineButton.hx b/source/funkin/editors/charter/CharterStrumlineButton.hx index c2d8647c..6683e0dd 100644 --- a/source/funkin/editors/charter/CharterStrumlineButton.hx +++ b/source/funkin/editors/charter/CharterStrumlineButton.hx @@ -1,5 +1,6 @@ package funkin.editors.charter; +import flixel.tweens.FlxTween; import flixel.math.FlxPoint; class CharterStrumlineButton extends UISprite { @@ -7,6 +8,7 @@ class CharterStrumlineButton extends UISprite { public var text:UIText; public var onClick:Void->Void; + public var animationOnClick:Bool = true; public override function new(imagePath:String, text:String) { super(); @@ -15,7 +17,10 @@ class CharterStrumlineButton extends UISprite { alpha = 0; button = new UISprite(); - button.loadGraphic(Paths.image(imagePath)); + button.loadGraphic(Paths.image(imagePath), true, 71, 71); + for(i in 0...button.frames.frames.length) + button.animation.add(Std.string(i), [i]); + button.animation.play("0", true); button.scale.set(0.85,0.85); button.updateHitbox(); button.antialiasing = false; @@ -25,20 +30,41 @@ class CharterStrumlineButton extends UISprite { this.text = new UIText(0,0, 160, text); this.text.alignment = CENTER; members.push(this.text); + + textTweenColor = new FlxInterpolateColor(0xFFFFFFFF); } var buttonScale:FlxPoint = FlxPoint.get(0,0); + var buttonScaleOffset:FlxPoint = FlxPoint.get(0,0); + + var buttonYOffset:Float = 0; + var jumpTween:FlxTween; + var scaleTween:FlxTween; + var angleTween:FlxTween; + + var shakeTimer:Float = 0; + + public var textTweenColor:FlxInterpolateColor; + public var textColorLerp:Float = 1; public override function update(elapsed:Float) { - button.follow(this, ((40 * 4) - button.width) / 2, 20); + button.follow(this, ((40 * 4) - button.width) / 2, 20+buttonYOffset); text.follow(this, 0, 84); + shakeTimer -= elapsed; + if (shakeTimer > 0) + for (spr in [button, text]) + {spr.x += FlxG.random.float(0, 3); spr.y += FlxG.random.float(0, 3);} + super.update(elapsed); UIState.state.updateSpriteRect(button); if(UIState.state.isOverlapping(button, button.__rect)) { buttonScale.set(0.95, 0.95); - if (FlxG.mouse.justReleased && onClick != null) onClick(); + if (FlxG.mouse.justReleased && onClick != null) { + onClick(); + if (animationOnClick) pressAnimation(); + } } else buttonScale.set(0.85, 0.85); @@ -46,11 +72,33 @@ class CharterStrumlineButton extends UISprite { FlxMath.lerp(button.scale.x, buttonScale.x, 1/6), FlxMath.lerp(button.scale.y, buttonScale.y, 1/6) ); + button.scale += buttonScaleOffset; + + textTweenColor.fpsLerpTo(0xFFFFFFFF, (1/20) * textColorLerp); + text.color = textTweenColor.color; } public override function destroy() { super.destroy(); buttonScale.put(); + buttonScaleOffset.put(); + } + + public function pressAnimation(extra:Bool = false) { + shakeTimer = 0.14; + + if (jumpTween != null) jumpTween.cancel(); buttonYOffset = 0; + jumpTween = FlxTween.tween(this, {buttonYOffset: -10 + FlxG.random.float(-2, 2) + (extra ? -8 : 0)}, .12, {ease: FlxEase.circOut}) + .then(FlxTween.tween(this, {buttonYOffset: 0}, .1 + FlxG.random.float(.1, .3), {ease: FlxEase.circIn})); + + if (scaleTween != null) scaleTween.cancel(); buttonScaleOffset.set(0,0); + scaleTween = FlxTween.tween(buttonScaleOffset, {x: .015, y: .02}, .12, {ease: FlxEase.circOut}) + .then(FlxTween.tween(buttonScaleOffset, {x: 0, y: 0}, .1 + FlxG.random.float(.1, .3), {ease: FlxEase.circIn})); + + if (!extra) return; + + if (angleTween != null) angleTween.cancel(); button.angle = 0; + angleTween = FlxTween.tween(button, {angle: 360}, .5, {ease: FlxEase.circInOut}); } } \ No newline at end of file diff --git a/source/funkin/options/type/NewOption.hx b/source/funkin/options/type/NewOption.hx index e5c0f9eb..bb8af3be 100644 --- a/source/funkin/options/type/NewOption.hx +++ b/source/funkin/options/type/NewOption.hx @@ -13,6 +13,8 @@ class NewOption extends TextOption { iconSpr = new FlxSprite().loadGraphic(Paths.image("editors/new")); iconSpr.setPosition(90 - iconSpr.width, (__text.height - iconSpr.height) / 2); + iconSpr.scale.set(1.4, 1.4); + iconSpr.updateHitbox(); iconSpr.offset.set(20, -15); add(iconSpr); }