From b48ed13ed19d8771426b7f676eee990f2f743f6b Mon Sep 17 00:00:00 2001 From: Ethan Moffat Date: Mon, 18 Apr 2022 12:51:31 -0700 Subject: [PATCH] Make spell cast frame render for slightly longer --- EOLib/Domain/Character/CharacterRenderProperties.cs | 10 +++++++--- EOLib/Domain/Character/ICharacterRenderProperties.cs | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/EOLib/Domain/Character/CharacterRenderProperties.cs b/EOLib/Domain/Character/CharacterRenderProperties.cs index 2bb09a99a..21ec5279b 100644 --- a/EOLib/Domain/Character/CharacterRenderProperties.cs +++ b/EOLib/Domain/Character/CharacterRenderProperties.cs @@ -31,6 +31,7 @@ public class CharacterRenderProperties : ICharacterRenderProperties public int ActualAttackFrame { get; private set; } public int RenderAttackFrame { get; private set; } public int EmoteFrame { get; private set; } + public int ActualSpellCastFrame { get; private set; } public SitState SitState { get; private set; } public Emote Emote { get; private set; } @@ -179,10 +180,10 @@ public ICharacterRenderProperties WithNextEmoteFrame() public ICharacterRenderProperties WithNextSpellCastFrame() { + // spell cast frame ticks: 0 0 1 1 1 var props = MakeCopy(this); - props.CurrentAction = props.CurrentAction == CharacterActionState.Standing - ? CharacterActionState.SpellCast - : CharacterActionState.Standing; + props.ActualSpellCastFrame = (props.ActualSpellCastFrame + 1) % MAX_NUMBER_OF_ATTACK_FRAMES; + props.CurrentAction = props.ActualSpellCastFrame == 0 ? CharacterActionState.Standing : CharacterActionState.SpellCast; return props; } @@ -271,6 +272,7 @@ private static CharacterRenderProperties MakeCopy(ICharacterRenderProperties oth ActualAttackFrame = other.ActualAttackFrame, RenderAttackFrame = other.RenderAttackFrame, EmoteFrame = other.EmoteFrame, + ActualSpellCastFrame = other.ActualSpellCastFrame, SitState = other.SitState, Emote = other.Emote, @@ -304,6 +306,7 @@ public override bool Equals(object obj) RenderWalkFrame == properties.RenderWalkFrame && RenderAttackFrame == properties.RenderAttackFrame && EmoteFrame == properties.EmoteFrame && + ActualSpellCastFrame == properties.ActualSpellCastFrame && SitState == properties.SitState && Emote == properties.Emote && IsHidden == properties.IsHidden && @@ -333,6 +336,7 @@ public override int GetHashCode() hashCode = hashCode * -1521134295 + ActualAttackFrame.GetHashCode(); hashCode = hashCode * -1521134295 + RenderAttackFrame.GetHashCode(); hashCode = hashCode * -1521134295 + EmoteFrame.GetHashCode(); + hashCode = hashCode * -1521134295 + ActualSpellCastFrame.GetHashCode(); hashCode = hashCode * -1521134295 + SitState.GetHashCode(); hashCode = hashCode * -1521134295 + Emote.GetHashCode(); hashCode = hashCode * -1521134295 + IsHidden.GetHashCode(); diff --git a/EOLib/Domain/Character/ICharacterRenderProperties.cs b/EOLib/Domain/Character/ICharacterRenderProperties.cs index 8bf6f6c5d..b4235307c 100644 --- a/EOLib/Domain/Character/ICharacterRenderProperties.cs +++ b/EOLib/Domain/Character/ICharacterRenderProperties.cs @@ -27,6 +27,7 @@ public interface ICharacterRenderProperties : ICloneable int ActualAttackFrame { get; } int RenderAttackFrame { get; } int EmoteFrame { get; } + int ActualSpellCastFrame { get; } SitState SitState { get; } Emote Emote { get; }