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))); } }
public static void RevealCellsAround(DVector position, int radius) { foreach (var cell in position.GetSquare(radius)) { if (GameState.Instance.InitialGrid.IsEmpty(cell) || GameState.Instance.ActualGrid.GetCell(cell) >= 0) { continue; } GameState.Instance.ActualGrid.SetCell( cell, (int)TileTypesHelper.ToInactive((TileType)GameState.Instance.InitialGrid.GetCell(cell))); } }
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); } }