예제 #1
0
        /// <summary>
        /// Executes action taking.
        /// </summary>
        /// <param name="agent"></param>
        /// <param name="state"></param>
        /// <param name="site"></param>
        public void Execute(IAgent agent, AgentState state, ActiveSite site)
        {
            RuleHistory history = state.RuleHistories[site];

            state.TakenActions.Add(site, new List <TakenAction>());

            history.Activated.OrderBy(r => r.Layer.Set).ThenBy(r => r.Layer).ForEach(r =>
            {
                TakenAction result = r.Apply(agent);

                //add result to the state
                state.TakenActions[site].Add(result);
            });
        }
예제 #2
0
 protected virtual void OnTakenAction(PublishActionEventArgs e)
 {
     TakenAction?.Invoke(this, e);
 }