From faf7df05ef0b6243bff208a9ea50f90434749c9a Mon Sep 17 00:00:00 2001 From: Yoshman29 Date: Sat, 22 Oct 2022 17:52:19 +0200 Subject: [PATCH] placeholder winxp luna theme --- assets/images/desktop/ui.xml | 5 +++++ assets/images/desktop/ui/caption.png | Bin 0 -> 2600 bytes assets/images/desktop/ui/captionButtons.png | Bin 0 -> 8592 bytes assets/images/desktop/ui/captionInactive.png | Bin 0 -> 1896 bytes buildnumber.txt | 2 +- source/funkin/desktop/DesktopMain.hx | 21 ++++++++++++++++-- source/funkin/desktop/windows/Window.hx | 14 +++++++++++- .../desktop/windows/WindowDragHitbox.hx | 1 + source/funkin/desktop/windows/WindowGroup.hx | 18 +++++++-------- source/funkin/system/CoolUtil.hx | 7 ++++++ 10 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 assets/images/desktop/ui.xml create mode 100644 assets/images/desktop/ui/caption.png create mode 100644 assets/images/desktop/ui/captionButtons.png create mode 100644 assets/images/desktop/ui/captionInactive.png diff --git a/assets/images/desktop/ui.xml b/assets/images/desktop/ui.xml new file mode 100644 index 00000000..66b00bf6 --- /dev/null +++ b/assets/images/desktop/ui.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/assets/images/desktop/ui/caption.png b/assets/images/desktop/ui/caption.png new file mode 100644 index 0000000000000000000000000000000000000000..c981a60431543700bf4503b80e579921e0629c33 GIT binary patch literal 2600 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 iK%6`}IPbokd-)rT@`R@x;E!(r0000; public static var instance:DesktopMain; @@ -44,7 +44,7 @@ class DesktopMain extends MusicBeatState { screenSize = new FlxPoint(-1, -1); - windows = new WindowGroup(); + windows = new WindowGroup(); add(windows); } @@ -76,6 +76,23 @@ class DesktopMain extends MusicBeatState { // TODO: switch back while using config FlxG.resizeGame(1280, 720); } + + public function focusWindow(window:Window) { + windows.remove(window, true); + windows.add(window); + layerCameras(); + } + + public function layerCameras() { + for(win in windows.members) { + FlxG.cameras.remove(win.windowCaptionCamera, false); + for(e in win.windowCameras) FlxG.cameras.remove(e.camera, false); + } + for(win in windows.members) { + FlxG.cameras.add(win.windowCaptionCamera, false); + for(e in win.windowCameras) FlxG.cameras.add(e.camera, false); + } + } } class MouseInput { diff --git a/source/funkin/desktop/windows/Window.hx b/source/funkin/desktop/windows/Window.hx index f60be5d8..4db01ca0 100644 --- a/source/funkin/desktop/windows/Window.hx +++ b/source/funkin/desktop/windows/Window.hx @@ -32,6 +32,7 @@ class Window extends FlxTypedGroup { public var windowCameras:Array = []; private var __captionTweens:Array = []; + private var __closing:Bool = false; public var content:WindowContent; @@ -39,9 +40,15 @@ class Window extends FlxTypedGroup { public var icon:FlxSprite; public var dragHitbox:WindowDragHitbox; - public var draggable:Bool = true; + public var moveable:Bool = true; public var resizeable:Bool = true; + public var focused(get, null):Bool; + + private function get_focused() { + return DesktopMain.instance.windows.members.last() == this; + } + public function loadIcon(path:String) { icon.loadGraphic(path); icon.setUnstretchedGraphicSize(16, 16, false); @@ -160,6 +167,10 @@ class Window extends FlxTypedGroup { var i = members.length; var shouldCancel = DesktopMain.instance.mouseInput.overlapsRect(this, new Rectangle(0, 0, windowCaptionCamera.width, windowCaptionCamera.height), windowCaptionCamera); + + if (shouldCancel && DesktopMain.instance.mouseInput.justPressed) + DesktopMain.instance.focusWindow(this); + // updates them backwards!! while(i > 0) { i--; @@ -172,6 +183,7 @@ class Window extends FlxTypedGroup { } public function close() { + __closing = true; DesktopMain.instance.windows.remove(this, true); destroy(); } diff --git a/source/funkin/desktop/windows/WindowDragHitbox.hx b/source/funkin/desktop/windows/WindowDragHitbox.hx index 1f95758b..3dc8ee02 100644 --- a/source/funkin/desktop/windows/WindowDragHitbox.hx +++ b/source/funkin/desktop/windows/WindowDragHitbox.hx @@ -31,6 +31,7 @@ class WindowDragHitbox extends FlxObject { public override function update(elapsed:Float) { super.update(elapsed); + if (!parent.moveable) return; if (dragging) { var screenPos = FlxG.mouse.getScreenPosition(FlxG.camera); if (DesktopMain.instance.mouseInput.justReleased) { diff --git a/source/funkin/desktop/windows/WindowGroup.hx b/source/funkin/desktop/windows/WindowGroup.hx index ea7968c6..d7f84cba 100644 --- a/source/funkin/desktop/windows/WindowGroup.hx +++ b/source/funkin/desktop/windows/WindowGroup.hx @@ -1,20 +1,18 @@ package funkin.desktop.windows; import flixel.group.FlxGroup.FlxTypedGroup; +import flixel.FlxBasic; -class WindowGroup extends FlxTypedGroup { +class WindowGroup extends FlxTypedGroup { public override function update(elapsed:Float) { // update them backwards, so that the top most window gets the priority - var i = length-1; - while(i >= 0) { - var window = members[i]; - if (window == null || !window.exists) { - i--; - continue; - } - window.update(elapsed); - + var i = length; + while(i > 0) { i--; + var window = members[i]; + if (window == null || !window.exists) + continue; + window.update(elapsed); } } } \ No newline at end of file diff --git a/source/funkin/system/CoolUtil.hx b/source/funkin/system/CoolUtil.hx index e1d3bbb1..9d431a88 100644 --- a/source/funkin/system/CoolUtil.hx +++ b/source/funkin/system/CoolUtil.hx @@ -188,4 +188,11 @@ class CoolUtil obj.y = (cam.height - obj.height) / 2; } } + + /** + * Returns last member of array + */ + public static function last(array:Array):T { + return array[array.length-1]; + } } \ No newline at end of file