public static void MakeZomboAt(ZomboType type, Alliance alliance, Point at) { var zombo = new Zombo(type, alliance, at); FullMap.SetAt(zombo); zombos.Add(zombo); }
static void FightForMelee(Zombo fightFor) { var killTargets = PointHelper.ZombosAroundPoint(fightFor.location).Where(x => x.alliance != fightFor.alliance); if (killTargets.Any()) { EntityControl.Kill(ListHelper.RandomElementInEnumerable(killTargets)); } }
public static void RandomWalkZombo(Zombo toWalk) { var options = PointHelper.EmptyPointsAroundPoint(toWalk.location); if (options.Any()) { var moveTo = ListHelper.RandomElementInEnumerable(options); EntityControl.MoveZomboTo(toWalk, moveTo); } }
public static void FightForZombo(Zombo fightFor) { if (fightFor.IsZombie()) { FightForMelee(fightFor); } else if (fightFor.IsRanged()) { FightForRanged(fightFor); } }
static void FightForRanged(Zombo fightFor) { for (int i = 0; i < 1; i++) { var killTargets = PointHelper.ZombosAroundPoint(fightFor.location, 3).Where(x => x.alliance != fightFor.alliance); if (killTargets.Any()) { EntityControl.Kill(ListHelper.RandomElementInEnumerable(killTargets)); ZomboFoodManager.IncrementFoodFor(fightFor, 1); } } }
static void DuplicateCheck(Zombo check) { if (check.FoodCount >= FoodToCopy[check.zomboType]) { var possiblePoints = PointHelper.EmptyPointsAroundPoint(check.location); if (possiblePoints.Count() == 8) { EntityControl.DuplicateZomboAt(check, ListHelper.RandomElementInEnumerable(possiblePoints)); check.FoodCount -= FoodToCopy[check.zomboType]; } } }
public static void IncrementFoodFor(Zombo incrementFor, int by) => incrementFor.FoodCount += by;
static void PassiveFoodCheck(Zombo check) { IncrementFoodFor(check, PassiveFood[check.zomboType]); }
public static void ManageFoodFor(Zombo manageFor) { PassiveFoodCheck(manageFor); DuplicateCheck(manageFor); }
public static void OverrideColorForZombo(Zombo overrideFor) => OverrideColorFor(overrideFor, AllianceColorMap[overrideFor.alliance]);
//TODO: add some killed flag to the zombo killed above to indicate that it shouldn't execute. also affects below static void ManageZombo(Zombo toManage) { ZomboRandomWalker.RandomWalkZombo(toManage); ZomboFighter.FightForZombo(toManage); ZomboFoodManager.ManageFoodFor(toManage); }
public static void Kill(Zombo toKill) { FullMap.ResetAt(toKill.location); zombos.Remove(toKill); }
public static void MoveZomboTo(Zombo zombo, Point moveTo) { FullMap.ResetAt(zombo.location); zombo.location = moveTo; FullMap.SetAt(zombo); }
public static void DuplicateZomboAt(Zombo toDuplicate, Point duplicateAt) => MakeZomboAt(toDuplicate.zomboType, toDuplicate.alliance, duplicateAt);