/// <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); }); }
protected virtual void OnTakenAction(PublishActionEventArgs e) { TakenAction?.Invoke(this, e); }