public void GoToLevelState() { if (playerData.firstPlay == true) { playerData.firstPlay = false; playerData.Save(); SceneManager.LoadScene(1); } fsm.ChangeState <LevelUIState>(); }
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(); }; }
/// <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); } }
private void Start() { Input = InputManager.Instance; Fsm.ChangeState(States.Normal); Health.Actor = this; PointerIsNull = pointerSpriteHolder == null; }
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); } } }
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)); }
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); }
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); }
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); }
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); }
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)); } } }
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)); } }
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>()); } }
private void CheckTransitions() { if (transitions == null) { return; } foreach (var transition in transitions) { if (transition.IsValid()) { transition.OnTransition(); fsm.ChangeState(transition.GetNextState()); } } }
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>()); } } }
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); }
/// <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)); } }
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); }
public void GameOverFinish() { ShutDownServerPlayer(); ResetPlayer_Ready(); Fsm.ChangeState <TR_Ready>(); }
public void ChangeState(string stateName, object userData = null) { Fsm.ChangeState(stateName, userData); }
/// <summary> /// 指令状态机重置 /// </summary> public void Reset() { fsm.ChangeState(1); }
private void OnDied() { Debug.Log("Died"); Fsm.ChangeState(2); }
/// <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; } }; }