Ejemplo n.º 1
0
 public void GoToLevelState()
 {
     if (playerData.firstPlay == true)
     {
         playerData.firstPlay = false;
         playerData.Save();
         SceneManager.LoadScene(1);
     }
     fsm.ChangeState <LevelUIState>();
 }
Ejemplo n.º 2
0
    private void Awake()
    {
        if (_fsm == null)
        {
            _fsm = new Fsm <VirtualPlayer>(this);
        }

        _fsm.ChangeState <BuildState>();
        //_inventory.OnSlotSelected += slot => _blockPrefab = slot.inventoryObject;
        // _world.OnWorldPlaced += delegate(World world1) {_inventory.Appear();  };
    }
Ejemplo n.º 3
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="fsm"></param>
 public override void OnUpdate(Fsm <GameManager> fsm)
 {
     base.OnUpdate(fsm);
     //完成加载
     if (asyncOperation.isDone)
     {
         fsm.ChangeState(nextProcedure);//切换流程
     }
     else
     {
         //当前切换场景开启了进度条
         if (mode == ChangeSceneMode.Normal)
         {
             if (asyncOperation.progress < 0.9f)
             {
                 loadingUIEntity.SetProgressAndText(asyncOperation.progress);
             }
             else
             {
                 loadingUIEntity.SetText("按任意键继续");
                 if (Input.anyKeyDown)
                 {
                     asyncOperation.allowSceneActivation = true;
                 }
             }
         }
     }
 }
 private void OnUpdate()
 {
     if (Input.GetKeyDown(KeyCode.Space))
     {
         Fsm.ChangeState(GameStateID.Pause);
     }
 }
Ejemplo n.º 5
0
 private void Start()
 {
     Input = InputManager.Instance;
     Fsm.ChangeState(States.Normal);
     Health.Actor  = this;
     PointerIsNull = pointerSpriteHolder == null;
 }
Ejemplo n.º 6
0
 public void Awake()
 {
     GameFlowFsm = new Fsm <GameFlowState>();
     GameFlowFsm.Init(true);
     GameFlowFsm.AddState(GameFlowState.EnterGame, new EnterGameState());
     GameFlowFsm.AddState(GameFlowState.LuaLoop, new LuaLoopState());
     GameFlowFsm.ChangeState(GameFlowState.EnterGame);
 }
    public override void OnUpdate(Fsm <Skill> fsm, float elapseSeconds, float realElapseSeconds)
    {
        base.OnUpdate(fsm, elapseSeconds, realElapseSeconds);
        timer += elapseSeconds;
        if (timer >= inputWaitTime)
        {
            //指令输入等待时间耗尽,重置指令状态
            timer = 0;
            fsm.ChangeState(1);
        }
        //按下任意按键
        if (Input.anyKeyDown)
        {
            //重置计时器
            timer = 0;

            //按下了指令状态的对应按键
            if (Input.GetKeyDown(keyCode))//当这里判断成功时候表示第一个按键已经按正确了
            {
                Debug.Log("玩家按下了" + keyCode.ToString());

                //执行该指令要执行的方法
                if (action != null)
                {
                    action();
                }

                //最后一个指令状态
                if (base.stateID == maxStateID)
                {
                    //重置指令状态
                    fsm.ChangeState(1);
                }
                else
                {
                    //不是最后一个指令状态,切换到下一个指令状态
                    fsm.ChangeState(stateID + 1);
                }
            }
            //未按下指令状态的对应指令,重置指令状态
            else
            {
                fsm.ChangeState(1);
            }
        }
    }
Ejemplo n.º 8
0
    public void triggerHit(BulletBehaviour bullet)
    {
        float c = BalancingGame.General.MasterDamage, p1 = BalancingGame.General.ArmaPowerInfluenceDamage,
              p2     = BalancingGame.General.DistanceInfluenceDamage;
        float damage = c * bullet.Aj / Fsm.Entity.Parameters.Defesa * (p1 * bullet.Aa * bullet.Aj + p2 / bullet.Rj / bullet.Rj);

        //Debug.Log(string.Format("Damage {1} {0}",damage,Fsm.Entity.NameChar));
        Fsm.ChangeState(new CharacterHitState <CharacterBehaviour>(damage));
    }
