コード例 #1
0
        private void listBox_DoubleClick(object sender, EventArgs e)
        {
            if (listBox.SelectedIndex == -1) return;
            var animKvp = (KeyValuePair<string, Animation>)listBox.SelectedItem;
            Animation anim = animKvp.Value;
            string name = animKvp.Key;
            using(AnimationDialog dialog = new AnimationDialog(anim, project)) {
                if (dialog.ShowDialog(this) == DialogResult.OK) {
                    Animation newAnim = dialog.Animation;
                    string newName = dialog.AnimationName;
                    var oldGroups = anim.groups;
                    var oldSheet = anim.sheet;

                    var list = new Undo.UndoCommandList("Modify sprite " + anim.Name, new Undo.UndoCommand(
                        delegate() {
                            anim.groups = newAnim.groups;
                            anim.sheet = newAnim.sheet;
                            if (name != newName) {
                                project.animations.Remove(name);
                                project.animations.Add(newName, anim);
                            }
                        },
                        delegate() {
                            anim.groups = oldGroups;
                            anim.sheet = oldSheet;
                            if (name != newName) {
                                project.animations.Remove(newName);
                                project.animations.Add(name, anim);
                            }
                        }
                    ));
                    project.Undo.DoCommand(list);
                }
            }
        }
コード例 #2
0
 private void addButton_Click(object sender, EventArgs e)
 {
     using(AnimationDialog dialog = new AnimationDialog(project)) {
         if (dialog.ShowDialog(this) == DialogResult.OK) {
             string name = dialog.AnimationName;
             var anim = dialog.Animation;
             var list = new Undo.UndoCommandList("Add animation " + name, new Undo.UndoCommand(
                 delegate() {
                     project.animations.Add(name, anim);
                 },
                 delegate() {
                     project.animations.Remove(name);
                 }
             ));
             project.Undo.DoCommand(list);
         }
     }
 }