Beispiel #1
0
 public ActivityResolver(IUtilityAi utilityAi, IConditionContext conditionContext,
                         IActivityCreationContext activityCreationContext)
 {
     _utilityAi               = utilityAi;
     _conditionContext        = conditionContext;
     _activityCreationContext = activityCreationContext;
 }
Beispiel #2
0
 public AiActionResolver(IActionFactory actionFactory, IUtilityAi utilityAi,
                         IActivityCreationContext activityCreationContext, IActivityResolver activityResolver)
 {
     _actionFactory           = actionFactory;
     _utilityAi               = utilityAi;
     _activityCreationContext = activityCreationContext;
     _activityResolver        = activityResolver;
 }
Beispiel #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AiTransition"/> class.
        /// </summary>
        /// <param name="ai">The ai.</param>
        /// <exception cref="Crystal.AiTransition.TargetAiNullException"></exception>
        public AiTransition(IUtilityAi ai)
        {
            if (ai == null)
            {
                throw new TargetAiNullException();
            }

            _targetAi = ai;
        }
Beispiel #4
0
        public void Initialize()
        {
            _actions        = new ActionCollection();
            _considerations = new ConsiderationCollection();
            _options        = new OptionCollection(_actions, _considerations);
            _behaviours     = new BehaviourCollection(_options);
            _aIs            = new AiCollection(_behaviours);

            _utilityAi = new UtilityAi("ai0", _aIs);
        }
Beispiel #5
0
        public void Inititalize()
        {
            _toon = new Toon();

            _ac  = new ActionCollection();
            _cc  = new ConsiderationCollection();
            _oc  = new OptionCollection(_ac, _cc);
            _bc  = new BehaviourCollection(_oc);
            _aic = new AiCollection(_bc);

            // The main AI
            _ai = new UtilityAi("ai", _aic);
            var coreBehaviour = new Behaviour("coreBehaviour", _bc);

            coreBehaviour.Selector = new MaxUtilitySelector();
            _ai.AddBehaviour(coreBehaviour.NameId);

            // Eat Option
            _eatOption         = new Option();
            _eatOption.Measure = new WeightedMetrics(1.4f);
            var eatAction           = new EatAction();
            var hungerConsideration = new HungerConsideration();

            (_eatOption as Option).SetAction(eatAction);
            _eatOption.AddConsideration(hungerConsideration);
            _eatOption.AddConsideration(new InverseBladderConsideration());
            coreBehaviour.AddConsideration(_eatOption);

            // Drink Option
            _drinkOption         = new Option();
            _drinkOption.Measure = new WeightedMetrics(3.0f);
            var drinkAction         = new DrinkAction();
            var thirstConsideration = new ThirstConsideration();

            (_drinkOption as Option).SetAction(drinkAction);
            _drinkOption.AddConsideration(thirstConsideration);
            _drinkOption.AddConsideration(new InverseBladderConsideration());

            // Toilet Option
            _toiletOption         = new Option();
            _toiletOption.Measure = new WeightedMetrics();
            var toiletAction         = new ToiletAction();
            var bladderConsideration = new BladderConsideration();

            (_toiletOption as Option).SetAction(toiletAction);
            _toiletOption.AddConsideration(bladderConsideration);

            coreBehaviour.AddConsideration(_eatOption);
            coreBehaviour.AddConsideration(_drinkOption);
            coreBehaviour.AddConsideration(_toiletOption);

            Console.WriteLine(coreBehaviour);

            _scheduler = new Scheduler();
        }
Beispiel #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DecisionMaker"/> class.
        /// </summary>
        /// <param name="uai">The uai.</param>
        /// <param name="contextProvider">The context provider.</param>
        /// <param name="aiScheduler">The ai scheduler.</param>
        /// <exception cref="Crystal.DecisionMaker.SchedulerNullException"></exception>
        public DecisionMaker(IUtilityAi uai, IContextProvider contextProvider, IScheduler aiScheduler)
            : base(uai, contextProvider)
        {
            if (aiScheduler == null)
            {
                throw new SchedulerNullException();
            }

            InitializeThinkCommand();
            InitializeUpdateCommand();
            _aiScheduler = aiScheduler;
        }
Beispiel #7
0
        bool Add(IUtilityAi ai)
        {
            if (ai == null)
            {
                return(false);
            }
            if (_aiMap.ContainsKey(ai.NameId))
            {
                return(false);
            }

            _aiMap.Add(ai.NameId, ai);
            return(true);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DecisionMakerBase"/> class.
        /// </summary>
        /// <param name="ai">The ai.</param>
        /// <param name="contextProvider">The context provider.</param>
        /// <exception cref="Crystal.DecisionMakerBase.UtilityAiNullException"></exception>
        /// <exception cref="Crystal.DecisionMakerBase.ContextProviderNullException"></exception>
        protected DecisionMakerBase(IUtilityAi ai, IContextProvider contextProvider)
        {
            if (ai == null)
            {
                throw new UtilityAiNullException();
            }
            if (contextProvider == null)
            {
                throw new ContextProviderNullException();
            }

            _ai = ai;
            _contextProvider = contextProvider;
            State            = DecisionMakerState.Stopped;
        }
Beispiel #9
0
        /// <summary>
        ///   Adds the specified AI.
        /// </summary>
        /// <param name="ai">The AI.</param>
        /// <returns></returns>
        public bool Add(IUtilityAi ai)
        {
            if (ai == null)
            {
                return(false);
            }
            if (string.IsNullOrEmpty(ai.NameId))
            {
                return(false);
            }
            if (_aiMap.ContainsKey(ai.NameId))
            {
                return(false);
            }

            _aiMap.Add(ai.NameId, ai);
            return(true);
        }
Beispiel #10
0
        public bool Add(IUtilityAi ai)
        {
            if (ai == null || ai.Equals(null))
            {
                return(false);
            }

            var id = ai.NameId;

            if (Contains(id))
            {
                return(false);
            }

            m_ais.Add(id, ai);

            return(true);
        }