예제 #1
0
        public string StateToString(CharacterInfo.eState state)
        {
            switch (state)
            {
            case CharacterInfo.eState.Attack_Before:
                return("Attack_Before");

            case CharacterInfo.eState.Attack_After:
                return("Attack_After");

            case CharacterInfo.eState.Block_Before:
                return("Block_Before");

            case CharacterInfo.eState.Block_After:
                return("Block_After");

            case CharacterInfo.eState.Idle:
                return("Idle");
            }

            return("None");
        }
예제 #2
0
        /// <summary>
        /// Succeeds the attack.
        /// </summary>
        /// <returns>
        ///     none = 0 , 1p => 1 , 2p => 2
        /// </returns>
        public Result Valid_Attack()
        {
            //todo : 거리에 대한 처리 추가 해야 함

            CharacterInfo.eState state1p = _ref_1pInfo.CurrentState();
            CharacterInfo.eState state2p = _ref_2pInfo.CurrentState();

            Result result = new Result(eState.None, eState.None);

            //attack
            if (true == _ref_1pInfo.Valid_Attack() && false == _ref_2pInfo.Valid_Block())
            {
                //!!!!!!//!!!!!!//!!!!!!//!!!!!!//!!!!!!//!!!!!!
                result.state_1p = eState.AttackSucceed;
                //!!!!!!//!!!!!!//!!!!!!//!!!!!!//!!!!!!//!!!!!!

                if (CharacterInfo.eState.Block_Before == state2p || CharacterInfo.eState.Block_After == state2p)
                {
                    result.state_2p = eState.BlockFail;
                }
                else
                {
                    result.state_2p = eState.None;
                }
            }

            if (true == _ref_2pInfo.Valid_Attack() && false == _ref_1pInfo.Valid_Block())
            {
                if (CharacterInfo.eState.Block_Before == state1p || CharacterInfo.eState.Block_After == state1p)
                {
                    result.state_1p = eState.BlockFail;
                }
                else
                {
                    result.state_1p = eState.None;
                }

                //!!!!!!//!!!!!!//!!!!!!//!!!!!!//!!!!!!//!!!!!!
                result.state_2p = eState.AttackSucceed;
                //!!!!!!//!!!!!!//!!!!!!//!!!!!!//!!!!!!//!!!!!!
            }

            //block
            if (CharacterInfo.eState.Block_Before == state1p || CharacterInfo.eState.Block_After == state1p)
            {
                if (true == _ref_1pInfo.Valid_Block())
                {
                    if (true == _ref_2pInfo.Valid_Attack())
                    {
                        result.state_1p = eState.BlockSucceed;
                        result.state_2p = eState.AttackFail;
                    }
                    else
                    {
                        result.state_1p = eState.BlockIdle;
                    }
                }
            }

            if (CharacterInfo.eState.Block_Before == state2p || CharacterInfo.eState.Block_After == state2p)
            {
                if (true == _ref_2pInfo.Valid_Block())
                {
                    if (true == _ref_1pInfo.Valid_Attack())
                    {
                        result.state_2p = eState.BlockSucceed;
                        result.state_1p = eState.AttackFail;
                    }
                    else
                    {
                        result.state_2p = eState.BlockIdle;
                    }
                }
            }



            return(result);
        }