Fixed numerous ANIM editor bugs

This commit is contained in:
MattNL
2023-05-15 14:20:22 -04:00
parent 2b9579f3de
commit a03bb9c229
3 changed files with 713 additions and 688 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -69,9 +69,22 @@ namespace PckStudio.Forms.Editor
{
IgnoreAndDo(item.Key, checkbox =>
{
anim.SetFlag(item.Value, state);
checkbox.Checked = state;
checkbox.Enabled = true;
switch(checkBoxLinkage[checkbox])
{
case ANIM_EFFECTS.FORCE_HEAD_ARMOR:
case ANIM_EFFECTS.FORCE_BODY_ARMOR:
case ANIM_EFFECTS.FORCE_LEFT_ARM_ARMOR:
case ANIM_EFFECTS.FORCE_RIGHT_ARM_ARMOR:
case ANIM_EFFECTS.FORCE_LEFT_LEG_ARMOR:
case ANIM_EFFECTS.FORCE_RIGHT_LEG_ARMOR:
checkbox.Enabled = state;
break;
case ANIM_EFFECTS.RESOLUTION_64x64:
if (state) checkbox.Checked = false; // Prioritize slim model > classic model, LCE would
break;
}
anim.SetFlag(item.Value, checkbox.Checked);
});
}
}
@@ -79,8 +92,6 @@ 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)
{
item.Key.Checked = anim.GetFlag(item.Value);
@@ -94,22 +105,28 @@ namespace PckStudio.Forms.Editor
switch (checkBoxLinkage[checkBox])
{
case ANIM_EFFECTS.HEAD_DISABLED:
checkBoxLinkage[ANIM_EFFECTS.FORCE_HEAD_ARMOR].Enabled = !checkBox.Checked;
checkBoxLinkage[ANIM_EFFECTS.FORCE_HEAD_ARMOR].Enabled = checkBox.Checked;
Uncheck(checkBoxLinkage[ANIM_EFFECTS.FORCE_HEAD_ARMOR]);
break;
case ANIM_EFFECTS.BODY_DISABLED:
checkBoxLinkage[ANIM_EFFECTS.FORCE_BODY_ARMOR].Enabled = !checkBox.Checked;
checkBoxLinkage[ANIM_EFFECTS.FORCE_BODY_ARMOR].Enabled = checkBox.Checked;
Uncheck(checkBoxLinkage[ANIM_EFFECTS.FORCE_BODY_ARMOR]);
break;
case ANIM_EFFECTS.LEFT_LEG_DISABLED:
checkBoxLinkage[ANIM_EFFECTS.FORCE_LEFT_LEG_ARMOR].Enabled = !checkBox.Checked;
checkBoxLinkage[ANIM_EFFECTS.FORCE_LEFT_LEG_ARMOR].Enabled = checkBox.Checked;
Uncheck(checkBoxLinkage[ANIM_EFFECTS.FORCE_LEFT_LEG_ARMOR]);
break;
case ANIM_EFFECTS.RIGHT_LEG_DISABLED:
checkBoxLinkage[ANIM_EFFECTS.FORCE_RIGHT_LEG_ARMOR].Enabled = !checkBox.Checked;
checkBoxLinkage[ANIM_EFFECTS.FORCE_RIGHT_LEG_ARMOR].Enabled = checkBox.Checked;
Uncheck(checkBoxLinkage[ANIM_EFFECTS.FORCE_RIGHT_LEG_ARMOR]);
break;
case ANIM_EFFECTS.LEFT_ARM_DISABLED:
checkBoxLinkage[ANIM_EFFECTS.FORCE_LEFT_ARM_ARMOR].Enabled = !checkBox.Checked;
checkBoxLinkage[ANIM_EFFECTS.FORCE_LEFT_ARM_ARMOR].Enabled = checkBox.Checked;
Uncheck(checkBoxLinkage[ANIM_EFFECTS.FORCE_LEFT_ARM_ARMOR]);
break;
case ANIM_EFFECTS.RIGHT_ARM_DISABLED:
checkBoxLinkage[ANIM_EFFECTS.FORCE_RIGHT_ARM_ARMOR].Enabled = !checkBox.Checked;
checkBoxLinkage[ANIM_EFFECTS.FORCE_RIGHT_ARM_ARMOR].Enabled = checkBox.Checked;
Uncheck(checkBoxLinkage[ANIM_EFFECTS.FORCE_RIGHT_ARM_ARMOR]);
break;
case ANIM_EFFECTS.RESOLUTION_64x64:
@@ -227,11 +244,13 @@ namespace PckStudio.Forms.Editor
private void uncheckAllButton_Click(object sender, EventArgs e)
{
ruleset.SetAll(false);
setDisplayAnim(ruleset.Value);
}
private void checkAllButton_Click(object sender, EventArgs e)
{
ruleset.SetAll(true);
setDisplayAnim(ruleset.Value);
}
private void exportButton_Click(object sender, EventArgs e)
@@ -291,6 +310,7 @@ namespace PckStudio.Forms.Editor
private void resetButton_Click(object sender, EventArgs e)
{
ruleset.ApplyAnim((SkinANIM)initialANIM.Clone());
setDisplayAnim((SkinANIM)initialANIM.Clone());
}
static readonly Dictionary<string, ANIM_EFFECTS> Templates = new Dictionary<string, ANIM_EFFECTS>()

View File

@@ -31,10 +31,9 @@ namespace PckStudio.Internal
ZOMBIE_ARMS = 1 << 1, // 0x02
STATIC_LEGS = 1 << 2, // 0x04
BAD_SANTA = 1 << 3, // 0x08
// Whatever effect this is should be a simple one as it's existed for a while
__BIT_4 = 1 << 4, // 0x10
SYNCED_LEGS = 1 << 5, // 0x20
//
__BIT_4 = 1 << 4, // 0x10 - Unused??
SYNCED_LEGS = 1 << 5, // 0x20
SYNCED_ARMS = 1 << 6, // 0x40
STATUE_OF_LIBERTY = 1 << 7, // 0x80