Ejemplo n.º 1
0
    public Minion(Ship ship) : base(ship)
    {
        var patrolState = new PatrolOrbitsState(this);

        _rootState.AddTransition(patrolState,
                                 () => Task is PatrolOrbitsTask,
                                 () => patrolState.Task = Task as PatrolOrbitsTask);

        Ship.VisibleEnemies.ObserveAdd().Where(_ => Ship.Target.Value == null).Subscribe(add => Ship.Target.Value = add.Value);

        var combatState = new CombatState(this);

        _rootState.AddTransition(combatState,
                                 () => Ship.Target.Value != null, null, true, _rootState);

        combatState.AddTransition(_rootState,
                                  () => Ship.Target.Value == null, null, true, _rootState);
    }