undos pt 2 im going to sleep

This commit is contained in:
lunarcleint
2025-03-20 04:06:23 -07:00
parent 4b9d32fb50
commit 535ff8cec8
2 changed files with 42 additions and 4 deletions
@@ -40,16 +40,28 @@ class CharacterAnimsWindow extends UIButtonList<CharacterAnimButton> {
alpha = 0.7;
for (anim in character.getAnimOrder())
addAnimation(character.animDatas.get(anim));
addAnimation(character.animDatas.get(anim), -1, false);
addButton.callback = generateAnimation;
setAnimAutoComplete(CoolUtil.getAnimsListFromSprite(character));
// dragCallback = (button:CharacterAnimButton, oldID:Int, newID:Int) -> {}
}
public var ghosts:Array<String> = [];
var __movingAnimOldOrder:Int = -1;
public override function update(elapsed:Float) {
var __oldMoving:CharacterAnimButton = curMoving;
super.update(elapsed);
if (curMoving != null && __oldMoving == null)
__movingAnimOldOrder = curMoving.ID;
if (curMoving == null && __oldMoving != null)
if (__movingAnimOldOrder != __oldMoving.ID)
CharacterEditor.undos.addToUndo(CAnimEditOrder(__movingAnimOldOrder, __oldMoving.ID));
animsList = [for (button in buttons) button.anim];
character.ghosts = ghosts;
}
@@ -84,7 +96,7 @@ class CharacterAnimsWindow extends UIButtonList<CharacterAnimButton> {
public function removeAnimDisplay(name:String)
displayAnimsFramesList.remove(name);
public function deleteAnimation(button:CharacterAnimButton) {
public function deleteAnimation(button:CharacterAnimButton, addToUndo:Bool = true) {
if (buttons.members.length <= 1) return;
if (character.getAnimName() == button.anim)
@:privateAccess CharacterEditor.instance._animation_down(null);
@@ -93,6 +105,7 @@ class CharacterAnimsWindow extends UIButtonList<CharacterAnimButton> {
if (character.animOffsets.exists(button.anim)) character.animOffsets.remove(button.anim);
if (character.animDatas.exists(button.anim)) character.animDatas.remove(button.anim);
if (addToUndo) CharacterEditor.undos.addToUndo(CAnimDelete(button.ID, button.data));
remove(button); button.destroy();
}
@@ -120,7 +133,7 @@ class CharacterAnimsWindow extends UIButtonList<CharacterAnimButton> {
addAnimation(animData);
}
public function addAnimation(animData:AnimData, animID:Int = -1) @:privateAccess {
public function addAnimation(animData:AnimData, animID:Int = -1, addToUndo:Bool = true) @:privateAccess {
XMLUtil.addAnimToSprite(character, animData);
var newButton:CharacterAnimButton = new CharacterAnimButton(0, 0, animData, this);
@@ -132,6 +145,8 @@ class CharacterAnimsWindow extends UIButtonList<CharacterAnimButton> {
if (newButton.valid)
buildAnimDisplay(animData.name, animData);
if (addToUndo) CharacterEditor.undos.addToUndo(CAnimCreate(newButton.ID, newButton.data));
}
@:noCompletion var __autoCompleteAnims:Array<String> = [];
@@ -507,8 +507,13 @@ class CharacterEditor extends UIState {
characterPropertiesWindow.editCharacterInfo(oldInfo, false);
case CCharEditSprite(oldSprite, newSprite):
case CAnimCreate(animID, animData):
characterAnimsWindow.deleteAnimation(characterAnimsWindow.buttons.members[animID], false);
case CAnimDelete(animID, animData):
characterAnimsWindow.addAnimation(animData, animID, false);
case CAnimEditOrder(animID, newAnimID):
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[newAnimID];
characterAnimsWindow.buttons.members.remove(button);
characterAnimsWindow.buttons.members.insert(animID, button);
case CAnimEditName(animID, oldName, newName):
case CAnimEditAnim(animID, oldAnim, newAnim):
case CAnimEditOffset(animID, oldOffset, newOffset):
@@ -516,6 +521,9 @@ class CharacterEditor extends UIState {
case CAnimEditLooping(animID, newLooping):
case CAnimEditIndices(animID, oldIndicies, newIndicies):
case CCharClearOffsets(oldOffsets):
for (anim => offset in oldOffsets)
if (characterAnimsWindow.animButtons[anim] != null)
characterAnimsWindow.animButtons[anim].changeOffset(offset.x, offset.y);
}
}
@@ -543,8 +551,13 @@ class CharacterEditor extends UIState {
characterPropertiesWindow.editCharacterInfo(newInfo, false);
case CCharEditSprite(oldSprite, newSprite):
case CAnimCreate(animID, animData):
characterAnimsWindow.addAnimation(animData, animID, false);
case CAnimDelete(animID, animData):
characterAnimsWindow.deleteAnimation(characterAnimsWindow.buttons.members[animID], false);
case CAnimEditOrder(animID, newAnimID):
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
characterAnimsWindow.buttons.members.remove(button);
characterAnimsWindow.buttons.members.insert(newAnimID, button);
case CAnimEditName(animID, oldName, newName):
case CAnimEditAnim(animID, oldAnim, newAnim):
case CAnimEditOffset(animID, oldOffset, newOffset):
@@ -552,6 +565,7 @@ class CharacterEditor extends UIState {
case CAnimEditLooping(animID, newLooping):
case CAnimEditIndices(animID, oldIndicies, newIndicies):
case CCharClearOffsets(oldOffsets):
clearOffsets(false);
}
}
@@ -576,9 +590,18 @@ class CharacterEditor extends UIState {
t.icon = (Options.characterDragging = !Options.characterDragging) ? 1 : 0;
}
function _offsets_clear(_) {
function _offsets_clear(_) clearOffsets();
function clearOffsets(addToUndo:Bool = true) {
var oldOffsets:Map<String, FlxPoint> = [
for (anim => offsets in character.animOffsets)
anim => offsets.clone()
];
for (anim => button in characterAnimsWindow.animButtons)
button.changeOffset(0, 0);
if (addToUndo) undos.addToUndo(CCharClearOffsets(oldOffsets));
}
function _change_offset(x:Float, y:Float) {