Esempio n. 1
0
        public void Start()
        {
            Game      = Game.Instance;
            Player    = Game.LocalPlayer;
            PlayerFsm = Player.GetComponent <PlayerFsmBehaviour>().PlayerFsm;

            TurnStatusText    = GameObject.Find("Text_TurnStatus").GetComponent <Text>();
            CharacterNameText = GameObject.Find("Text_CharacterName").GetComponent <Text>();
        }
Esempio n. 2
0
    public override void MakeFsm()
    {
        CurFsm = new PlayerFsm(path);
        CurFsm.m_DoDrawSelected = true;

        PlayerState_Walk walk = new PlayerState_Walk(PlayerStateID.Walk.GetHashCode());

        walk.AddTransition(new Tr_Move_Walk2Run(PlayerStateID.Run.GetHashCode()));
        CurFsm.AddState(walk);

        PlayerState_Run run = new PlayerState_Run(PlayerStateID.Run.GetHashCode());

        run.AddTransition(new Tr_Move_Run2Walk(PlayerStateID.Walk.GetHashCode()));
        CurFsm.AddState(run);
    }
    public override void MakeFsm()
    {
        m_Fsm = new PlayerFsm(path);
        m_Fsm.m_DoDrawSelected = true;

        PlayerState_Walk walk = new PlayerState_Walk();

        walk.AddTransition(new Tr_Move_Walk2Run());
        m_Fsm.AddState(walk);

        PlayerState_Run run = new PlayerState_Run();

        run.AddTransition(new Tr_Move_Run2Walk());
        m_Fsm.AddState(run);
    }
Esempio n. 4
0
    private void SetupFsmSubscriptions(PlayerFsm playersFsm)
    {
        playersFsm.CurrentStateReactiveProperty
        .Where(state => state.ID.Equals(PlayerFSMStates.PlayerTurn))
        .Subscribe(_ =>
        {
            DealCardToPlayer(playersFsm.Player);
        });

        playersFsm.CurrentStateReactiveProperty
        .Where(state => state.ID.Equals(PlayerFSMStates.Stand))
        .Subscribe(_ => SwitchPlayers());

        playersFsm.CurrentStateReactiveProperty
        .Where(state => state.ID.Equals(PlayerFSMStates.EndTurn))
        .Subscribe(_ => SwitchPlayers());
    }
Esempio n. 5
0
    public override void OnUpdate()
    {
        base.OnUpdate();

        frame++;

        PlayerFsm fsm = MyFsm as PlayerFsm;

        if (fsm.path == null || fsm.path.Length <= 0)
        {
            return;
        }

        Vector3 moveDir = fsm.path[fsm.curIdx].position - MyAIMgr.transform.position;

        if (moveDir.magnitude < 0.1f)
        {
            fsm.curIdx = (fsm.curIdx + 1) % fsm.path.Length;
            moveDir    = fsm.path[fsm.curIdx].position - MyAIMgr.transform.position;
        }
        MyAIMgr.transform.rotation = Quaternion.LookRotation(moveDir);
        MyAIMgr.transform.position = MyAIMgr.transform.position + MyAIMgr.transform.forward * 0.03f;
    }
    public override void Update()
    {
        base.Update();

        frame++;

        PlayerFsm fsm = m_Fsm as PlayerFsm;

        if (fsm.path == null || fsm.path.Length <= 0)
        {
            return;
        }

        Vector3 moveDir = fsm.path[fsm.curIdx].position - fsm.Trans.position;

        if (moveDir.magnitude < 0.1f)
        {
            fsm.curIdx = (fsm.curIdx + 1) % fsm.path.Length;
            moveDir    = fsm.path[fsm.curIdx].position - fsm.Trans.position;
        }
        fsm.Trans.rotation = Quaternion.LookRotation(moveDir);
        fsm.Trans.position = fsm.Trans.position + fsm.Trans.forward * 0.03f;
    }
 public PlayerMovement(PlayerFsm fsm, HeroPhaseState heroPhaseState) : base(fsm)
 {
     HeroPhaseState = heroPhaseState;
 }
Esempio n. 8
0
 public PlayerAttack(PlayerFsm fsm, HeroPhaseState heroPhaseState, Attack attack) : base(fsm)
 {
     HeroPhaseState = heroPhaseState;
     Entity         = fsm.Player.GetComponent <Entity>();
     Attack         = attack;
 }
