示例#1
0
        public void Face(Facing dir)
        {
            if (!Locked)
            {
                Initialize();
                if (this.Facing != dir)
                {
                    FacingChanged.SafeInvoke(this, new FacingChangedArgs(this.Facing, dir));
                }
                this.Facing = dir;
                switch (this.Facing)
                {
                case Facing.Up:
                    this.Animator.Play("face-up");
                    break;

                case Facing.Down:
                    this.Animator.Play("face-down");
                    break;

                case Facing.Left:
                    this.Animator.Play("face-left");
                    break;

                case Facing.Right:
                    this.Animator.Play("face-right");
                    break;
                }
            }
        }
示例#2
0
        public void TurnAround(Facing facing, bool templock)
        {
            Action callback = null;

            this.Turning = true;
            if (this.Facing != facing)
            {
                FacingChanged.SafeInvoke(this, new FacingChangedArgs(this.Facing, facing));
            }
            this.Facing = facing;

            if (templock)
            {
                Lock();
                callback = new Action(delegate() {
                    this.Release(false);
                    this.Turning = false;
                });
            }

            switch (facing)
            {
            case Facing.Up:
                this.Animator.Play("facechange-up", true, callback);
                break;

            case Facing.Down:
                this.Animator.Play("facechange-down", true, callback);
                break;

            case Facing.Left:
                this.Animator.Play("facechange-left", true, callback);
                break;

            case Facing.Right:
                this.Animator.Play("facechange-right", true, callback);
                break;
            }
        }
示例#3
0
        public virtual void ForceMove(Facing dir, MovementSpeed speed)
        {
            if (MovementState == MovementState.None)
            {
                this.Initialize();
                BeginMoving.SafeInvoke(this, EventArgs.Empty);
                if (this.Facing != dir)
                {
                    FacingChanged.SafeInvoke(this, new FacingChangedArgs(this.Facing, dir));
                }
                this.Facing = dir;

                switch (dir)
                {
                case Facing.Up:
                    if (speed == MovementSpeed.Walking)
                    {
                        Animator.Play("walking-up");
                    }
                    else if (speed == MovementSpeed.Running)
                    {
                        Animator.Play("running-up");
                    }
                    break;

                case Facing.Down:
                    if (speed == MovementSpeed.Walking)
                    {
                        Animator.Play("walking-down");
                    }
                    else if (speed == MovementSpeed.Running)
                    {
                        Animator.Play("running-down");
                    }
                    break;

                case Facing.Left:
                    if (speed == MovementSpeed.Walking)
                    {
                        Animator.Play("walking-left");
                    }
                    else if (speed == MovementSpeed.Running)
                    {
                        Animator.Play("running-left");
                    }
                    break;

                case Facing.Right:
                    if (speed == MovementSpeed.Walking)
                    {
                        Animator.Play("walking-right");
                    }
                    else if (speed == MovementSpeed.Running)
                    {
                        Animator.Play("running-right");
                    }
                    break;
                }

                this.movement      = -(dir.ToVector2() * new Vector2(16, 16));
                this.MovementSpeed = speed;
                this.MovementState = MovementState.Walking;
                this.Position     -= this.movement;
            }
        }