fixing character editing

This commit is contained in:
lunarcleint
2023-07-15 16:07:47 -07:00
parent bb616f1b32
commit 559b7c0f74
3 changed files with 23 additions and 2 deletions
@@ -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));
}
@@ -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);
}
}
+1
View File
@@ -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;