public static void TestState() { Console.WriteLine("-- TEST STATE --"); StateContext context = new StateContext(new StateOpen()); context.DoWork(); context.ChangeState(); context.DoWork(); context.ChangeState(); context.DoWork(); }
public void Do(StateContext ctx, string str) { if (str == "tick") { ctx.ChangeState(TitleState.Instance); } }
public void Do(StateContext ctx, string str) { if (str == "monster") { ctx.ChangeState(GameOverState.Instance); } }
public void Do(StateContext ctx, string str) { if (str == "startbutton") { ctx.ChangeState(GameState.Instance); } }
private void OnCurrentTargetUnavailable(object sender, EventArgs args) { if (StateContext.CurrentState == this) { StateContext.ChangeState(this, targetingState); } }
private void AttackDecidedCallback() { if (StateContext.CurrentState == this) { StateContext.ChangeState(this, attackingState); } }
private void OnReactionToIncomingAttack(object sender, IEnumerable <AttackAction> attacksReactedOn) { if (StateContext.CurrentState == this && StateContext.CurrentCombatStrategy.DecideToDefend(attacksReactedOn)) { StateContext.PrepareDefence(attacksReactedOn); if (StateContext.PerformedDefence != null) { StateContext.ChangeState(this, defendingState); } } }
public void Notify() { reactionTime -= Time.deltaTime; if (reactionTime <= 0.0f) { StateContext.SelectNextTarget(); if (StateContext.TargetedEnemy != null) { StateContext.ChangeState(this, pursuingState); } } }
public void TestState() { StateContext ctx = new StateContext(); ctx.ChangeState(TitleState.Instance); Assert.Equal("Title", ctx.GetState()); ctx.Do("startbutton"); Assert.Equal("Game", ctx.GetState()); ctx.Do("monster"); Assert.Equal("GameOver", ctx.GetState()); ctx.Do("startbutton"); Assert.Equal("GameOver", ctx.GetState()); ctx.Do("tick"); Assert.Equal("Title", ctx.GetState()); }
private void OnAttackFinished(object sender, IAction action) { StateContext.ChangeState(this, targetingState); }
private void Start() { //local func System.Func <float, Task> fromtAttractingToFindTargetsState = async(sec) => { stateContext.ChangeState(findTargetState); await Task.Delay((int)(sec * 1000)); GetComponent <Movement>().isActive = true; }; //stateの設定 stateContext.State = findTargetState; findTargetState.houseManager = houseManager; findTargetState.OnTargetNotFound += () => { target = findTargetState.targetHouse; //戻る goToTargetState.target = ufoHome; goToTargetState.offset = Vector3.zero; stateContext.State = goToTargetState; }; findTargetState.OnTargetFound += () => { //ターゲットへ向かう goToTargetState.target = findTargetState.targetHouse.transform; goToTargetState.offset = new Vector3(Random.Range(minOffset.x, maxOffset.x), Random.Range(minOffset.y, maxOffset.y), Random.Range(minOffset.z, maxOffset.z)); goToTargetState.OnReached += () => { stateContext.ChangeState(attractState, Random.Range(2, 4)); stateContext.State = attractState; GetComponent <Movement>().isActive = false; }; stateContext.State = goToTargetState; }; goToTargetState.TargetNotFound += () => stateContext.State = findTargetState; goToTargetState.transform = transform; goToTargetState.UpdateAfterExecuted += () => { PitchValue = goToTargetState.pitch; YawValue = goToTargetState.yaw; }; goToTargetState.OnTimeout += () => { stateContext.State = findTargetState; }; attractState.magnet = GetComponent <Magnet>(); attractState.OnAllObjectsAttracted += () => { fromtAttractingToFindTargetsState(Random.Range(2, 3)); }; attractState.OnTimeout += () => { fromtAttractingToFindTargetsState(Random.Range(2, 3)); }; }
private void OnDefenceFinished(object sender, IAction defence) { StateContext.ChangeState(this, targetingState); }