From 0c538e336777c2fc0f5fd13528a78f7c09ef3f52 Mon Sep 17 00:00:00 2001 From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com> Date: Wed, 21 Dec 2022 17:24:18 +0100 Subject: [PATCH] desktop updates --- assets/images/desktop/ui/button.png | Bin 686 -> 168 bytes assets/images/desktop/ui/buttonHover.png | Bin 818 -> 257 bytes assets/images/desktop/ui/buttonPressed.png | Bin 689 -> 488 bytes assets/images/desktop/ui/caption.png | Bin 2580 -> 677 bytes assets/images/desktop/ui/captionButtons.png | Bin 19413 -> 12818 bytes assets/images/desktop/ui/captionInactive.png | Bin 1903 -> 614 bytes buildnumber.txt | 2 +- source/funkin/desktop/DesktopMain.hx | 12 ++- .../funkin/desktop/editors/EditorPlayState.hx | 2 +- source/funkin/desktop/sprites/Button.hx | 2 +- source/funkin/desktop/windows/Window.hx | 10 +-- .../desktop/windows/WindowCaptionButton.hx | 4 +- .../desktop/windows/WindowDragHitbox.hx | 10 +-- source/funkin/multitasking/StateWindow.hx | 69 ++++++++++-------- source/funkin/system/Main.hx | 2 + source/funkin/system/MusicBeatState.hx | 8 +- 16 files changed, 70 insertions(+), 51 deletions(-) diff --git a/assets/images/desktop/ui/button.png b/assets/images/desktop/ui/button.png index c4826c6a70d7b0c043d1d34441720aad03a6b2d0..73aadde29cea2e9ef6ee64231f56e9a61925c386 100644 GIT binary patch delta 119 zcmV--0Eqvt1*id#IB)=3NklJ&;11sMjeQ>b0* Z0RaAdg88MJN#g(j002ovPDHLkV1lw0Ew%sv delta 641 zcmV-{0)G9d0j>p*IDZ0QNkly_2A^W#qz&Fmm+273b~Qp{tx_TVK$!+*S847}`rug$ATGz1&S zYL#(sK~)qBsfIzoe};n>?lB~^E&uayO`Ra4goK3r3ze7$e-Cy*r2j({5p5h$!|$Iz z7`Qx|7&P8&(FMEknNrlFU;ElfG6?3n-@kqV@ec+8zb*!o9|z3f2L9O7OtOI>*ZukR zli?T8g~CC741Y%7_F2FU{I;tBZYxO!{stQO<2!?B$RunSvFGP;3vWJL(fK(Wv% zs0M!BSqoQ0x`96!#KX`G{Ia8lA_FDDr=lBJO`(C)P!0UNy^10OB_pPz8u)1&Wd=$` zVi;ISp@B0{4g9#Zf(!%y0S){GHc&chCaQrSwv;oFoPYKH{R8G>pbLR{Ste>WgW0b` zmT&{#tS+}!Nc$m z=nX~?WF%l9Flhe$`wKMeH^c2`9~k0#_WpC>zZb*E!^0!uk=J$p+xNdRk+zBq#!7<3 zc^Bjxpn9QqUVLVlzWo-1s36x%`M-~*f}FwO@9*y+WgXnP?bHJ$a_ST>3)QzFhQg=r z0RhNBE*%{m6%!y(QBhG900LGZ0M=wEeg?_G*mv&SxecOOSXh{WO4)(6CEM4pU%#}r bwsryl%&?h;CZWOL00000NkvXXu0mjfg^Mbe diff --git a/assets/images/desktop/ui/buttonHover.png b/assets/images/desktop/ui/buttonHover.png index 81f3e05d15151d9913b9bd9cfbcc3bc88a407d57..a178e6c7765970553a2608a7d5f2346274c254a8 100644 GIT binary patch delta 209 zcmV;?051Qs27v;QIDY`MNklX6*1d%)X_^n8Dl&i5q-{&dpl$u1{u3Pojk8nAd9l7g7*vqmi&K# z4-i<)!4w1r0wy3ZR4@gBK@KJ$FcdHYfxd$A8UuEF0&YNHM@qr%3In$L0`8U=Fd7KB z2Z1dG4+{*~913`xW5C8pz|#x^*2e;#L12wRZOUcphE^xi6m<1ofeLN;0O_+K00000 LNkvXXu0mjf`$ADu delta 774 zcmV+h1Nr=c0IDZ1)Pnq@ zKgRy?kNhJ-3ZqC$3?fO(G}ECL7=#8v86o}=1Q|pSK~xZxWePE|w&oAaY$YpgZa&|; z>%O;4w-EL^58gYxd(Y>7?>UEi5dg4yy$$FBnu4jNqJUj~QZod>T!$>6daRK|g@8E~7YSUxJO|=Z!MrYc z3Z1735I|9v90}ywrwNcK+|eyh;rklmAzw|M=4mj=OwGa`e$N)!h&@`sv7)xuL~m&7I;V)s*r@JI`+VBcvXgyl9JM?oz+vW znqf*UdAHdpGt+T-Gz8>f`6wHX|>uETkWOce61^^N_QpZ?XI=n zxs&j5Iqz$xFx4Zjttu}sw;6Wr>wGvkk@Y`!ioG~{uELT$=piNoHD-YPAIUJ78-&KBDh9V2azyJUM07*qoM6N<$ Eg7zV6d;kCd diff --git a/assets/images/desktop/ui/buttonPressed.png b/assets/images/desktop/ui/buttonPressed.png index ba4d4ba830f367b259db5398eaf56a21f442bd8e..9a9a7bf64a1c8c0d3b1f470a3afa5493c5f06ef7 100644 GIT binary patch delta 442 zcmV;r0Y(0?1?U5iIDY|}Nkl60g8Ra`$Pu=V z13Fl)I7BoWgBacQ1zGD~tk)~_+u1GZsCHf(BA!sOpEy7yB7gbbs1PV~f(9kjr|2{oSS*JFwwnwrm)$)K1kx`zJ+M+5 zLkS4#1U6a>tbZ2WgbF99vxN0F0}Iy#N>rO9XKm&Ln$*J=uZLIRfZbQGhXhJV+Cxsz zAkdss4?R%JQ^J6tL13rHz)~(8u+{f^cuBPh29o{B`=|BW4?0Lzt$wKKIssh|0uDWy}IDPoKse=|iC kcj)^Fv_Zz5DPd2&Kf&+o`2Z=hegFUf07*qoM6N<$f|L)$`Tzg` delta 644 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 M07*qoM6N<$g4d16)&Kwi diff --git a/assets/images/desktop/ui/captionButtons.png b/assets/images/desktop/ui/captionButtons.png index 65fead0bf12fae265aef3f44f8040c6db1e363a4..0206bb73833811d122dcc17597a49659254f6e92 100644 GIT binary patch literal 12818 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 literal 19413 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 vI~pXu&xrq{+IwdoD4dU^3;2ou3y6 z&b0z+S>>XD!-q@w_Oq8UdRDjkCHtBqtAz+4Q1`q?H-yZ^_Dm4hO&ruvC2SmeI%~vo# zIEA}+=J3rIuVMp2d%|-s?ZWPkf@~`%MFj|?`=qc2Vw5Hr8C~OGo}{T#p7|YT(V?c5 z?2K3VQ>6q+GSGCb4x z&xiyJnNn0?V_gMn%ym`wqqHYT?HT4pchesE^X&)Izt!KoUv*`Y1$oD#B|Laoz*nEY zg826Px7DRf8EjwP1enyFAx((}1}W`;Xiw2i40%KqPG~^_wZb?-IS>T&@0&leRfrTt ziAFIcB!8WYM!_UjJ%$^%vQXT31$jrYg6gz@zYZ2)KwR6Un6Nb^0N8;M17Tp;sS_$M zon@+sP|#YEE9pQW_313zc#m|SIY_9nHC9h}A@>TaysYYrQdTCoR7L57kXsX&PDB!f zIpb20&y4!a~4WNCyHzSU@3t_8|fSr4AJ>h(5*61cHq_43Jw8ndF>TEsTP6J0m2n#Q)Vp?Rie}nf$*Y>3cvDn>4Ug&ZQEoC+$2w! zVhce8-Vj-7)*vFKZ6bZfgmm(`_~BA)=pkM_(f1u$doXc~L6Lkqa40%vBtgt{uz$1x zQG?Ld7Z!>xyM=59>nhz-)Igmc8=(RqRIHO8lDg06@6tf2GfOuWdOlw$GIHdumz2@@VdZ5Sunw=3NMNu(ZLm zi?_b+tqlTeMb`&u5AwW3roE!=pN~Drq3(7`mE~e(0_OccPihd)-?~gw0)I@55PIK% zU`Iv>G6w{S^v9LtDb2wN(`=`j9Doyy8H1xer&^Ry9H06ia1$Zh%uS4N z5X=HorzFu+OnCw`S-Hg%)M6;M~{6F*%nO=>k&AG z7J^=A(NPRQ;702NYN?=^tG%=#t zvbPYzJ&2}LX+T?==W4=v7{QM$Pwj}K9JJZ=!*L&C}(FcHNZ!m!v%%43_}#r8nxwT9T9 zfXwZB0_>iIaC;KgYJZ4rK{*sN!fH}~?5ioj|2_gCtQFSyE`)xBIy&#_O zKb}3UEeb-3HUII^f2?^RcAq(Kan83jAWj|}p0_OL-u?ma>7>WS^r4mj0000 { windowInactiveFrame.visible = !(windowFrame.visible = focused); var i = members.length; - var shouldCancel = DesktopMain.instance.mouseInput.overlapsRect(this, new Rectangle(0, 0, windowCaptionCamera.width, windowCaptionCamera.height), windowCaptionCamera); + var shouldCancel = DesktopMain.mouseInput.overlapsRect(this, new Rectangle(0, 0, windowCaptionCamera.width, windowCaptionCamera.height), windowCaptionCamera); if (curDialog != null && curDialog.exists) { if (shouldCancel) { - if (DesktopMain.instance.mouseInput.justPressed) { + if (DesktopMain.mouseInput.justPressed) { // TODO: sounds DesktopMain.instance.focusWindow(curDialog); } - DesktopMain.instance.mouseInput.cancel(); + DesktopMain.mouseInput.cancel(); } return; - } else if (shouldCancel && DesktopMain.instance.mouseInput.justPressed) + } else if (shouldCancel && DesktopMain.mouseInput.justPressed) DesktopMain.instance.focusWindow(this); // updates them backwards!! while(i > 0) { @@ -268,7 +268,7 @@ class Window extends FlxTypedGroup { spr.update(elapsed); } - if (shouldCancel) DesktopMain.instance.mouseInput.cancel(); + if (shouldCancel) DesktopMain.mouseInput.cancel(); } public function close() { diff --git a/source/funkin/desktop/windows/WindowCaptionButton.hx b/source/funkin/desktop/windows/WindowCaptionButton.hx index c498b01e..52bdbeab 100644 --- a/source/funkin/desktop/windows/WindowCaptionButton.hx +++ b/source/funkin/desktop/windows/WindowCaptionButton.hx @@ -30,7 +30,7 @@ class WindowCaptionButton extends FlxSprite { super.update(elapsed); return; } - var mouseInput = DesktopMain.instance.mouseInput; + var mouseInput = DesktopMain.mouseInput; visible = switch(ID) { case 1 | 2: window.resizeable || window.canMinimize; @@ -45,7 +45,7 @@ class WindowCaptionButton extends FlxSprite { case 3: window.canHelp; default: true; }) { - if (DesktopMain.instance.mouseInput.overlaps(this, camera)) { + if (DesktopMain.mouseInput.overlaps(this, camera)) { if (mouseInput.justReleased) { switch(ID) { case 0: diff --git a/source/funkin/desktop/windows/WindowDragHitbox.hx b/source/funkin/desktop/windows/WindowDragHitbox.hx index 2a7cc09d..bd095f4c 100644 --- a/source/funkin/desktop/windows/WindowDragHitbox.hx +++ b/source/funkin/desktop/windows/WindowDragHitbox.hx @@ -38,21 +38,21 @@ class WindowDragHitbox extends FlxObject { screenPos.x = FlxMath.bound(screenPos.x, 0, FlxG.camera.width); screenPos.y = FlxMath.bound(screenPos.y, 0, FlxG.camera.height); - if (DesktopMain.instance.mouseInput.justReleased) { + if (DesktopMain.mouseInput.justReleased) { dragging = false; offset.put(); return; } parent.move(screenPos.x + offset.x, screenPos.y + offset.y); - DesktopMain.instance.mouseInput.cancel(); + DesktopMain.mouseInput.cancel(); } else { - if (DesktopMain.instance.mouseInput.overlaps(this, camera)) { - if (DesktopMain.instance.mouseInput.justPressed) { + if (DesktopMain.mouseInput.overlaps(this, camera)) { + if (DesktopMain.mouseInput.justPressed) { var screenPos = FlxG.mouse.getScreenPosition(FlxG.camera); offset = FlxPoint.get(parent.content.winX - screenPos.x, parent.content.winY - screenPos.y); dragging = true; } - DesktopMain.instance.mouseInput.cancel(); + DesktopMain.mouseInput.cancel(); } } } diff --git a/source/funkin/multitasking/StateWindow.hx b/source/funkin/multitasking/StateWindow.hx index 3e0eb17a..a4d199e5 100644 --- a/source/funkin/multitasking/StateWindow.hx +++ b/source/funkin/multitasking/StateWindow.hx @@ -1,5 +1,6 @@ package funkin.multitasking; +import flixel.system.frontEnds.BitmapFrontEnd; import openfl.Lib; import openfl.display.Sprite; import flash.events.Event; @@ -14,8 +15,10 @@ import flixel.FlxG; class StateWindow extends Sprite { public var window:Window; public var state:MusicBeatState; - public var cameras:Array = [new FlxCamera()]; - public var camerasDefault:Array = []; + public var camera:FlxCamera; + public var cameras:Array; + public var camerasDefault:Array; + public var bmapFrontEnd:BitmapFrontEnd = new BitmapFrontEnd(); public function new(windowName:String, state:MusicBeatState) { super(); @@ -36,6 +39,10 @@ class StateWindow extends Sprite { window.stage.addChild(this); + camera = new FlxCamera(); + cameras = [camera]; + camerasDefault = [camera]; + state.parentWindow = this; this.state = state; @@ -52,6 +59,7 @@ class StateWindow extends Sprite { var oldCamDefaults:Array; var oldCam:FlxCamera; var oldState:FlxState; + var oldFrontEnd:BitmapFrontEnd; public function beforeStateShit() { oldSize.set(FlxG.width, FlxG.height); @@ -66,10 +74,25 @@ class StateWindow extends Sprite { FlxCamera._defaultCameras = FlxG.cameras.defaults = camerasDefault; FlxG.cameras.list = cameras; - FlxG.camera = cameras[0]; + FlxG.camera = camera; oldState = FlxG.game._state; FlxG.game._state = state; + + + if (this.numChildren != cameras.length) { + trace("readding cameras..."); + while(this.numChildren > 0) + removeChild(getChildAt(0)); + + for(c in cameras) { + addChild(c.flashSprite); + c.flashSprite.x = c.flashSprite.y = 0; + } + } + + oldFrontEnd = FlxG.bitmap; + FlxG.bitmap = bmapFrontEnd; } } @@ -78,6 +101,7 @@ class StateWindow extends Sprite { FlxG.width = Std.int(oldSize.x); FlxG.height = Std.int(oldSize.y); + camera = FlxG.camera; cameras = FlxG.cameras.list; camerasDefault = FlxG.cameras.defaults; @@ -89,49 +113,36 @@ class StateWindow extends Sprite { oldCam = null; FlxG.game._state = oldState; + + FlxG.bitmap = oldFrontEnd; + oldFrontEnd = null; } } public function update(elapsed:Float) { - beforeStateShit(); - @:privateAccess - FlxG.cameras.update(FlxG.elapsed); - state.tryUpdate(elapsed); - afterStateShit(); + } public function draw() { - @:privateAccess { - beforeStateShit(); - // for(c in cameras) { - // addChild(c.flashSprite); - // c.color = 0xFF0000; - // } - FlxG.cameras.lock(); - state.draw(); - FlxG.cameras.unlock(); - - afterStateShit(); - } } - /* + + public override function __enterFrame(t:Float) { - super.__enterFrame(Std.int(t)); @:privateAccess { beforeStateShit(); - for(c in cameras) { - trace(c.x); - trace(c.y); - // c.bgColor = 0xFFFFFFFF; - } - stage.color = 0xFF0000; + + FlxG.cameras.update(FlxG.elapsed); + state.tryUpdate(FlxG.elapsed); + FlxG.cameras.lock(); state.draw(); + + FlxG.cameras.render(); FlxG.cameras.unlock(); + afterStateShit(); } } - */ } \ No newline at end of file diff --git a/source/funkin/system/Main.hx b/source/funkin/system/Main.hx index b0731c0f..cf27c53a 100644 --- a/source/funkin/system/Main.hx +++ b/source/funkin/system/Main.hx @@ -1,5 +1,6 @@ package funkin.system; +import funkin.desktop.DesktopMain; import openfl.utils.AssetLibrary; import openfl.utils.AssetCache; import openfl.text.TextFormat; @@ -139,6 +140,7 @@ class Main extends Sprite Logs.init(); Paths.init(); ModsFolder.init(); + DesktopMain.init(); #if MOD_SUPPORT ModsFolder.switchMod("introMod"); #end diff --git a/source/funkin/system/MusicBeatState.hx b/source/funkin/system/MusicBeatState.hx index cc92a4a7..fa0bf115 100644 --- a/source/funkin/system/MusicBeatState.hx +++ b/source/funkin/system/MusicBeatState.hx @@ -189,7 +189,9 @@ class MusicBeatState extends FlxUIState implements IBeatReceiver } public override function destroy() { - super.destroy(); + if (parentWindow == null) + super.destroy(); + call("onDestroy"); if (stateScript != null) stateScript.destroy(); @@ -197,10 +199,6 @@ class MusicBeatState extends FlxUIState implements IBeatReceiver public override function draw() { super.draw(); - #if ALLOW_MULTITASKING - if (parentWindow == null) - funkin.multitasking.MultiTaskingHandler.draw(); - #end } public override function switchTo(nextState:FlxState) {