Ejemplo n.º 9
0
        public void ChangeStateTest()
        {
            var fsm = new Fsm(new StateChangeRule());

            fsm.RegistState(new Idle("idle", fsm));
            fsm.RegistState(new Run("run", fsm));
            fsm.Init("idle");
            fsm.ChangeState("run");
        }
        private void Awake()
        {
            Fsm = new Fsm <AgentController>(this);

            Fsm.CreateState <AgentControllerState1>(1);
            Fsm.CreateState <AgentControllerState2>(2);

            Fsm.ChangeState(1);
        }
Ejemplo n.º 11
0
        private IEnumerator Roll_Enter()
        {
            if (CurrWeapon != null)
            {
                CurrWeapon.HideWeapon();
            }

            RollCooldownTimer = RollCooldownTime;
            velocity          = Vector2.zero;
            RollDir           = Vector2.zero;

            Vector2 value;

            if (Application.isMobilePlatform)
            {
                value = new Vector2(UiManager.Instance.joystickMove.Direction.x,
                                    UiManager.Instance.joystickMove.Direction.y);
            }
            else
            {
                value = new Vector2(_inputMoveX, _inputMoveY);
            }

            if (value == Vector2.zero)
            {
                value = new Vector2((int)Facing, 0f);
            }

            // TODO: for pc

            value.Normalize();
            velocity = value * RollSpeed;

            RollDir = value;

            if (RollDir.x != 0f)
            {
                Facing = (Facings)Mathf.Sign(RollDir.x);
            }

            // ScreenSake
            if (CameraShaker.Instance != null)
            {
                CameraShaker.InitShake(0.125f, 1f);
            }

            // Invincibility
            Health.invincible = true;

            yield return(new WaitForSeconds(RollTime));

            // Wait one extra frame
            yield return(null);

            Fsm.ChangeState(States.Normal, StateTransition.Overwrite);
        }
Ejemplo n.º 12
0
 public override void Update()
 {
     if (time < 0 || !Fsm.Entity.isOnScene)
     {
         Fsm.Entity.Attack(enemy);
         Fsm.ChangeState(new CharacterIdleState <CharacterBehaviour>());
         return;
     }
     time = time - Time.deltaTime;
 }
 public override void Execute()
 {
     if (disabledCounter > 0)
     {
         disabledCounter -= Time.deltaTime;
     }
     else
     {
         Fsm.ChangeState(new CameraIdleState(Owner, Fsm));
     }
 }
        private void Awake()
        {
            Fsm = new Fsm <GameController>(this);

            Fsm.CreateState <GameInitialState>(GameStateID.Initial);
            Fsm.CreateState <GamePlayState>(GameStateID.Play);
            Fsm.CreateState <GamePauseState>(GameStateID.Pause);
            Fsm.CreateState <GameEndState>(GameStateID.End);

            Fsm.ChangeState(GameStateID.Initial);
        }
Ejemplo n.º 15
0
        private void OnPlayerDied()
        {
            var enemies = Owner.GameModel.Enemies;

            while (enemies.Count > 0)
            {
                Owner.GameModel.DespawnEnemy(enemies[0]);
            }

            Owner.GameModel.Player.gameObject.SetActive(false);
            Fsm.ChangeState(GameStateID.End);
        }
Ejemplo n.º 16
0
 public override void Update()
 {
     time -= Time.deltaTime;
     if (time <= 0)
     {
         time = totalTime;
         Transform enemy = Fsm.Entity.FindEnemy();
         if (enemy != null && enemy.gameObject.GetComponent <CharacterBehaviour>().isOnScene&& Fsm.Entity.isOnScene)
         {
             Fsm.ChangeState(new CharacterAttackState <CharacterBehaviour>(enemy));
         }
     }
 }
Ejemplo n.º 17
0
    override public void Execute()
    {
        Quaternion direction = Quaternion.LookRotation(target.transform.position - Owner.transform.position);

        if (deactivationCounter > deactivationThreshold / 4)
        {
            if (Owner.parentSystem != null)
            {
                Owner.parentSystem.lostSightofTarget(target.transform.position);
            }
            Fsm.ChangeState(new CameraIdleState(Owner, Fsm));
        }
    }
