void Taker <BehaviorTriggerSet> .Take(BehaviorTriggerSet item)
 {
     if (item.namedTriggers != null)
     {
         //stub
     }
     if (item.rootTrigger != null)
     {
         parent.actualTrigger = item.rootTrigger;
         foreach (var task in parent.tasks)
         {
             task();
         }
     }
     parent.tasks.Clear();
 }
Exemple #2
0
 void BehaviorAnalyzer.AnalyzeBehavior(GrammarBlock behaviorExpressionByGBlock, Taker <BehaviorTriggerSet> listener)
 {
     //ensure behaver
     {
         var metaDepVis = new MetaInfoDependentGrammarBlockVisitor {
             doDeepSeek = true, doDeepSeekModifier = true
         };
         metaDepVis.metaToVis[StdMetaInfos.nominalBlock.word] = new EnsureBehaver {
             behaverGiver = stdGiver
         };
         GrammarBlockUtils.VisitGrammarBlock(behaviorExpressionByGBlock, metaDepVis);
     }
     //cereate behavior trigger
     {
         var rootTrigger    = new StdCompositeBehaviorTrigger();
         var namedCBTrigger = new Dictionary <string, CompositeBehaviorTrigger>();
         var processor      = new SentenceBlockRecursiveProcessor {
             subSentenceBehaviorTaker = rootTrigger, behaverSetCheck = bSetCheck, namedCBTriggers = namedCBTrigger, support = new StdBehaviorReadySupport {
                 assetMediator = assetMediator.assetMed
             }
         };
         processor.GrammarBlockCommon(behaviorExpressionByGBlock);
         if (rootTrigger.bTriggers.Count > 0 || namedCBTrigger.Count > 0)
         {
             List <NameAndBTrigger> namedTriggers = null;
             if (namedCBTrigger.Count > 0)
             {
                 namedTriggers = new List <NameAndBTrigger>();
                 foreach (var pair in namedCBTrigger)
                 {
                     namedTriggers.Add(new NameAndBTrigger {
                         name = pair.Key, bTrigger = pair.Value
                     });
                 }
             }
             var result = new BehaviorTriggerSet {
                 rootTrigger = rootTrigger.bTriggers.Count > 0 ? rootTrigger : null, namedTriggers = namedTriggers
             };
             listener.Take(result);
         }
     }
 }
Exemple #3
0
 void Taker <BehaviorTriggerSet> .Take(BehaviorTriggerSet item)
 {
     if (item.namedTriggers != null)
     {
         if (parent.actualTrigger == null)
         {
             parent.actualTrigger = parent.parent.triggerIntegrator.NewIntegrableBTrigger();
         }
         foreach (var namedTrigger in item.namedTriggers)
         {
             parent.setting.triggers.Add(new NamedBTrigger {
                 name = namedTrigger.name, bTrigger = namedTrigger.bTrigger
             });
             parent.actualTrigger.AddSubTrigger(namedTrigger);
         }
         foreach (var task in parent.tasks)
         {
             task();
         }
         parent.tasks.Clear();
     }
 }