public static int GroupSign(this PenguinGroup a) { if (a.Owner.Equals(game.GetEnemy())) { return(-1); } return(1); }
public static int GroupAmountAfterClash(this PenguinGroup a) { List <PenguinGroup> Groups = (from PenguinGroup i in game.GetAllPenguinGroups() where !i.Owner.Equals(a.Owner) && i.Source.Equals(a.Destination) && a.Source.Equals(i.Destination) select i ).ToList(); int Amount = a.PenguinAmount; if (Groups.Count == 0) { return(Amount); } int JourneyLength = a.Source.GetTurnsTillArrival(a.Destination); foreach (PenguinGroup g in Groups) { if (g.TurnsTillArrival + a.TurnsTillArrival >= JourneyLength) { Amount -= g.PenguinAmount; } } return(System.Math.Max(0, Amount)); }