private IGameObject Hatch(Task <IGameObject> antecedent)
        {
            Egg egg = antecedent.Result as Egg;

            if (egg == null)
            {
                return(null);
            }

            lock (globalLock)
            {
                egg.HatchCounter -= 1;

                if (egg.IsHatched)
                {
                    lock (globalLock)
                    {
                        Bug bug  = CreateBug(egg.PosX, egg.PosY, egg.Team, Bug.GetRandomSex());
                        var bugs = (egg.Team == Bug.TeamEnum.Blue) ? bugsBlue : bugsRed;
                        bugs.Add(bug);
                    }
                }

                return(egg);
            }
        }
        private List <Bug> ReleaseBugs(IEnumerator <Point> pos, Bug.TeamEnum team, Random random)
        {
            var bugs = new List <Bug>();

            for (int i = 0; i < conf.BugCountBlue; ++i)
            {
                var advanceSuccess = pos.MoveNext();

                if (advanceSuccess == false || advanceSuccess == false)
                {
                    throw new Exception();
                }

                Bug bug = CreateBug(pos.Current.X, pos.Current.Y, team, Bug.GetRandomSex());

                bugs.Add(bug);
            }

            return(bugs);
        }