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); }