diff --git a/source/funkin/editors/character/CharacterAnimButtons.hx b/source/funkin/editors/character/CharacterAnimButtons.hx index 64071c6f..e19c00b5 100644 --- a/source/funkin/editors/character/CharacterAnimButtons.hx +++ b/source/funkin/editors/character/CharacterAnimButtons.hx @@ -57,6 +57,8 @@ class CharacterAnimButtons extends UIButton { public override function update(elapsed:Float) { editButton.selectable = ghostButton.selectable = deleteButton.selectable = selectable; + editButton.shouldPress = ghostButton.shouldPress = deleteButton.shouldPress = shouldPress; + hovered = !deleteButton.hovered; updatePos(); super.update(elapsed); diff --git a/source/funkin/editors/charter/CharterEventScreen.hx b/source/funkin/editors/charter/CharterEventScreen.hx index a0a66d3b..318fddfa 100644 --- a/source/funkin/editors/charter/CharterEventScreen.hx +++ b/source/funkin/editors/charter/CharterEventScreen.hx @@ -44,7 +44,7 @@ class CharterEventScreen extends UISubstateWindow { events = chartEvent.events.copy(); - eventsList = new UIButtonList(0,0,75, 570, "", FlxPoint.get(73, 40)); + eventsList = new UIButtonList(0,0,75, 570, "", FlxPoint.get(73, 40), null, 0); eventsList.addButton.callback = () -> openSubState(new CharterEventTypeSelection(function(eventName) { events.push({ time: Conductor.getTimeForStep(chartEvent.step), @@ -69,22 +69,16 @@ class CharterEventScreen extends UISubstateWindow { Charter.instance.deleteSelection([chartEvent]); else if (events.length > 0) { var oldEvents:Array = chartEvent.events.copy(); - chartEvent.events = [for (i in eventsList.buttons.members) { - if(i is EventButton) { - var i:EventButton = cast i; - i.event; - } - }]; + chartEvent.events = [ + for (i in eventsList.buttons.members) i.event + ]; if (creatingEvent && events.length > 0) Charter.instance.createSelection([chartEvent]); else { - chartEvent.events = [for (i in eventsList.buttons.members) { - if(i is EventButton) { - var i:EventButton = cast i; - i.event; - } - }]; + chartEvent.events = [ + for (i in eventsList.buttons.members) i.event + ]; chartEvent.refreshEventIcons(); Charter.instance.addToUndo(CEditEvent(chartEvent, oldEvents, events.copy())); @@ -253,6 +247,10 @@ class EventButton extends UIButton { override function update(elapsed) { super.update(elapsed); + + deleteButton.selectable = selectable; + deleteButton.shouldPress = shouldPress; + icon.setPosition(x + (18 - icon.width / 2),y + (20 - icon.height / 2)); deleteButton.setPosition(x + (bWidth - 30), y + (bHeight - 26) / 2); deleteIcon.setPosition(deleteButton.x + (10/2), deleteButton.y + 4); diff --git a/source/funkin/editors/charter/CharterStrumlineScreen.hx b/source/funkin/editors/charter/CharterStrumlineScreen.hx index 2fdb3b51..8bb216a0 100644 --- a/source/funkin/editors/charter/CharterStrumlineScreen.hx +++ b/source/funkin/editors/charter/CharterStrumlineScreen.hx @@ -56,7 +56,7 @@ class CharterStrumlineScreen extends UISubstateWindow { function addLabelOn(ui:UISprite, text:String) add(new UIText(ui.x, ui.y - 24, 0, text)); - charactersList = new UIButtonList(15, 43, 250, 330, "", FlxPoint.get(246, 75)); + charactersList = new UIButtonList(15, 43, 250, 330, "", FlxPoint.get(246, 75), null, 0); charactersList.addButton.callback = () -> charactersList.add(new CharacterButton(0,0,"New Char", charactersList)); for (i in strumLine.characters) charactersList.add(new CharacterButton(0,0,i, charactersList)); @@ -136,11 +136,10 @@ class CharterStrumlineScreen extends UISubstateWindow { @:privateAccess stepper.__onChange(stepper.label.text); strumLine = { - characters: [for (char in charactersList.buttons.members) - if(char is CharacterButton) { - var char:CharacterButton = cast char; - char.textBox.label.text.trim(); - }], + characters: [ + for (char in charactersList.buttons.members) + char.textBox.label.text.trim() + ], type: typeDropdown.index, notes: strumLine.notes, position: ["DAD", "BOYFRIEND", "GIRLFRIEND"][stagePositionDropdown.index].toLowerCase(), @@ -188,6 +187,10 @@ class CharacterButton extends UIButton { deleteButton.y = y + bHeight / 2 - deleteButton.bHeight / 2; textBox.y = y + bHeight/2 - 16; deleteIcon.x = deleteButton.x + (15/2); deleteIcon.y = deleteButton.y + 8; + + deleteButton.selectable = selectable; + deleteButton.shouldPress = shouldPress; + super.update(elapsed); } } \ No newline at end of file diff --git a/source/funkin/editors/ui/UIButtonList.hx b/source/funkin/editors/ui/UIButtonList.hx index 73365ceb..22ca2580 100644 --- a/source/funkin/editors/ui/UIButtonList.hx +++ b/source/funkin/editors/ui/UIButtonList.hx @@ -6,6 +6,7 @@ import flixel.util.FlxColor; import flixel.math.FlxPoint; import funkin.game.Character; import flixel.util.FlxSort; +import flixel.math.FlxMath; class UIButtonList extends UIWindow { public var buttons:FlxTypedGroup = new FlxTypedGroup(); @@ -30,7 +31,7 @@ class UIButtonList extends UIWindow { if (buttonOffset != null) this.buttonOffset = buttonOffset; super(x, y, width, height, windowName); - buttonCameras = new FlxCamera(x, y+cameraSpacing, width-2, height-cameraSpacing); + buttonCameras = new FlxCamera(x, y+cameraSpacing, width, height-cameraSpacing); FlxG.cameras.add(buttonCameras, false); buttonCameras.bgColor = 0; @@ -47,8 +48,11 @@ class UIButtonList extends UIWindow { scrollY = buttonCameras.scroll.y = -this.buttonSpacing; } - public inline function add(button:T) + public inline function add(button:T) { buttons.add(button); + curMovingInterval = 0; + } + public inline function insert(button:T, position:Int) { buttons.insert(position, button); @@ -110,11 +114,11 @@ class UIButtonList extends UIWindow { if (nextscrollY >= (-buttonSpacing) && nextscrollY + buttonCameras.height <= (addButton.y + 32 + (buttonSpacing*1.5))) scrollY = nextscrollY; - + buttonCameras.scroll.y = FlxMath.lerp(buttonCameras.scroll.y, nextscrollY, 1/3); for (button in buttons) { - if (button != null) button.selectable = (hovered && !dragging); + if (button != null) button.selectable = button.shouldPress = (hovered && !dragging); button.cameras = [buttonCameras]; } addButton.selectable = (hovered && !dragging);