Ejemplo n.º 18
0
    public override void Start()
    {
        time = 1.2f;
        CharacterBehaviour enemyCB = enemy.gameObject.GetComponent <CharacterBehaviour>();

        if (enemy != null && enemyCB.Lifebar > 0 && enemyCB.isOnScene && Fsm.Entity.isOnScene)
        {
            Fsm.Entity.SetAnimation("Attack", 0.3f);
        }
        else
        {
            Fsm.ChangeState(new CharacterIdleState <CharacterBehaviour>());
        }
    }
Ejemplo n.º 19
0
 private void CheckTransitions()
 {
     if (transitions == null)
     {
         return;
     }
     foreach (var transition in transitions)
     {
         if (transition.IsValid())
         {
             transition.OnTransition();
             fsm.ChangeState(transition.GetNextState());
         }
     }
 }
Ejemplo n.º 20
0
 public override void Update()
 {
     time -= Time.deltaTime;
     if (time <= totalTime)
     {
         time = totalTime;
         if (Fsm.Entity.Lifebar > 0)
         {
             Fsm.ChangeState(new CharacterIdleState <CharacterBehaviour>());
         }
         else
         {
             Fsm.ChangeState(new CharacterFaintState <CharacterBehaviour>());
         }
     }
 }
Ejemplo n.º 21
0
    protected void ChangeState(Fsm <T> fsm, Type type)
    {
        if (fsm == null)
        {
            Debug.Log("The StatemMachine that needs to switch state is empty and cannot be switched");
        }

        if (type == null)
        {
            Debug.Log("The StatemMachine that needs to switch state is empty and cannot be switched");
        }

        if (!typeof(FsmState <T>).IsAssignableFrom(type))
        {
            Debug.Log("The state to be switched does not directly or indirectly implement FsmState<T>, cannot be switched");
        }

        fsm.ChangeState(type);
    }
Ejemplo n.º 22
0
        /// <summary>
        /// 死亡
        /// </summary>
        public override void Die()
        {
            allowMove   = false;
            Health.dead = true;
            allowAttack = false;
            if (CameraShaker.Instance != null)
            {
                CameraShaker.InitShake(0.25f, 1f);
            }

            Fsm.ChangeState(States.Dead, StateTransition.Overwrite);
            velocity = Vector2.zero;

            Instantiate(ResourceLoader.DeadUi);

            Fsm.ChangeState(States.Normal, StateTransition.Overwrite);

            HidePlayer();
        }
    override public void Execute()
    {
        Quaternion direction = Quaternion.LookRotation(target.transform.position - Owner.transform.position);

        //TODO: make our FSMs more robust and be able to suspend state?
        if (deactivationCounter > deactivationThreshold)
        {
            Fsm.ChangeState(new CameraIdleState(Owner, Fsm));
        }

        if (alertCounter > alertThreshold)
        {
            if (Owner.parentSystem != null)
            {
                Owner.parentSystem.Alert(target);
            }
            Fsm.ChangeState(new CameraAlertState(Owner, Fsm, target));
        }
    }
Ejemplo n.º 24
0
    public override void DoAfterEnter(Fsm <GameManager> fsm)
    {
        base.DoAfterEnter(fsm);
        var mainUIEntity = EntityModule.Instance.SpawnEntity <MainUIEntity>(IdContract.UI_MENU);

        mainUIEntity.onClick += (id) => {
            switch (id)
            {
            case 0:
                mainUIEntity.gameObject.SetActive(false);
                var changeSceneProcedure = fsm.GetState("ChangeSceneProcedure") as ChangeSceneProcedure;    //获取切换场景流程
                changeSceneProcedure.SetValue("Game", fsm.GetState("GameProcedure") as BaseProcedure, ChangeSceneMode.Normal);
                fsm.ChangeState <ChangeSceneProcedure>();
                break;

            case 1:
                Application.Quit();
                break;
            }
        };
    }
 private void OnResurrect()
 {
     Debug.Log("Resurrect");
     Fsm.ChangeState(1);
 }
