Exemplo n.º 1
0
    public static void PruneCell(DVector cell)
    {
        GameState.Instance.FoodSources.Remove(cell);
        GameState.Instance.FoodSpenders.Remove(cell);

        GameState.Instance.ActualGrid.SetCell(
            cell,
            GameState.Instance.InitialGrid.GetCell(cell));

        foreach (var neighbor in cell.Get4Neighbours())
        {
            if (!TileTypesHelper.IsActive((TileType)GameState.Instance.ActualGrid.GetCell(neighbor)))
            {
                continue;
            }
            bool hasFilledNeigbor =
                neighbor.Get4Neighbours()
                .Select(GameState.Instance.ActualGrid.GetCell)
                .Cast <TileType>()
                .Any(TileTypesHelper.IsFilled);
            if (hasFilledNeigbor)
            {
                continue;
            }
            GameState.Instance.ActualGrid.SetCell(
                neighbor,
                (int)TileTypesHelper.ToInactive((TileType)GameState.Instance.ActualGrid.GetCell(neighbor)));
        }
    }
Exemplo n.º 2
0
 public static void ExpandAreaAround(DVector pos)
 {
     foreach (var neighbor in pos.Get4Neighbours())
     {
         if (GameState.Instance.InitialGrid.IsEmpty(neighbor) ||
             TileTypesHelper.IsFilled((TileType)GameState.Instance.ActualGrid.GetCell(neighbor)))
         {
             continue;
         }
         var targetCellType = GameState.Instance.InitialGrid.GetCell(neighbor);
         if (targetCellType == (int)TileType.ActiveRockNode &&
             !GameState.Instance.CanGrowRocks)
         {
             targetCellType = (int)TileTypesHelper.ToInactive((TileType)targetCellType);
         }
         GameState.Instance.ActualGrid.SetCell(neighbor, targetCellType);
     }
 }