Esempio n. 1
0
        public void RemoveBlocker(CropBlocker blocker)
        {
            KeyValuePair <Vector2Int, CropBlocker> item = cropBlockers.FirstOrDefault(pair => pair.Value == blocker);

            if (item.Value != null)
            {
                RemoveBlocker(item.Key);
            }
        }
Esempio n. 2
0
 public void AddBlocker(Vector2Int tile, CropBlocker blocker)
 {
     if (cropBlockers.ContainsKey(tile))
     {
         Debug.LogWarning($"Tile {tile} is already blocked!");
         return;
     }
     cropBlockers[tile] = blocker;
 }
Esempio n. 3
0
        private void AddStartingBlockers()
        {
            List <Vector2Int> soilTiles = new List <Vector2Int>();

            foreach (Vector3Int pos in groundTilemap.cellBounds.allPositionsWithin)
            {
                Vector2Int tilePos  = pos.ToVector2Int();
                Vector3    worldPos = tilePos.TileToWorld();
                TileBase   tile     = groundTilemap.GetTile(pos);
                if (regularSoilType.Contains(tile))
                {
                    soilTiles.Add(tilePos);
                    float random = Random.value;
                    if (random < 0.45)
                    {
                        CropBlocker weed = Instantiate(weedPrefab, worldPos, Quaternion.identity);
                        weed.RegisterBlocker();
                    }
                }
            }

            int counter = 0;

            soilTiles.OrderBy(tile => Random.value)
            .Take(NumberOfRocks + NumberOfStumps)
            .ForEach(tile => {
                CropBlocker blocker = CropManager.Instance.GetBlocker(tile);
                if (blocker != null)
                {
                    CropManager.Instance.RemoveBlocker(tile);
                    Destroy(blocker.gameObject);
                }
                Instantiate(counter++ < NumberOfRocks ? rockPrefab : stumpPrefab, tile.TileToWorld(),
                            Quaternion.identity);
            });
        }