public void AddAnt(int col, int row, int team) { if (team == 0) { var ant = new MyAnt { X = col, Y = row }; var index = MyAnts.BinarySearch(ant); if (index < 0) { MyAnts.Insert(~index, ant); NewAnt(ant); ant.Live = true; ant.Home = Hills.Where(x => x.DirectDistanceTo(ant) == Hills.Min(h => h.DirectDistanceTo(ant))).First(); } else { ApplyAntVision(ant); MyAnts[index].Live = true; } } else { var ant = new Ant { X = col, Y = row, Team = team }; EnemyAnts.Add(ant); } Map[col, row] = Tile.Ant; }
void NewAnt(MyAnt ant) { FillVisionMap(ant); foreach (var loc in FullVision) { var point = loc + ant; var tile = GetTile(point); if (tile == Tile.Unseen) SetTile(point, Tile.Land); } }
void ApplyAntVision(MyAnt ant) { FillVisionMap(ant); foreach (var loc in MoveVision) { var point = loc + ant; var tile = GetTile(point); if (tile == Tile.Unseen) SetTile(point, Tile.Land); } }