Esempio n. 1
0
        public void PlayAnimatin(Character.CharacterState state)
        {
            if (_characterAnimator == null)
            {
                return;
            }

            _characterAnimator.SetBool("Walk", state == Character.CharacterState.Move);

            switch (state)
            {
            case Character.CharacterState.Jump: JumpAnimation(); break;

            case Character.CharacterState.Damage: DamageAnimation(false); break;

            case Character.CharacterState.Down: DamageAnimation(true); break;

            case Character.CharacterState.Attack1: AttackComboAnimation(1); break;

            case Character.CharacterState.Attack2: AttackComboAnimation(2); break;

            case Character.CharacterState.Attack3: AttackComboAnimation(3); break;

            case Character.CharacterState.Appeal: _characterAnimator.SetTrigger("AppealNormal"); break;
            }
        }
Esempio n. 2
0
 public static bool IsInputBlocked(this Character.CharacterState characterState)
 {
     for (int i = 0; i < INPUT_BLOCKED.Length; ++i)
     {
         if (INPUT_BLOCKED[i] == characterState)
         {
             return(true);
         }
     }
     return(false);
 }
Esempio n. 3
0
 public virtual void OnChangeState(Character.CharacterState State)
 {
 }
Esempio n. 4
0
        public override void OnChangeState(Character.CharacterState State)
        {
            if (_TargetObject == null)
                return;

            if (_OldTargetDist.X == -1)
            {
                _OldTargetDist = _TargetObject.Position - Position;

                _OldState = State;

                return;
            }

            switch (State)
            {
                case RolePlayingGameData.Character.CharacterState.Idle:

                    if (_OldState == RolePlayingGameData.Character.CharacterState.Idle)
                        return;

                    UpdateAIState(WindowsGame2.AI.OUTPUT.STAND);

                    break;

                case RolePlayingGameData.Character.CharacterState.Walking:

                    Vector2 dist = _TargetObject.Position - Position;

                    //dist -= _OldTargetDist;

                    float fDist = dist.Length() - _OldTargetDist.Length();

                    if (fDist < -10)
                    {//�������

                        UpdateAIState(WindowsGame2.AI.OUTPUT.NEAR);

                    }
                    else if (10 < fDist)
                    {//  ����
                        UpdateAIState(WindowsGame2.AI.OUTPUT.FAR);

                    }
                    else
                    {//
                        return;
                    }

                    _OldTargetDist = _TargetObject.Position - Position;

                    break;

                case RolePlayingGameData.Character.CharacterState.Attack:
                    if (_OldState == State)
                        return;

                    UpdateAIState(OUTPUT.ATTACK);

                    break;
                case RolePlayingGameData.Character.CharacterState.Dodging:
                    if (_OldState == State)
                        return;

                    UpdateAIState(OUTPUT.DODGE);
                    break;

                default:

                    //UpdateAIState()

                    break;

            }
            _OldState = State;
        }
Esempio n. 5
0
 public static Character.CharacterState From(this Character.CharacterState ctor, int rank)
 {
     return((Character.CharacterState)rank);
 }
Esempio n. 6
0
 public static int Rank(this Character.CharacterState characterState)
 {
     return((int)characterState);
 }