Esempio n. 9
0
    /// <summary>
    /// Base层状态切换
    /// </summary>
    public override void BaseLayerUpdate()
    {
        if (DLInputManager.RightTrigger(ActionCode.R2) || DLInputManager.LeftTrigger(ActionCode.L2))
        {
            PlayerFsm.SetTransition(Transition.NormalIdleTSFightIdle);
            return;
        }

        else if (DLInputManager.GetButton(ActionCode.LButton))
        {
            playerRotateWithCamera.enabled = true;
            PlayerFsm.SetTransition(Transition.NormalIdleTSSprint);
            return;
        }

        else if (DLInputManager.GetButton(ActionCode.Circle))
        {
            PlayerFsm.SetTransition(Transition.NormalIdleTSPickUp);
            return;
        }

        else if (playerRayCast.isCoverR && DLInputManager.GetButton(ActionCode.Cross))
        {
            playerRotateWithCamera.enabled = false;
            CoroutineTaskManager.Instance.WaitSecondTodo(() =>
            {
                PS4ShakeManager.Instance.ShakeTrigger(PS4ShakePriorityEnum.PS4ShakePriority.BunkerShake, 0.2f, 100, 50);
            }, 0.3f);

            //if (!playerController.PlayCoverAudio)
            //{
            //    CreateAudioEffect(playerRayCast.Hit.collider.gameObject, playerRayCast.Hit.point, 0.1f);
            //    playerController.PlayCoverAudio = true;
            //}

            if (playerRayCast.isFirstSide)
            {
                BunkerChoose(playerRayCast.Hit, new Vector3(0, 0, 0), playerRayCast.Hit.transform.right, 1, playerRayCast.Hit.transform.forward);
            }
            else if (playerRayCast.isSecondSide)
            {
                BunkerChoose(playerRayCast.Hit, new Vector3(0, 90, 0), playerRayCast.Hit.transform.forward, 1, playerRayCast.Hit.transform.right);
            }
            else if (playerRayCast.isThirdSide)
            {
                BunkerChoose(playerRayCast.Hit, new Vector3(0, 180, 0), playerRayCast.Hit.transform.right, -1, playerRayCast.Hit.transform.forward);
            }
            else
            {
                BunkerChoose(playerRayCast.Hit, new Vector3(0, 270, 0), playerRayCast.Hit.transform.forward, -1, playerRayCast.Hit.transform.right);
            }
            PlayerFsm.SetTransition(Transition.NormalIdleTSCoverR);
            return;
        }
        else if (playerRayCast.isCoverL && DLInputManager.GetButton(ActionCode.Cross))
        {
            playerRotateWithCamera.enabled = false;
            CoroutineTaskManager.Instance.WaitSecondTodo(() =>
            {
                PS4ShakeManager.Instance.ShakeTrigger(PS4ShakePriorityEnum.PS4ShakePriority.BunkerShake, 0.2f, 100, 50);
            }, 0.3f);

            //if (!playerController.PlayCoverAudio)
            //{
            //    CreateAudioEffect(playerRayCast.Hit.collider.gameObject, playerRayCast.Hit.point, 0.1f);
            //    playerController.PlayCoverAudio = true;
            //}

            if (playerRayCast.isFirstSide)
            {
                BunkerChoose(playerRayCast.Hit, new Vector3(0, 0, 0), playerRayCast.Hit.transform.right, 1, playerRayCast.Hit.transform.forward);
            }
            else if (playerRayCast.isSecondSide)
            {
                BunkerChoose(playerRayCast.Hit, new Vector3(0, 90, 0), playerRayCast.Hit.transform.forward, 1, playerRayCast.Hit.transform.right);
            }
            else if (playerRayCast.isThirdSide)
            {
                BunkerChoose(playerRayCast.Hit, new Vector3(0, 180, 0), playerRayCast.Hit.transform.right, -1, playerRayCast.Hit.transform.forward);
            }
            else
            {
                BunkerChoose(playerRayCast.Hit, new Vector3(0, 270, 0), playerRayCast.Hit.transform.forward, -1, playerRayCast.Hit.transform.right);
            }
            PlayerFsm.SetTransition(Transition.NormalIdleTSCoverL);
            return;
        }

        else if (playerRayCast.isCoverHiR && DLInputManager.GetButton(ActionCode.Cross))
        {
            //if (!playerController.PlayCoverAudio)
            //{
            //    CreateAudioEffect(playerRayCast.m_HitHi.collider.gameObject, playerRayCast.m_HitHi.point, 0.1f);
            //    playerController.PlayCoverAudio = true;
            //}
            playerRotateWithCamera.enabled = false;
            if (playerRayCast.isFirstSide)
            {
                BunkerChoose(playerRayCast.HitHi, new Vector3(0, 0, 0), playerRayCast.HitHi.transform.right, 1, playerRayCast.HitHi.transform.forward);
            }
            else if (playerRayCast.isSecondSide)
            {
                BunkerChoose(playerRayCast.HitHi, new Vector3(0, 90, 0), playerRayCast.HitHi.transform.forward, 1, playerRayCast.HitHi.transform.right);
            }
            else if (playerRayCast.isThirdSide)
            {
                BunkerChoose(playerRayCast.HitHi, new Vector3(0, 180, 0), playerRayCast.HitHi.transform.right, -1, playerRayCast.HitHi.transform.forward);
            }
            else
            {
                BunkerChoose(playerRayCast.HitHi, new Vector3(0, 270, 0), playerRayCast.HitHi.transform.forward, -1, playerRayCast.HitHi.transform.right);
            }
            PlayerFsm.SetTransition(Transition.NormalIdleTSCoverHiR);
            return;
        }
        else if (playerRayCast.isCoverHiL && DLInputManager.GetButton(ActionCode.Cross))
        {
            //if (!playerController.PlayCoverAudio)
            //{
            //    CreateAudioEffect(playerRayCast.m_HitHi.collider.gameObject, playerRayCast.m_HitHi.point, 0.1f);
            //    playerController.PlayCoverAudio = true;
            //}
            playerRotateWithCamera.enabled = false;
            if (playerRayCast.isFirstSide)
            {
                BunkerChoose(playerRayCast.HitHi, new Vector3(0, 0, 0), playerRayCast.HitHi.transform.right, 1, playerRayCast.HitHi.transform.forward);
            }
            else if (playerRayCast.isSecondSide)
            {
                BunkerChoose(playerRayCast.HitHi, new Vector3(0, 90, 0), playerRayCast.HitHi.transform.forward, 1, playerRayCast.HitHi.transform.right);
            }
            else if (playerRayCast.isThirdSide)
            {
                BunkerChoose(playerRayCast.HitHi, new Vector3(0, 180, 0), playerRayCast.HitHi.transform.right, -1, playerRayCast.HitHi.transform.forward);
            }
            else
            {
                BunkerChoose(playerRayCast.HitHi, new Vector3(0, 270, 0), playerRayCast.HitHi.transform.forward, -1, playerRayCast.HitHi.transform.right);
            }
            PlayerFsm.SetTransition(Transition.NormalIdleTSCoverHiL);
            return;
        }

        else if (playerController.isUsePad)
        {
            playerController.CharacterCameraProxy.SwitchCameraModeType(CameraModeType.UsePadMode);
            PlayerFsm.SetTransition(Transition.NormalIdleTSUsePad);
            return;
        }

        else if (playerController.isOpenDoor)
        {
            playerController.CharacterCameraProxy.SwitchCameraModeType(CameraModeType.OpenDoorMode);
            PlayerFsm.SetTransition(Transition.NormalIdleTSOpenDoor);
            return;
        }

        else if (playerController.isTurnR)
        {
            PlayerFsm.SetTransition(Transition.NormalIdleTSTurnR);
            return;
        }

        else if (playerController.isTurnL)
        {
            PlayerFsm.SetTransition(Transition.NormalIdleTSTurnL);
            return;
        }

        else
        {
            if (!playerRayCast.isHitObj)
            {
                if (Mathf.Abs(playerController.HorizontalL) >= 0.19f || Mathf.Abs(playerController.VerticalL) >= 0.19f)
                {
                    playerRotateWithCamera.enabled = true;
                    PlayerFsm.SetTransition(Transition.NormalIdleTSNormalMove);
                    return;
                }
            }
            else
            {
                if (Mathf.Abs(playerController.VerticalL) >= 0.19f || Mathf.Abs(playerController.VerticalL) < 0.19f && playerController.HorizontalL < -0.19f)
                {
                    playerRotateWithCamera.enabled = true;
                    PlayerFsm.SetTransition(Transition.NormalIdleTSNormalMove);
                    return;
                }
            }
        }
    }
Esempio n. 10
0
 public PlayerState(PlayerFsm fsm) : base(fsm)
 {
     Game   = fsm.Game;
     Player = fsm.Player;
 }
Esempio n. 11
0
 public HeroPhaseState(PlayerFsm fsm) : base(fsm)
 {
 }