Esempio n. 1
0
 public void Add(WorldUpdate src)
 {
     if (src is Fork fork)
     {
         foreach (var act in fork.m_Options)
         {
             Add(act);
         }
     }
     else if (src.IsLegal() && !m_Options.Contains(src))
     {
         if (src is Join join)
         {
             var ub = m_Options.Count;
             while (0 <= --ub)
             {
                 if (m_Options[ub] is Join prior_join && prior_join.ForkMerge(join))
                 {
                     return;
                 }
             }
         }
         m_Options.Add(src);
     }
 }
Esempio n. 2
0
        public SharedPlan(WorldUpdate src, Condition <Actor> done)
        {
#if DEBUG
            if (!src.IsLegal())
            {
                throw new InvalidOperationException("illegal objective");
            }
#endif
            m_Plan   = src;
            m_Target = done;
        }
Esempio n. 3
0
        public override bool IsLegal()
        {
            var ub = m_Options.Count;

            while (0 <= --ub)
            {
                if (m_Options[ub].IsLegal())
                {
                    return(m_Sequel.IsLegal());
                }
            }
            return(false);
        }
Esempio n. 4
0
 public bool IsLegal()
 {
     return(!m_Target.IsDone() && m_Plan.IsLegal());
 }