Beispiel #1
0
        private void Start()
        {
            _initRotation = this.transform.rotation;

            _input = GetComponent<rqgames.InputManagement.SwipeManager>();
            _input.OnSwipeLeft.AddListener(MoveLeft);
            _input.OnSwipeRight.AddListener(MoveRight);
            _input.OnStationaryPressDownUp.AddListener((Vector2 screenPos) => _fsm.IssueCommand(FSMCommon.ATTACK_COMMAND));

            _body = GetComponent<Rigidbody>();

            _fsm = FiniteStateMachine<FSMCommon.State>.FromEnum();

            AddDelayTransition(FSMCommon.State.Idle, FSMCommon.State.Attack, FSMCommon.ATTACK_COMMAND);
            AddDelayTransition(FSMCommon.State.Move, FSMCommon.State.Attack, FSMCommon.ATTACK_COMMAND);
            AddDelayTransition(FSMCommon.State.Attack, FSMCommon.State.Idle, FSMCommon.IDLE_COMMAND);
            AddDelayTransition(FSMCommon.State.Move, FSMCommon.State.Idle, FSMCommon.IDLE_COMMAND);
            AddDelayTransition(FSMCommon.State.Idle, FSMCommon.State.Move, FSMCommon.MOVE_COMMAND);
            AddDelayTransition(FSMCommon.State.Move, FSMCommon.State.Move, FSMCommon.MOVE_COMMAND);

            _fsm.OnEnter(FSMCommon.State.Attack, () => { Fire(); });
            _fsm.OnEnter(FSMCommon.State.Idle, () => { _body.velocity = Vector3.zero; });
            _fsm.OnEnter(FSMCommon.State.Move, () =>
            {
                _body.velocity = Vector3.right * _lateralSign * _config.LateralSpeed;
            });

            PlayerStateEnterTime = new Dictionary<FSMCommon.State, float>();
            PlayerStateEnterTime[FSMCommon.State.Attack] = 0;
            PlayerStateEnterTime[FSMCommon.State.Move] = 0;

            _fsm.OnChange((from, to) => { PlayerStateEnterTime[to] = Time.time; });

            _fsm.Begin(FSMCommon.State.Idle);
        }
Beispiel #2
0
        private void Start()
        {
            _timerAttack = 0;
            int rndSign = UnityEngine.Random.Range(0, 100) % 2 == 0 ? 1 : -1;

            _rndMedium      = UnityEngine.Random.Range(10f, 30f) * rndSign;
            InitialRotation = transform.rotation;
            _fsm            = FiniteStateMachine <Playable.FSMCommon.State> .FromEnum();

            _fsm.AddTransition(Playable.FSMCommon.State.Idle, Playable.FSMCommon.State.Attack, Playable.FSMCommon.ATTACK_COMMAND);

            _fsm.AddTransition(Playable.FSMCommon.State.Attack, Playable.FSMCommon.State.Idle, Playable.FSMCommon.IDLE_COMMAND);
            _fsm.AddTransition(Playable.FSMCommon.State.Move, Playable.FSMCommon.State.Idle, Playable.FSMCommon.IDLE_COMMAND);

            _fsm.AddTransition(Playable.FSMCommon.State.Idle, Playable.FSMCommon.State.Move, Playable.FSMCommon.MOVE_COMMAND);
            _fsm.AddTransition(Playable.FSMCommon.State.Attack, Playable.FSMCommon.State.Move, Playable.FSMCommon.MOVE_COMMAND);

            _fsm.OnEnter(Playable.FSMCommon.State.Attack, () => { Invoke(nameof(BackToIdle), 0.3f); Fire(); });
            _fsm.OnExit(Playable.FSMCommon.State.Idle, () => { RotationOnLostIdle = transform.rotation; });
            _fsm.Begin(Playable.FSMCommon.State.Idle);

            InitNPC();
        }
Beispiel #3
0
    void Awake()
    {
        Screen.showCursor = false;
        Screen.lockCursor = true;

        foreach (var value in System.Enum.GetValues(typeof(ClockState)))
        {
            clockMachine.AddState((int)value);
        }
        foreach (var value in System.Enum.GetValues(typeof(ClockCommand)))
        {
            clockMachine.AddCommand((int)value);
        }
        clockMachine.AddTransition((int)ClockState.SPAWNING, (int)ClockCommand.NEXT, (int)ClockState.SPAWNED);
        clockMachine.AddTransition((int)ClockState.SPAWNED, (int)ClockCommand.NEXT, (int)ClockState.DESPAWNING);
        clockMachine.AddTransition((int)ClockState.DESPAWNING, (int)ClockCommand.NEXT, (int)ClockState.DESPAWNED);
        clockMachine.AddTransition((int)ClockState.DESPAWNED, (int)ClockCommand.NEXT, (int)ClockState.SPAWNING);
        clockMachine.SetStateProcessOnEnter((int)ClockState.SPAWNING, MapSpawn);
        clockMachine.SetStateProcessOnEnter((int)ClockState.DESPAWNING, MapDespawn);
        clockMachine.Begin((int)ClockState.SPAWNING);
        MapSpawn();

        Countdown();
    }
Beispiel #4
0
 public void ExpectValidCommandToInvokeTransition()
 {
     fsm.Begin(States.Idle);
     fsm.IssueCommand(LOAD_COMMAND);
     Assert.AreEqual(fsm.CurrentState, States.Loading);
 }