Пример #1
0
        public bool SolveParallelCompatibilityConflicts()
        {
            foreach (var pl in new List<TaskPlan2>(actorGroupAsUG.GetActorsGroupsAndSubGroupsPlans(true, true)))
            {
                if (pl.GetCurrentTaskInPlan() != this)
                {
                    MoveTask2 mvtsk = pl.GetCurrentTaskInPlan() as MoveTask2;
                    UnitGroup ug = mvtsk.GetActorGroup() as UnitGroup;
                    if (mvtsk != null/* && ug != null*/)
                    {
                        foreach (var u in new List<Unit>(units))
                        {
                            if (mvtsk.units.Contains(u))
                                ug.RemoveUnitFromGroup(u);
                        }
                        /*var intsect = mvtsk.units.Intersect(units);
                        foreach (var u in intsect)
                        {
                            ug.RemoveUnitFromGroup(u);
                        }*/
                    }

                    if (ug != null && ug.GetActors().Count == 0)
                    {
                        foreach (var subg in new List<UnitGroup>(ug.GetSubGroupsAsUG()))
                            subg.ChangeParentTo(null);
                        
                        pl.EndPlanExecution();
                    }
                }
            }

            return false;
        }