Exemplo n.º 1
0
        public static void TestState()
        {
            Console.WriteLine("-- TEST STATE --");

            StateContext context = new StateContext(new StateOpen());

            context.DoWork();
            context.ChangeState();
            context.DoWork();
            context.ChangeState();
            context.DoWork();
        }
Exemplo n.º 2
0
 public void Do(StateContext ctx, string str)
 {
     if (str == "tick")
     {
         ctx.ChangeState(TitleState.Instance);
     }
 }
Exemplo n.º 3
0
 public void Do(StateContext ctx, string str)
 {
     if (str == "monster")
     {
         ctx.ChangeState(GameOverState.Instance);
     }
 }
Exemplo n.º 4
0
 public void Do(StateContext ctx, string str)
 {
     if (str == "startbutton")
     {
         ctx.ChangeState(GameState.Instance);
     }
 }
Exemplo n.º 5
0
 private void OnCurrentTargetUnavailable(object sender, EventArgs args)
 {
     if (StateContext.CurrentState == this)
     {
         StateContext.ChangeState(this, targetingState);
     }
 }
Exemplo n.º 6
0
 private void AttackDecidedCallback()
 {
     if (StateContext.CurrentState == this)
     {
         StateContext.ChangeState(this, attackingState);
     }
 }
Exemplo n.º 7
0
 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);
         }
     }
 }
Exemplo n.º 8
0
 public void Notify()
 {
     reactionTime -= Time.deltaTime;
     if (reactionTime <= 0.0f)
     {
         StateContext.SelectNextTarget();
         if (StateContext.TargetedEnemy != null)
         {
             StateContext.ChangeState(this, pursuingState);
         }
     }
 }
Exemplo n.º 9
0
        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());
        }
Exemplo n.º 10
0
 private void OnAttackFinished(object sender, IAction action)
 {
     StateContext.ChangeState(this, targetingState);
 }
Exemplo n.º 11
0
    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));
        };
    }
Exemplo n.º 12
0
 private void OnDefenceFinished(object sender, IAction defence)
 {
     StateContext.ChangeState(this, targetingState);
 }