Ejemplo n.º 26
0
 public void GameOverFinish()
 {
     ShutDownServerPlayer();
     ResetPlayer_Ready();
     Fsm.ChangeState <TR_Ready>();
 }
Ejemplo n.º 27
0
 public void ChangeState(string stateName, object userData = null)
 {
     Fsm.ChangeState(stateName, userData);
 }
Ejemplo n.º 28
0
 /// <summary>
 /// 指令状态机重置
 /// </summary>
 public void Reset()
 {
     fsm.ChangeState(1);
 }
Ejemplo n.º 29
0
 private void OnDied()
 {
     Debug.Log("Died");
     Fsm.ChangeState(2);
 }
Ejemplo n.º 30
0
    /// <summary>
    /// 进入状态后
    /// </summary>
    /// <param name="fsm"></param>
    public override void DoAfterEnter(Fsm <GameManager> fsm)
    {
        base.DoAfterEnter(fsm);
        InputModule.Instance.Init();    //输入模块初始化
        MapModule.Instance.Init();      //地图模块初始化
        MapModule.Instance.CreateMap(); //创建地图
        gameUIEntity          = EntityModule.Instance.SpawnEntity <GameUIEntity>(IdContract.UI_GAME);
        gameUIEntity.onclick += (id) => {
            if (id == 0)
            {
                isPause = true;
            }
            else if (id == 1)
            {
                isPause = false;
            }
            else if (id == 2)
            {
                gameoverUIEntity.gameObject.SetActive(false);
                gameUIEntity.gameObject.SetActive(false);
                var changeSceneProcedure = fsm.GetState("ChangeSceneProcedure") as ChangeSceneProcedure;//获取切换场景流程
                changeSceneProcedure.SetValue("Menu", fsm.GetState("MenuProcedure") as BaseProcedure, ChangeSceneMode.NoProgress);
                fsm.ChangeState <ChangeSceneProcedure>();
            }
        };
        //监听输入模块事件
        InputModule.Instance.wDown     += OnWdown;
        InputModule.Instance.sDown     += OnSdown;
        InputModule.Instance.sUp       += OnSup;
        InputModule.Instance.aDown     += OnAdown;
        InputModule.Instance.dDown     += OnDdown;
        InputModule.Instance.spaceDown += OnSpacedown;
        InputModule.Instance.escDown   += OnEscdown;
        InitBlockDatas();                                                        //初始化方块数据
        currentBlock = SpawnBlock(blockDatas[UnityEngine.Random.Range(0, 7)]);   //随机取0-6 取出数据生成方块
        MapModule.Instance.SetTex(currentBlock.Current, currentBlock.data.type); //绘制图像
        gameoverUIEntity = EntityModule.Instance.SpawnEntity <GameoverUIEntity>(IdContract.UI_GAMEOVER);
        gameoverUIEntity.gameObject.SetActive(false);
        gameoverUIEntity.onclick += (id) =>
        {
            switch (id)
            {
            //重新开始
            case 0:
                score = 0;
                gameUIEntity.SetScore(score);                                          //清空得分
                currentDownRate = normalSpeedRate;                                     //回复正常速度
                MapModule.Instance.ClearMap();                                         //清空地图的数据和瓦片
                UnSpawnBlock(currentBlock);                                            //回收当前方块
                currentBlock = SpawnBlock(blockDatas[UnityEngine.Random.Range(0, 7)]); //随机取0-6 取出数据生成方块
                gameover     = false;                                                  //重新开始游戏
                gameoverUIEntity.gameObject.SetActive(false);
                gameoverUIEntity.OnInit();
                break;

            //返回主菜单
            case 1:
                gameoverUIEntity.gameObject.SetActive(false);
                gameUIEntity.gameObject.SetActive(false);
                var changeSceneProcedure = fsm.GetState("ChangeSceneProcedure") as ChangeSceneProcedure;    //获取切换场景流程
                changeSceneProcedure.SetValue("Menu", fsm.GetState("MenuProcedure") as BaseProcedure, ChangeSceneMode.NoProgress);
                fsm.ChangeState <ChangeSceneProcedure>();
                break;
            }
        };
    }