undos finsished i think >:D
This commit is contained in:
@@ -35,4 +35,10 @@ class UndoList<T> {
|
||||
|
||||
public inline function save()
|
||||
savedLength = undoList.length;
|
||||
|
||||
public inline function clear() {
|
||||
undoList = [];
|
||||
redoList = [];
|
||||
save();
|
||||
}
|
||||
}
|
||||
@@ -216,7 +216,7 @@ class CharacterAnimButton extends UIButton {
|
||||
super.update(elapsed);
|
||||
}
|
||||
|
||||
public function changeName(newName:String) @:privateAccess {
|
||||
public function changeName(newName:String, addToUndo:Bool = true) @:privateAccess {
|
||||
if (newName == anim) return;
|
||||
|
||||
if (parent.character.getNameList().indexOf(newName) != -1) {
|
||||
@@ -224,6 +224,7 @@ class CharacterAnimButton extends UIButton {
|
||||
return;
|
||||
}
|
||||
|
||||
var oldName:String = anim;
|
||||
if (parent.character.animateAtlas != null) {
|
||||
var animSymbol:FlxSymbolAnimation = __getAnimationSymbol();
|
||||
|
||||
@@ -252,13 +253,17 @@ class CharacterAnimButton extends UIButton {
|
||||
parent.displayAnimsFramesList.set(newName, displayFrame);
|
||||
|
||||
this.anim = newName;
|
||||
nameTextBox.label.text = newName;
|
||||
updateText();
|
||||
|
||||
if (addToUndo) CharacterEditor.undos.addToUndo(CAnimEditName(ID, oldName, newName));
|
||||
}
|
||||
|
||||
public function changeAnim(newAnim:String) @:privateAccess {
|
||||
public function changeAnim(newAnim:String, addToUndo:Bool = true) @:privateAccess {
|
||||
var animData:AnimData = parent.character.animDatas[anim];
|
||||
if (newAnim == animData.anim) return;
|
||||
|
||||
var oldAnim:String = animData.anim;
|
||||
animData.anim = newAnim;
|
||||
|
||||
if (parent.character.animateAtlas != null)
|
||||
@@ -280,13 +285,19 @@ class CharacterAnimButton extends UIButton {
|
||||
|
||||
if (parent.character.getAnimName() == anim)
|
||||
CharacterEditor.instance.playAnimation(anim);
|
||||
|
||||
animTextBox.label.text = newAnim;
|
||||
|
||||
if (addToUndo) CharacterEditor.undos.addToUndo(CAnimEditAnim(ID, oldAnim, newAnim));
|
||||
}
|
||||
|
||||
public function changeOffset(newOffsetX:Null<Float>, newOffsetY:Null<Float>) {
|
||||
public function changeOffset(newOffsetX:Null<Float>, newOffsetY:Null<Float>, addToUndo:Bool = true) {
|
||||
var animData:AnimData = parent.character.animDatas[anim];
|
||||
|
||||
if (newOffsetX != null && newOffsetY != null && newOffsetX == animData.x && newOffsetY == animData.y)
|
||||
return;
|
||||
|
||||
var oldPosition:FlxPoint = FlxPoint.get(animData.x, animData.y);
|
||||
|
||||
if (newOffsetX != null) animData.x = newOffsetX;
|
||||
if (newOffsetY != null) animData.y = newOffsetY;
|
||||
@@ -296,11 +307,17 @@ class CharacterAnimButton extends UIButton {
|
||||
if (parent.character.getAnimName() == anim && Options.playAnimOnOffset)
|
||||
CharacterEditor.instance.playAnimation(anim);
|
||||
|
||||
positionXStepper.label.text = Std.string(animData.x);
|
||||
positionYStepper.label.text = Std.string(animData.y);
|
||||
|
||||
updateText();
|
||||
|
||||
if (addToUndo) CharacterEditor.undos.addToUndo(CAnimEditOffset(ID, oldPosition, FlxPoint.get(animData.x, animData.y)));
|
||||
}
|
||||
|
||||
public function changeFPS(newFPS:Float) @:privateAccess {
|
||||
public function changeFPS(newFPS:Float, addToUndo:Bool = true) @:privateAccess {
|
||||
var animData:AnimData = parent.character.animDatas[anim];
|
||||
var oldFPS:Float = animData.fps;
|
||||
animData.fps = newFPS;
|
||||
|
||||
if (parent.character.animateAtlas != null) {
|
||||
@@ -313,10 +330,15 @@ class CharacterAnimButton extends UIButton {
|
||||
|
||||
if (parent.character.getAnimName() == anim)
|
||||
CharacterEditor.instance.playAnimation(anim);
|
||||
|
||||
fpsStepper.label.text = Std.string(newFPS);
|
||||
|
||||
if (addToUndo) CharacterEditor.undos.addToUndo(CAnimEditFPS(ID, oldFPS, newFPS));
|
||||
}
|
||||
|
||||
public function changeLooping(newLooping:Bool) @:privateAccess {
|
||||
public function changeLooping(newLooping:Bool, addToUndo:Bool = true) @:privateAccess {
|
||||
var animData:AnimData = parent.character.animDatas[anim];
|
||||
|
||||
animData.loop = newLooping;
|
||||
|
||||
if (parent.character.animateAtlas != null) {
|
||||
@@ -329,16 +351,26 @@ class CharacterAnimButton extends UIButton {
|
||||
|
||||
if (parent.character.getAnimName() == anim)
|
||||
CharacterEditor.instance.playAnimation(anim);
|
||||
|
||||
loopedCheckbox.checked = newLooping;
|
||||
|
||||
if (addToUndo) CharacterEditor.undos.addToUndo(CAnimEditLooping(ID, newLooping));
|
||||
}
|
||||
|
||||
public function changeIndicies(indicies:Array<Int>) @:privateAccess {
|
||||
public function changeIndicies(indicies:Array<Int>, addToUndo:Bool = true) @:privateAccess {
|
||||
var animData:AnimData = parent.character.animDatas[anim];
|
||||
var oldIndices:Array<Int> = animData.indices.copy();
|
||||
|
||||
animData.indices = indicies;
|
||||
|
||||
__refreshAnimation();
|
||||
|
||||
if (parent.character.getAnimName() == anim)
|
||||
CharacterEditor.instance.playAnimation(anim);
|
||||
|
||||
indicesTextBox.label.text = animData.indices.join(", ");
|
||||
|
||||
if (addToUndo) CharacterEditor.undos.addToUndo(CAnimEditIndices(ID, oldIndices, indicies));
|
||||
}
|
||||
|
||||
public inline function refreshFlxAnimationFrames(flxAnimation:FlxAnimation, animData:AnimData) @:privateAccess {
|
||||
|
||||
@@ -505,7 +505,6 @@ class CharacterEditor extends UIState {
|
||||
changeCharacterDesginedAs(!newIsPlayer, false);
|
||||
case CCharEditInfo(oldInfo, newInfo):
|
||||
characterPropertiesWindow.editCharacterInfo(oldInfo, false);
|
||||
case CCharEditSprite(oldSprite, newSprite):
|
||||
case CAnimCreate(animID, animData):
|
||||
characterAnimsWindow.deleteAnimation(characterAnimsWindow.buttons.members[animID], false);
|
||||
case CAnimDelete(animID, animData):
|
||||
@@ -516,15 +515,27 @@ class CharacterEditor extends UIState {
|
||||
characterAnimsWindow.buttons.members.remove(button);
|
||||
characterAnimsWindow.buttons.members.insert(animID, button);
|
||||
case CAnimEditName(animID, oldName, newName):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeName(oldName, false);
|
||||
case CAnimEditAnim(animID, oldAnim, newAnim):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeAnim(oldAnim, false);
|
||||
case CAnimEditOffset(animID, oldOffset, newOffset):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeOffset(oldOffset.x, oldOffset.y, false);
|
||||
case CAnimEditFPS(animID, oldFPS, newFPS):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeFPS(oldFPS, false);
|
||||
case CAnimEditLooping(animID, newLooping):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeLooping(!newLooping, false);
|
||||
case CAnimEditIndices(animID, oldIndicies, newIndicies):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeIndicies(oldIndicies, false);
|
||||
case CCharClearOffsets(oldOffsets):
|
||||
for (anim => offset in oldOffsets)
|
||||
if (characterAnimsWindow.animButtons[anim] != null)
|
||||
characterAnimsWindow.animButtons[anim].changeOffset(offset.x, offset.y);
|
||||
characterAnimsWindow.animButtons[anim].changeOffset(offset.x, offset.y, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -550,7 +561,6 @@ class CharacterEditor extends UIState {
|
||||
changeCharacterDesginedAs(newIsPlayer, false);
|
||||
case CCharEditInfo(oldInfo, newInfo):
|
||||
characterPropertiesWindow.editCharacterInfo(newInfo, false);
|
||||
case CCharEditSprite(oldSprite, newSprite):
|
||||
case CAnimCreate(animID, animData):
|
||||
characterAnimsWindow.addAnimation(animData, animID, false);
|
||||
playAnimation(animData.name);
|
||||
@@ -561,11 +571,23 @@ class CharacterEditor extends UIState {
|
||||
characterAnimsWindow.buttons.members.remove(button);
|
||||
characterAnimsWindow.buttons.members.insert(newAnimID, button);
|
||||
case CAnimEditName(animID, oldName, newName):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeName(newName, false);
|
||||
case CAnimEditAnim(animID, oldAnim, newAnim):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeAnim(newAnim, false);
|
||||
case CAnimEditOffset(animID, oldOffset, newOffset):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeOffset(newOffset.x, newOffset.y, false);
|
||||
case CAnimEditFPS(animID, oldFPS, newFPS):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeFPS(newFPS, false);
|
||||
case CAnimEditLooping(animID, newLooping):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeLooping(newLooping, false);
|
||||
case CAnimEditIndices(animID, oldIndicies, newIndicies):
|
||||
var button:CharacterAnimButton = characterAnimsWindow.buttons.members[animID];
|
||||
button.changeIndicies(newIndicies, false);
|
||||
case CCharClearOffsets(oldOffsets):
|
||||
clearOffsets(false);
|
||||
}
|
||||
@@ -601,7 +623,7 @@ class CharacterEditor extends UIState {
|
||||
];
|
||||
|
||||
for (anim => button in characterAnimsWindow.animButtons)
|
||||
button.changeOffset(0, 0);
|
||||
button.changeOffset(0, 0, false);
|
||||
|
||||
if (addToUndo) undos.addToUndo(CCharClearOffsets(oldOffsets));
|
||||
}
|
||||
@@ -861,7 +883,6 @@ enum CharacterEditorChange {
|
||||
CCharEditDesignedAs(newIsPlayer:Bool);
|
||||
|
||||
CCharEditInfo(oldInfo:CharacterExtraInfo, newInfo:CharacterExtraInfo);
|
||||
CCharEditSprite(oldSprite:String, newSprite:String);
|
||||
|
||||
CAnimCreate(animID:Int, animData:AnimData);
|
||||
CAnimDelete(animID:Int, animData:AnimData);
|
||||
|
||||
Reference in New Issue
Block a user