diff --git a/assets/editors/layouts/stage/spriteEditScreen.xml b/assets/editors/layouts/stage/spriteEditScreen.xml index a0684432..b5bcfd58 100644 --- a/assets/editors/layouts/stage/spriteEditScreen.xml +++ b/assets/editors/layouts/stage/spriteEditScreen.xml @@ -76,12 +76,12 @@ setEx("highMemory", highMemoryRadio.checked); setEx("lowMemory", lowMemoryRadio.checked); - sprite.x = xStepper.value; - sprite.y = yStepper.value; - sprite.zoomFactor = zoomFactorStepper.value; - sprite.antialiasing = antialiasingCheckbox.checked; + //sprite.x = xStepper.value; + //sprite.y = yStepper.value; + //sprite.zoomFactor = zoomFactorStepper.value; + //sprite.antialiasing = antialiasingCheckbox.checked; //sprite.color = colorWheel.color; - sprite.spriteAnimType = animType.value; + //sprite.spriteAnimType = animType.value; sprite.angle = angleStepper.value; function saveXY(obj:Dynamic, name:String, x:UINumericStepper, y:UINumericStepper) { @@ -112,6 +112,7 @@ saveXY(sprite.scrollFactor, "scroll", scrollXStepper, scrollYStepper); saveXY(sprite.scale, "scale", scaleXStepper, scaleYStepper); saveXY(sprite.skew, "skew", skewXStepper, skewYStepper); + XMLUtil.loadSpriteFromXML(sprite, data.xml, stage.spritesParentFolder); } \ No newline at end of file diff --git a/source/funkin/editors/stage/StageEditor.hx b/source/funkin/editors/stage/StageEditor.hx index 463accdb..9c03b4c5 100644 --- a/source/funkin/editors/stage/StageEditor.hx +++ b/source/funkin/editors/stage/StageEditor.hx @@ -261,7 +261,27 @@ class StageEditor extends UIState { members.insert(newID, sprite); } stageSpritesWindow.addButton.callback = () -> { - // TODO: implement this + var node:Access = new Access(Xml.createElement("sprite")); + stage.stageXML.x.addChild(node.x); + node.att.name = "sprite_" + stageSpritesWindow.buttons.length; + + var sprite:FunkinSprite = new FunkinSprite(); + add(sprite); + sprite.extra.set(exID("node"), node); + sprite.extra.set(exID("type"), node.name); + sprite.extra.set(exID("imageFile"), ''); + sprite.extra.set(exID("parentNode"), stage.stageXML.x); + sprite.extra.set(exID("highMemory"), false); + sprite.extra.set(exID("lowMemory"), false); + xmlMap.set(sprite, node); + + var button:StageElementButton = new StageSpriteButton(0, 0, sprite, node); + sprite.extra.set(exID("button"), button); + stageSpritesWindow.add(button); + + var substate = new StageSpriteEditScreen(button); + substate.newSprite = true; + openSubState(substate); } for (i=>sprite in order) { var xml = xmlMap.get(sprite); diff --git a/source/funkin/editors/stage/StageSpriteEditScreen.hx b/source/funkin/editors/stage/StageSpriteEditScreen.hx index c221b9fa..d1b4cf18 100644 --- a/source/funkin/editors/stage/StageSpriteEditScreen.hx +++ b/source/funkin/editors/stage/StageSpriteEditScreen.hx @@ -7,8 +7,10 @@ using StringTools; class StageSpriteEditScreen extends UISoftcodedWindow { + public var newSprite:Bool = false; public var data:StageElementButton; public var sprite:FunkinSprite; + var isSaving:Bool = false; public function new(data:StageElementButton) { this.data = data; @@ -32,7 +34,16 @@ class StageSpriteEditScreen extends UISoftcodedWindow { } public override function saveData() { + isSaving = true; super.saveData(); data.updateInfo(sprite); } + + public override function close() { + if (!isSaving && newSprite) { + data.onDelete(); + trace("deleting sprite"); + } + super.close(); + } } \ No newline at end of file diff --git a/source/funkin/editors/ui/UIButtonList.hx b/source/funkin/editors/ui/UIButtonList.hx index 2253460d..fffe3701 100644 --- a/source/funkin/editors/ui/UIButtonList.hx +++ b/source/funkin/editors/ui/UIButtonList.hx @@ -48,7 +48,7 @@ class UIButtonList extends UIWindow { } public inline function add(button:T) { - button.ID = buttons.members.length-1; + button.ID = buttons.members.length; buttons.add(button); curMovingInterval = 0; nextscrollY += button.bHeight;