Esempio n. 7
0
        /// <summary>
        /// Draws a border around the <see cref="Square"/> a <see cref="Character"/> may move to
        /// </summary>
        /// <param name="diceResult">The result of a dice throw</param>
        /// <param name="character">The <see cref="Character"/> the <see cref="Player"/> wishes to move</param>
        /// <param name="silent">
        /// If true, no borders will be added to <see cref="Square">squares</see> that you may move to.
        /// This is useful for when you only need to check if a <see cref="Player"/> can actually make a move.
        /// </param>
        /// <returns>True if there was a possible move</returns>
        public static bool DrawMovementLine(int diceResult, Character character, bool silent = false)
        {
            int   charPos    = character.Position;
            Color charColour = character.Colour;

            Character.CharacterState charState = character.State;

            // The character cannot move if he has already entered the goal
            if (charState == Character.CharacterState.WON)
            {
                return(false);
            }

            // Check if the character is home and if he may be moved outside
            if (charState == Character.CharacterState.HOME)
            {
                if (diceResult == 1 || diceResult == 6)
                {
                    if (charColour.Equals(Color.Green))
                    {
                        int index = diceResult == 1 ? GREEN_HOME : (GREEN_HOME + 5);
                        if (CheckIfPossible(Game.Squares[index], character))
                        {
                            Game.Squares[index].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    else if (charColour.Equals(Color.Yellow))
                    {
                        int index = diceResult == 1 ? YELLOW_HOME : (YELLOW_HOME + 5);
                        if (CheckIfPossible(Game.Squares[index], character))
                        {
                            Game.Squares[index].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    else if (charColour.Equals(Color.Red))
                    {
                        int index = diceResult == 1 ? RED_HOME : (RED_HOME + 5);
                        if (CheckIfPossible(Game.Squares[index], character))
                        {
                            Game.Squares[index].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    else if (charColour.Equals(Color.Blue))
                    {
                        int index = diceResult == 1 ? BLUE_HOME : (BLUE_HOME + 5);
                        if (CheckIfPossible(Game.Squares[index], character))
                        {
                            Game.Squares[index].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                }
                else
                {
                    return(false);
                }
            } // The green character is just outside the final stretch
            else if (charColour.Equals(Color.Green) && (charPos == 39 || (charPos == 38 && diceResult == 6)))
            {
                if (diceResult == 6)
                {
                    if (charPos == 38)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (diceResult == 5)
                {
                    if (charPos == 39)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    if (CheckIfPossible(Game.Squares[FIRST_GREEN_FINAL + (diceResult - 1)], character))
                    {
                        Game.Squares[FIRST_GREEN_FINAL + (diceResult - 1)].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }
            } // The yellow character is just outside the final stretch
            else if (charColour.Equals(Color.Yellow) && (charPos == 9 || (charPos == 8 && diceResult == 6)))
            {
                if (diceResult == 6)
                {
                    if (charPos == 8)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (diceResult == 5)
                {
                    if (charPos == 9)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    if (CheckIfPossible(Game.Squares[FIRST_YELLOW_FINAL + (diceResult - 1)], character))
                    {
                        Game.Squares[FIRST_YELLOW_FINAL + (diceResult - 1)].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }
            } // The red character is just outside the final stretch
            else if (charColour.Equals(Color.Red) && (charPos == 19 || (charPos == 18 && diceResult == 6)))
            {
                if (diceResult == 6)
                {
                    if (charPos == 18)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (diceResult == 5)
                {
                    if (charPos == 19)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    if (CheckIfPossible(Game.Squares[FIRST_RED_FINAL + (diceResult - 1)], character))
                    {
                        Game.Squares[FIRST_RED_FINAL + (diceResult - 1)].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }
            } // The blue character is just outside the final stretch
            else if (charColour.Equals(Color.Blue) && (charPos == 29 || (charPos == 28 && diceResult == 6)))
            {
                if (diceResult == 6)
                {
                    if (charPos == 28)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (diceResult == 5)
                {
                    if (charPos == 29)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    if (CheckIfPossible(Game.Squares[FIRST_BLUE_FINAL + (diceResult - 1)], character))
                    {
                        Game.Squares[FIRST_BLUE_FINAL + (diceResult - 1)].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }
            }
            else if (charColour.Equals(Color.Green) && Game.Squares[charPos].Path == Square.PathType.FINAL) // The green character is somewhere in his final stretch
            {
                // The indexes for the final stretch for green are 40, 41, 42, 43
                switch (charPos)
                {
                case 40:
                    if (diceResult > 4)
                    {
                        return(false);
                    }
                    else if (diceResult == 4)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 41:
                    if (diceResult > 3)
                    {
                        return(false);
                    }
                    else if (diceResult == 3)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 42:
                    if (diceResult > 2)
                    {
                        return(false);
                    }
                    else if (diceResult == 2)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 43:
                    if (diceResult > 1)
                    {
                        return(false);
                    }
                    else
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }

                return(false);
            }
            else if (charColour.Equals(Color.Yellow) && Game.Squares[charPos].Path == Square.PathType.FINAL) // The yellow character is somewhere in his final stretch
            {
                // The indexes for the final stretch for yellow are 44, 45, 46, 47
                switch (charPos)
                {
                case 44:
                    if (diceResult > 4)
                    {
                        return(false);
                    }
                    else if (diceResult == 4)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 45:
                    if (diceResult > 3)
                    {
                        return(false);
                    }
                    else if (diceResult == 3)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 46:
                    if (diceResult > 2)
                    {
                        return(false);
                    }
                    else if (diceResult == 2)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 47:
                    if (diceResult > 1)
                    {
                        return(false);
                    }
                    else
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }

                return(false);
            }
            else if (charColour.Equals(Color.Red) && Game.Squares[charPos].Path == Square.PathType.FINAL) // The red character is somewhere in his final stretch
            {
                // The indexes for the final stretch for red are 48, 49, 50, 51
                switch (charPos)
                {
                case 48:
                    if (diceResult > 4)
                    {
                        return(false);
                    }
                    else if (diceResult == 4)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 49:
                    if (diceResult > 3)
                    {
                        return(false);
                    }
                    else if (diceResult == 3)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 50:
                    if (diceResult > 2)
                    {
                        return(false);
                    }
                    else if (diceResult == 2)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 51:
                    if (diceResult > 1)
                    {
                        return(false);
                    }
                    else
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }

                return(false);
            }
            else if (charColour.Equals(Color.Blue) && Game.Squares[charPos].Path == Square.PathType.FINAL) // The blue character is somewhere in his final stretch
            {
                // The indexes for the final stretch for blue are 52, 53, 54, 55
                switch (charPos)
                {
                case 52:
                    if (diceResult > 4)
                    {
                        return(false);
                    }
                    else if (diceResult == 4)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 53:
                    if (diceResult > 3)
                    {
                        return(false);
                    }
                    else if (diceResult == 3)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 54:
                    if (diceResult > 2)
                    {
                        return(false);
                    }
                    else if (diceResult == 2)
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                    else
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                    break;

                case 55:
                    if (diceResult > 1)
                    {
                        return(false);
                    }
                    else
                    {
                        Game.Squares[GOAL].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }

                return(false);
            }
            else // The character is not home nor on the final stretch, see where he may move to
            {
                // Check if the current character IS NOT green and if this character is able to move past square #39
                // If he can, make sure the counting gets reset and begins from 0 as not to enter green's final stretch
                if (!charColour.Equals(Color.Green) && (charPos + diceResult) > 39)
                {
                    int stepsTo39       = 39 - charPos;
                    int stepsLeftOnDice = diceResult - stepsTo39;
                    if (CheckIfPossible(Game.Squares[-1 + stepsLeftOnDice], character))
                    {
                        Game.Squares[-1 + stepsLeftOnDice].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }
                // Look if the characters are able to enter their final stretch
                else if (charColour.Equals(Color.Green) && (charPos + diceResult) > 39 && charPos < 39)
                {
                    if ((charPos + diceResult) <= 56) // Make sure he wont accidentally try to move past the goal
                    {
                        if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                        {
                            Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                            return(true);
                        }
                    }
                }
                else if (charColour.Equals(Color.Yellow) && (charPos + diceResult) > 9 && charPos < 9)
                {
                    int stepsTo9        = 9 - charPos;
                    int stepsLeftOnDice = diceResult - stepsTo9;

                    if (CheckIfPossible(Game.Squares[FIRST_YELLOW_FINAL + (stepsLeftOnDice - 1)], character))
                    {
                        Game.Squares[FIRST_YELLOW_FINAL + (stepsLeftOnDice - 1)].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }
                else if (charColour.Equals(Color.Red) && (charPos + diceResult) > 19 && charPos < 19)
                {
                    int stepsTo19       = 19 - charPos;
                    int stepsLeftOnDice = diceResult - stepsTo19;
                    if (CheckIfPossible(Game.Squares[FIRST_RED_FINAL + (stepsLeftOnDice - 1)], character))
                    {
                        Game.Squares[FIRST_RED_FINAL + (stepsLeftOnDice - 1)].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }
                else if (charColour.Equals(Color.Blue) && (charPos + diceResult) > 29 && charPos < 29)
                {
                    int stepsTo29       = 29 - charPos;
                    int stepsLeftOnDice = diceResult - stepsTo29;
                    if (CheckIfPossible(Game.Squares[FIRST_BLUE_FINAL + (stepsLeftOnDice - 1)], character))
                    {
                        Game.Squares[FIRST_BLUE_FINAL + (stepsLeftOnDice - 1)].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }
                else if ((charPos + diceResult) <= 56) // Make sure they cannot move past the goal
                {
                    if (CheckIfPossible(Game.Squares[charPos + diceResult], character))
                    {
                        Game.Squares[charPos + diceResult].Border = !silent ? Square.SquareBorder.BORDER : Square.SquareBorder.BORDERLESS;
                        return(true);
                    }
                }
                else
                {
                    return(false);
                }
            }

            return(false);
        }
Esempio n. 8
0
        public override void OnChangeState(Character.CharacterState State)
        {
            if (_TargetObject == null)
            {
                return;
            }

            if (_OldTargetDist.X == -1)
            {
                _OldTargetDist = _TargetObject.Position - Position;

                _OldState = State;

                return;
            }

            switch (State)
            {
            case RolePlayingGameData.Character.CharacterState.Idle:

                if (_OldState == RolePlayingGameData.Character.CharacterState.Idle)
                {
                    return;
                }

                UpdateAIState(WindowsGame2.AI.OUTPUT.STAND);

                break;

            case RolePlayingGameData.Character.CharacterState.Walking:



                Vector2 dist = _TargetObject.Position - Position;

                //dist -= _OldTargetDist;

                float fDist = dist.Length() - _OldTargetDist.Length();

                if (fDist < -10)
                {    //°¡±î¿öÁü
                    UpdateAIState(WindowsGame2.AI.OUTPUT.NEAR);
                }
                else if (10 < fDist)
                {    //  ¸ØÃã
                    UpdateAIState(WindowsGame2.AI.OUTPUT.FAR);
                }
                else
                {    //
                    return;
                }

                _OldTargetDist = _TargetObject.Position - Position;


                break;

            case RolePlayingGameData.Character.CharacterState.Attack:
                if (_OldState == State)
                {
                    return;
                }

                UpdateAIState(OUTPUT.ATTACK);


                break;

            case RolePlayingGameData.Character.CharacterState.Dodging:
                if (_OldState == State)
                {
                    return;
                }

                UpdateAIState(OUTPUT.DODGE);
                break;


            default:



                //UpdateAIState()

                break;
            }
            _OldState = State;
        }