undos pt 2 im going to sleep
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user