From 759a124fd07adcf8f591bf3492041793d41398f5 Mon Sep 17 00:00:00 2001 From: NeeEoo Date: Tue, 16 Apr 2024 02:17:11 +0200 Subject: [PATCH] New button design --- source/funkin/editors/stage/StageEditor.hx | 11 ++++-- .../stage/elements/StageCharacterButton.hx | 2 +- .../stage/elements/StageElementButton.hx | 37 +++++++++++++++++-- source/funkin/editors/ui/UIButtonList.hx | 3 +- source/funkin/editors/ui/UISliceSprite.hx | 22 ++++------- 5 files changed, 52 insertions(+), 23 deletions(-) diff --git a/source/funkin/editors/stage/StageEditor.hx b/source/funkin/editors/stage/StageEditor.hx index 315b29c0..5e531a93 100644 --- a/source/funkin/editors/stage/StageEditor.hx +++ b/source/funkin/editors/stage/StageEditor.hx @@ -54,6 +54,9 @@ class StageEditor extends UIState { public var showOutlines:Bool = true; public var showCharacters:Bool = true; + public static inline var SPRITE_WINDOW_WIDTH:Int = 400; + public static inline var SPRITE_WINDOW_BUTTON_HEIGHT:Int = 64; + public var undos:UndoList = new UndoList(); public inline static function exID(id:String) { @@ -242,14 +245,16 @@ class StageEditor extends UIState { topMenuSpr = new UITopMenu(topMenu); topMenuSpr.cameras = uiGroup.cameras = [uiCamera]; - final margin = 22; - final width = 470; + final margin = 0;//22; + final width = SPRITE_WINDOW_WIDTH; final TOP_MENU_HEIGHT = 25; - var buttonSize:FlxPoint = FlxPoint.get(width-margin*2, 32); + var buttonSize:FlxPoint = FlxPoint.get(width-margin*2, SPRITE_WINDOW_BUTTON_HEIGHT); stageSpritesWindow = new UIButtonList(Std.int(FlxG.width - width), TOP_MENU_HEIGHT, width, Std.int(FlxG.height - TOP_MENU_HEIGHT), "Stage Sprites", buttonSize); stageSpritesWindow.collapsable = true; + stageSpritesWindow.topAlpha = 0.9; stageSpritesWindow.middleAlpha = 0.5; stageSpritesWindow.bottomAlpha = 0.5; + stageSpritesWindow.buttonSpacing = 0; stageSpritesWindow.addButton.callback = () -> { // TODO: implement this } diff --git a/source/funkin/editors/stage/elements/StageCharacterButton.hx b/source/funkin/editors/stage/elements/StageCharacterButton.hx index 2ccf6051..cf984d76 100644 --- a/source/funkin/editors/stage/elements/StageCharacterButton.hx +++ b/source/funkin/editors/stage/elements/StageCharacterButton.hx @@ -13,7 +13,7 @@ class StageCharacterButton extends StageElementButton { this.char = charPos.extra.get(StageEditor.exID("char")); super(x,y, xml); - color = 0xffa5c4ff; + color = 0xff7aa8ff; updateInfo(charPos); } diff --git a/source/funkin/editors/stage/elements/StageElementButton.hx b/source/funkin/editors/stage/elements/StageElementButton.hx index 65a29459..d8137986 100644 --- a/source/funkin/editors/stage/elements/StageElementButton.hx +++ b/source/funkin/editors/stage/elements/StageElementButton.hx @@ -21,14 +21,26 @@ class StageElementButton extends UIButton { public var selected:Bool = false; + public var tagColor:UISliceSprite; + public function new(x:Float,y:Float, xml:Access) { this.xml = xml; super(x,y, getInfoText(), function () { onSelect(); //CharacterEditor.instance.playAnimation(this.sprite.name); - }, 282); + }, StageEditor.SPRITE_WINDOW_WIDTH, StageEditor.SPRITE_WINDOW_BUTTON_HEIGHT); autoAlpha = false; + tagColor = new UISliceSprite(x, y, 10, StageEditor.SPRITE_WINDOW_BUTTON_HEIGHT, 'editors/ui/button'); + tagColor.alpha = 1; // Make entire sprite transparent + tagColor.selectable = false; + tagColor.active = false; + //members.push(tagColor); + + topAlpha = middleAlpha = bottomAlpha = 0.7; + + field.alignment = LEFT; + ghostButton = new UIButton(x+282+17, y, "", function () { onGhostClick(); //CharacterEditor.instance.ghostAnim(this.anim); @@ -77,6 +89,9 @@ class StageElementButton extends UIButton { hovered = !deleteButton.hovered; updatePos(); super.update(elapsed); + field.x += 12; + + tagColor.color = color; if(selected != _lastSelected) { _lastSelected = selected; @@ -104,12 +119,23 @@ class StageElementButton extends UIButton { public function updatePos() { // buttons - deleteButton.x = (editButton.x = (ghostButton.x = (x+282+17))+32+17)+32+17; - deleteButton.y = editButton.y = ghostButton.y = y; + var spacing = 8; + var buttonY = y + (bHeight - 32) / 2; + deleteButton.x = bWidth - deleteButton.bWidth - spacing; + deleteButton.y = buttonY; + editButton.x = deleteButton.x - editButton.bWidth - spacing; + editButton.y = buttonY; + ghostButton.x = editButton.x - ghostButton.bWidth - spacing; + ghostButton.y = buttonY; + //deleteButton.x = (editButton.x = (ghostButton.x = (x+282+17))+32+17)+32+17; + //deleteButton.y = editButton.y = ghostButton.y = y; // icons ghostIcon.x = ghostButton.x + 8; ghostIcon.y = ghostButton.y + 8; editIcon.x = editButton.x + 8; editIcon.y = editButton.y + 8; deleteIcon.x = deleteButton.x + (15/2); deleteIcon.y = deleteButton.y + 8; + + tagColor.x = x;// + bWidth - tagColor.bWidth; + tagColor.y = y; } public function getSprite():FunkinSprite { @@ -143,6 +169,11 @@ class StageElementButton extends UIButton { public function getInfoText():String { var pos = getPos(); var text = '${getName()} (${CoolUtil.quantize(pos.x, 100)}, ${CoolUtil.quantize(pos.y, 100)})'; + var sprite = getSprite(); + if(sprite != null) { + text += '\nScale: (${CoolUtil.quantize(sprite.scale.x, 100)}, ${CoolUtil.quantize(sprite.scale.y, 100)})'; + text += '\nScroll: (${CoolUtil.quantize(sprite.scrollFactor.x, 100)}, ${CoolUtil.quantize(sprite.scrollFactor.y, 100)})'; + } pos.put(); return text; } diff --git a/source/funkin/editors/ui/UIButtonList.hx b/source/funkin/editors/ui/UIButtonList.hx index c516c73d..2253460d 100644 --- a/source/funkin/editors/ui/UIButtonList.hx +++ b/source/funkin/editors/ui/UIButtonList.hx @@ -95,7 +95,8 @@ class UIButtonList extends UIWindow { curMovingInterval = 0; } } - addIcon.x = addButton.x + addButton.bWidth / 2 - addIcon.width / 2; addIcon.y = addButton.y + addButton.bHeight / 2 - addIcon.height / 2; + addIcon.x = addButton.x + addButton.bWidth / 2 - addIcon.width / 2; + addIcon.y = addButton.y + addButton.bHeight / 2 - addIcon.height / 2; } var nextscrollY:Float = 0; public override function update(elapsed:Float) { diff --git a/source/funkin/editors/ui/UISliceSprite.hx b/source/funkin/editors/ui/UISliceSprite.hx index a6a6afd5..8cc6ab2d 100644 --- a/source/funkin/editors/ui/UISliceSprite.hx +++ b/source/funkin/editors/ui/UISliceSprite.hx @@ -31,17 +31,9 @@ class UISliceSprite extends UISprite { bHeight = h; } - override function set_alpha(value:Float) { - super.set_alpha(value); - topAlpha = alpha; - middleAlpha = alpha; - bottomAlpha = alpha; - return value; - } - - public var topAlpha:Float = 1; - public var middleAlpha:Float = 1; - public var bottomAlpha:Float = 1; + public var topAlpha:Null = null; + public var middleAlpha:Null = null; + public var bottomAlpha:Null = null; public var drawTop:Bool = true; public var drawMiddle:Bool = true; @@ -102,8 +94,8 @@ class UISliceSprite extends UISprite { var oldAlpha = alpha; // TOP if (drawTop) { - super.set_alpha(topAlpha); // TOP LEFT + if(topAlpha != null) alpha = topAlpha; frame = topleft; setPosition(x, y); __setSize( @@ -132,7 +124,7 @@ class UISliceSprite extends UISprite { // MIDDLE if (drawMiddle && bHeight > top.frame.height + bottom.frame.height) { - super.set_alpha(middleAlpha); + if(middleAlpha != null) alpha = middleAlpha; var middleHeight:Float = bHeight - (topleft.frame.height * Math.min(bHeight/(topleft.frame.height*2), 1)) - bottomleft.frame.height * Math.min(bHeight/(bottomleft.frame.height*2), 1); @@ -159,7 +151,7 @@ class UISliceSprite extends UISprite { // BOTTOM if (drawBottom) { - super.set_alpha(bottomAlpha); + if(bottomAlpha != null) alpha = bottomAlpha; // BOTTOM LEFT frame = bottomleft; setPosition(x, y + bHeight - (bottomleft.frame.height * Math.min(bHeight/(bottomleft.frame.height*2), 1))); @@ -190,7 +182,7 @@ class UISliceSprite extends UISprite { super.drawSuper(); } - super.set_alpha(oldAlpha); + alpha = oldAlpha; } setPosition(x, y);