From 2fcd7e19ef11265ab87b836afc3e69ce96b8daaf Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Sun, 2 Apr 2023 17:41:47 +0200 Subject: [PATCH] ANIMEditor - Update ANIMRuleSet --- PCK-Studio/Forms/Editor/ANIMEditor.cs | 36 ++++++++++++--------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/PCK-Studio/Forms/Editor/ANIMEditor.cs b/PCK-Studio/Forms/Editor/ANIMEditor.cs index eee62455..0202a43e 100644 --- a/PCK-Studio/Forms/Editor/ANIMEditor.cs +++ b/PCK-Studio/Forms/Editor/ANIMEditor.cs @@ -50,18 +50,16 @@ namespace PckStudio.Forms.Editor private SkinANIM anim; private bool ignoreCheckChanged = false; - public ANIMRuleSet(SkinANIM anim, params (CheckBox, ANIM_EFFECTS)[] linkage) + public ANIMRuleSet(params (CheckBox, ANIM_EFFECTS)[] linkage) { - this.anim = anim; checkBoxLinkage = new Bictionary(32); if (linkage.Length < 32) Debug.WriteLine($"Not all {nameof(ANIM_EFFECTS)} are mapped to a given checkbox."); checkBoxLinkage.AddRange(linkage); - foreach (var (checkbox, effect) in linkage) + foreach (var (checkbox, _) in linkage) { checkbox.CheckedChanged += checkedChanged; - checkbox.Checked = anim.GetFlag(effect); } } @@ -81,9 +79,10 @@ namespace PckStudio.Forms.Editor internal void ApplyAnim(SkinANIM anim) { this.anim = anim; + foreach (var item in checkBoxLinkage) + item.Key.Enabled = true; foreach (var item in checkBoxLinkage) { - IgnoreAndDo(item.Key, checkbox => checkbox.Enabled = true); item.Key.Checked = anim.GetFlag(item.Value); } } @@ -114,18 +113,12 @@ namespace PckStudio.Forms.Editor break; case ANIM_EFFECTS.RESOLUTION_64x64: - - if (checkBoxLinkage[ANIM_EFFECTS.SLIM_MODEL].Checked) - { - checkBoxLinkage[ANIM_EFFECTS.SLIM_MODEL].Checked = false; - } + Uncheck(checkBoxLinkage[ANIM_EFFECTS.SLIM_MODEL]); checkBoxLinkage[ANIM_EFFECTS.SLIM_MODEL].Enabled = !checkBox.Checked; break; + case ANIM_EFFECTS.SLIM_MODEL: - if (checkBoxLinkage[ANIM_EFFECTS.RESOLUTION_64x64].Checked) - { - checkBoxLinkage[ANIM_EFFECTS.RESOLUTION_64x64].Checked = false; - } + Uncheck(checkBoxLinkage[ANIM_EFFECTS.RESOLUTION_64x64]); checkBoxLinkage[ANIM_EFFECTS.RESOLUTION_64x64].Enabled = !checkBox.Checked; break; default: @@ -136,6 +129,11 @@ namespace PckStudio.Forms.Editor } } + private void Uncheck(CheckBox checkBox) + { + checkBox.Checked = false; + } + private void IgnoreAndDo(CheckBox checkBox, Action action) { ignoreCheckChanged = true; @@ -153,9 +151,7 @@ namespace PckStudio.Forms.Editor Close(); } var anim = initialANIM = SkinANIM.FromString(ANIM); - setDisplayAnim(anim); - - ruleset = new ANIMRuleSet(anim, + ruleset = new ANIMRuleSet( (bobbingCheckBox, ANIM_EFFECTS.HEAD_BOBBING_DISABLED), (bodyCheckBox, ANIM_EFFECTS.BODY_DISABLED), (bodyOCheckBox, ANIM_EFFECTS.BODY_OVERLAY_DISABLED), @@ -189,8 +185,9 @@ namespace PckStudio.Forms.Editor (unknownCheckBox, ANIM_EFFECTS.__BIT_4), (zombieCheckBox, ANIM_EFFECTS.ZOMBIE_ARMS) ); - ruleset.OnCheckboxChanged = setDisplayAnim; + setDisplayAnim(anim); + ruleset.ApplyAnim(anim); } private void setDisplayAnim(SkinANIM anim) @@ -296,8 +293,7 @@ namespace PckStudio.Forms.Editor static readonly Dictionary Templates = new Dictionary() { - // TODO - //{ "Steve (64x32)", 0 }, + { "Steve (64x32)", ANIM_EFFECTS.NONE }, { "Steve (64x64)", ANIM_EFFECTS.RESOLUTION_64x64 }, { "Alex (64x64)", ANIM_EFFECTS.SLIM_MODEL }, { "Zombie Skins", ANIM_EFFECTS.ZOMBIE_ARMS },