From 559b7c0f742f7c63602a3f5b2d3fb044f9914077 Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Sat, 15 Jul 2023 16:07:47 -0700 Subject: [PATCH] fixing character editing --- .../funkin/editors/character/CharacterEditor.hx | 8 ++++++-- .../editors/character/CharacterInfoScreen.hx | 16 ++++++++++++++++ source/funkin/game/Character.hx | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/source/funkin/editors/character/CharacterEditor.hx b/source/funkin/editors/character/CharacterEditor.hx index d15bfd38..a89b4e5e 100644 --- a/source/funkin/editors/character/CharacterEditor.hx +++ b/source/funkin/editors/character/CharacterEditor.hx @@ -308,7 +308,7 @@ class CharacterEditor extends UIState { case null: // do nothing case CEditInfo(oldInfo, newInfo): - editInfo(oldInfo); + editInfo(oldInfo, false); case CCreateAnim(animID, animData): deleteAnim(animData.name, false); case CEditAnim(name, oldData, animData): @@ -336,7 +336,7 @@ class CharacterEditor extends UIState { case null: // do nothing case CEditInfo(oldInfo, newInfo): - editInfo(newInfo); + editInfo(newInfo, false); case CCreateAnim(animID, animData): createAnim(animData, animID, false); case CEditAnim(name, oldData, animData): @@ -430,9 +430,13 @@ class CharacterEditor extends UIState { } public function editInfo(newInfo:Xml, addtoUndo:Bool = true) { + var lastAnim:String = character.getAnimName(); + var oldInfo = character.buildXML(); character.applyXML(new Access(newInfo)); + playAnimation(lastAnim); + if (addtoUndo) addToUndo(CEditInfo(oldInfo, newInfo)); } diff --git a/source/funkin/editors/character/CharacterInfoScreen.hx b/source/funkin/editors/character/CharacterInfoScreen.hx index 34481344..ed3db829 100644 --- a/source/funkin/editors/character/CharacterInfoScreen.hx +++ b/source/funkin/editors/character/CharacterInfoScreen.hx @@ -1,5 +1,6 @@ package funkin.editors.character; +import flixel.math.FlxPoint; import haxe.xml.Access; import funkin.game.Character; @@ -161,6 +162,21 @@ class CharacterInfoScreen extends UISubstateWindow { xml.set("antialiasing", antialiasingCheckbox.checked ? "true" : "false"); xml.set("sprite", spriteTextBox.label.text); + for (anim in character.animDatas) + { + var animXml:Xml = Xml.createElement('anim'); + animXml.set("name", anim.name); + animXml.set("anim", anim.anim); + animXml.set("loop", Std.string(anim.loop)); + animXml.set("fps", Std.string(anim.fps)); + var offset:FlxPoint = character.getAnimOffset(anim.name); + animXml.set("x", Std.string(offset.x)); + animXml.set("y", Std.string(offset.y)); + if (anim.indices.length > 0) + animXml.set("indices", anim.indices.join(",")); + xml.addChild(animXml); + } + if (onSave != null) onSave(xml); } } \ No newline at end of file diff --git a/source/funkin/game/Character.hx b/source/funkin/game/Character.hx index b3b620ac..6d413022 100644 --- a/source/funkin/game/Character.hx +++ b/source/funkin/game/Character.hx @@ -176,6 +176,7 @@ class Character extends FunkinSprite implements IBeatReceiver implements IOffset switchOffset('singLEFT', 'singRIGHT'); switchOffset('singLEFTmiss', 'singRIGHTmiss'); } + frameOffset.set(getAnimOffset(getAnimName()).x, getAnimOffset(getAnimName()).y); if (isPlayer) flipX = !flipX; __baseFlipped = flipX;