diff --git a/source/funkin/editors/charter/CharterStrumlineScreen.hx b/source/funkin/editors/charter/CharterStrumlineScreen.hx index 8bb216a0..96eb692c 100644 --- a/source/funkin/editors/charter/CharterStrumlineScreen.hx +++ b/source/funkin/editors/charter/CharterStrumlineScreen.hx @@ -56,16 +56,20 @@ 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), null, 0); + var title:UIText; + add(title = new UIText(windowSpr.x + 20, windowSpr.y + 30 + 16, 0, creatingStrumLine ? "Create New Strumline" : "Edit Strumline Properties", 28)); + + charactersList = new UIButtonList(15, title.y + title.height + 36, 250, 259, "", FlxPoint.get(250, 54), null, 0); charactersList.addButton.callback = () -> charactersList.add(new CharacterButton(0,0,"New Char", charactersList)); + charactersList.cameraSpacing = 0; for (i in strumLine.characters) charactersList.add(new CharacterButton(0,0,i, charactersList)); - charactersList.cameraSpacing = 2; add(charactersList); + addLabelOn(charactersList, "Characters"); charactersList.frames = Paths.getFrames('editors/ui/inputbox'); - typeDropdown = new UIDropDown(charactersList.x + 265, charactersList.y + 20, 200, 32, ["OPPONENT", "PLAYER", "ADDITIONAL"], strumLine.type); + typeDropdown = new UIDropDown(charactersList.x + charactersList.bWidth + 16, charactersList.y, 200, 32, ["OPPONENT", "PLAYER", "ADDITIONAL"], strumLine.type); add(typeDropdown); addLabelOn(typeDropdown, "Type"); @@ -159,24 +163,28 @@ class CharacterButton extends UIButton { public var deleteIcon:FlxSprite; public function new(x:Float, y:Float, char:String, parent:UIButtonList) { + super(x, y, "", null, 250, 54); + charIcon = new HealthIcon(char); - charIcon.scale.set(0.5, 0.5); + charIcon.scale.set(0.3, 0.3); charIcon.updateHitbox(); - super(x, y, "", null, 246, Math.floor(charIcon.height)); charIcon.setPosition(x + 10, bHeight/2 - charIcon.height / 2); + members.push(charIcon); - members.remove(field); - members.push(textBox = new UITextBox(95, bHeight/2 - 16, char, 100)); + + members.push(textBox = new UITextBox(charIcon.x + charIcon.width + 16, bHeight/2 - (32/2), char, 115)); textBox.antialiasing = true; textBox.onChange = function(char:String) { charIcon.loadGraphic(Assets.exists(Paths.image("icons/" + char)) ? Paths.image("icons/" + char) : Paths.image("icons/face"), true, 150, 150); charIcon.updateHitbox(); } - deleteButton = new UIButton(textBox.x + 105, y, "", function () { + + deleteButton = new UIButton(textBox.x + 115 + 16, bHeight/2 - (32/2), "", function () { parent.remove(this); }, 32); deleteButton.color = 0xFFFF0000; members.push(deleteButton); + deleteIcon = new FlxSprite(deleteButton.x + (15/2), deleteButton.y + 8).loadGraphic(Paths.image('editors/character/delete-button')); deleteIcon.antialiasing = false; members.push(deleteIcon); diff --git a/source/funkin/editors/ui/UIButtonList.hx b/source/funkin/editors/ui/UIButtonList.hx index d3cffbb5..9b3360fd 100644 --- a/source/funkin/editors/ui/UIButtonList.hx +++ b/source/funkin/editors/ui/UIButtonList.hx @@ -25,13 +25,13 @@ class UIButtonList extends UIWindow { var curMoving:T = null; var curMovingInterval:Float = 0; - public function new(x:Int, y:Int, width:Int, height:Int, windowName:String, buttonSize:FlxPoint, ?buttonOffset:FlxPoint, ?buttonSpacing:Float) { + public function new(x:Float, y:Float, width:Int, height:Int, windowName:String, buttonSize:FlxPoint, ?buttonOffset:FlxPoint, ?buttonSpacing:Float) { if (buttonSpacing != null) this.buttonSpacing = buttonSpacing; this.buttonSize = buttonSize; if (buttonOffset != null) this.buttonOffset = buttonOffset; super(x, y, width, height, windowName); - buttonCameras = new FlxCamera(x, y+cameraSpacing, width, height-cameraSpacing); + buttonCameras = new FlxCamera(Std.int(x), Std.int(y+cameraSpacing), width, height-cameraSpacing-1); FlxG.cameras.add(buttonCameras, false); buttonCameras.bgColor = 0; @@ -72,8 +72,8 @@ class UIButtonList extends UIWindow { if (curMoving != button) { button.setPosition( - (bWidth/2) - (buttonSize.x/2), - CoolUtil.fpsLerp(button.y, (buttonSize.y+buttonSpacing) * i, 0.25)); + (bWidth/2) - (buttonSize.x/2) + buttonOffset.x, + CoolUtil.fpsLerp(button.y, ((buttonSize.y+buttonSpacing) * i) + buttonOffset.y, 0.25)); } if (button.hovered && FlxG.mouse.justPressed) curMoving = button; } @@ -104,14 +104,14 @@ class UIButtonList extends UIWindow { super.update(elapsed); - nextscrollY = FlxMath.bound(buttonCameras.scroll.y - (hovered ? FlxG.mouse.wheel : 0) * 12, -buttonSpacing, Math.max((addButton.y + 32 + (buttonSpacing*1.5)) - buttonCameras.height, -buttonSpacing)); + nextscrollY = FlxMath.bound(buttonCameras.scroll.y - (hovered ? FlxG.mouse.wheel : 0) * 6, -buttonSpacing, Math.max((addButton.y + 32 + (buttonSpacing*1.5)) - buttonCameras.height, -buttonSpacing)); if (curMoving != null && dragging) { nextscrollY -= Math.min((bHeight - 100) - FlxG.mouse.getWorldPosition(buttonCameras).y, 0) / 8; nextscrollY += Math.min(FlxG.mouse.getWorldPosition(buttonCameras).y - 100, 0) / 8; } - buttonCameras.scroll.y = FlxMath.lerp(buttonCameras.scroll.y, nextscrollY, 1/3); + buttonCameras.scroll.y = nextscrollY; for (button in buttons) { if (button != null) button.selectable = button.shouldPress = (hovered && !dragging); @@ -120,7 +120,7 @@ class UIButtonList extends UIWindow { addButton.selectable = (hovered && !dragging); if (__lastDrawCameras[0] != null) { - buttonCameras.height = bHeight - cameraSpacing; + buttonCameras.height = bHeight - cameraSpacing - 1; // -1 for the little gap at the bottom of the window buttonCameras.x = x - __lastDrawCameras[0].scroll.x; buttonCameras.y = y + cameraSpacing - __lastDrawCameras[0].scroll.y; buttonCameras.zoom = __lastDrawCameras[0].zoom;