public Ryan() { Transform .Create(this) .SetPosition(290, 170) .SetAbsolute(true); Text .Create(this) .SetColor(Color.White) .SetFont(content.fonts.pixeloperator_outline_BMF) .SetWidth(300); Sprite .Create(this) .SetImage(content.rooms.office.ryan, 20, 1, 19) .SetFrame(FRAMENEUTRAL); SpriteTransformAnimation .Create(this) .SetSetFrameFn(SetFrame); SpriteData .Create(this) .SetOffset(-29, 50); Scripts .Create(this); State = RyanState.Neutral; DrawOrder = PRIORITY; }
private IEnumerator TransitionScript(RyanState newState, int delay) { if (State == newState) { yield break; } var Sprite = Get <Sprite>(); var TransitionFrames = GetTransitionFrames(State).Copy(); TransitionFrames.Reverse(); TransitionFrames.Add(FRAMENEUTRAL); TransitionFrames.AddRange(GetTransitionFrames(newState)); foreach (var Frame in TransitionFrames) { if (delay > 0) { yield return(Delay.Updates(delay)); } Sprite.CurrentFrame = Frame; } State = newState; if (delay > 0) { yield return(Delay.Updates(delay)); } }
private Frames GetTalkingFrames(RyanState state) { switch (State) { case RyanState.ArmsCrossed: return(FramesTalkingArmsCrossed); case RyanState.ArmsRaised: return(FramesTalkingArmsRaised); case RyanState.HandsIntertwined: return(FramesTalkingHandsIntertwined); } return(FramesTalkingNeutral); }
private Frames GetTransitionFrames(RyanState state) { switch (state) { case RyanState.ArmsCrossed: return(FramesTransitionArmsCrossed); case RyanState.ArmsRaised: return(FramesTransitionArmsRaised); case RyanState.HandsIntertwined: return(FramesTransitionHandsIntertwined); } return(FramesTransitionNeutral); }
public Script TransitionTo(RyanState state, int delay = ANIMATIONDELAY) { return(Get <Scripts>().Start(TransitionScript(state, delay))); }