/// <summary> Строит массив матчей, пополняет на их основе конвейер и запускает его. </summary> /// <param name="engine"></param> /// <param name="trace"> /// Если этот параметр выставлен в какой-нибудь не null то все матчи и состояние движка после /// пополнения пайплайна будет скинуто в дебаг. /// </param> /// <param name="model"></param> public virtual void Applay(IGameStateModel model, AbstractPipelineEngine engine, string trace = null) { Execute(model, engine); if (ExtremeCrutch != null) { trace = ExtremeCrutch; ExtremeCrutch = null; } engine.PipelineStageExecuted = entity => Array.ForEach(entity, e => model.AddEntity(e)); // Кинем в трейс всю кучу матчей для общего образования. engine.ExecuteAll(); }
/// <summary> Само по себе правило новых стэйджей не создаёт </summary> public void CreatePipeline(IGameStateModel model, AbstractPipelineEngine engine) { engine.PipelineStageExecuted = entity => Array.ForEach(entity, e => model.AddEntity(e)); Childs.Execute(model, engine); engine.СonditionExecute(s => Childs.RuleList.Contains(s.Producer)); }