예제 #1
0
        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;
        }
예제 #2
0
        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));
            }
        }
예제 #3
0
        private Frames GetTalkingFrames(RyanState state)
        {
            switch (State)
            {
            case RyanState.ArmsCrossed:
                return(FramesTalkingArmsCrossed);

            case RyanState.ArmsRaised:
                return(FramesTalkingArmsRaised);

            case RyanState.HandsIntertwined:
                return(FramesTalkingHandsIntertwined);
            }

            return(FramesTalkingNeutral);
        }
예제 #4
0
        private Frames GetTransitionFrames(RyanState state)
        {
            switch (state)
            {
            case RyanState.ArmsCrossed:
                return(FramesTransitionArmsCrossed);

            case RyanState.ArmsRaised:
                return(FramesTransitionArmsRaised);

            case RyanState.HandsIntertwined:
                return(FramesTransitionHandsIntertwined);
            }

            return(FramesTransitionNeutral);
        }
예제 #5
0
 public Script TransitionTo(RyanState state, int delay = ANIMATIONDELAY)
 {
     return(Get <Scripts>().Start(TransitionScript(state, delay)));
 }