private void InstantiateDungeon(DungeonObject TheDungeon) { foreach (Vector2 WallPosition in TheDungeon.WallPositions) { DungeonTile dt = Instantiate(DungeonWall, WallPosition, Quaternion.identity).GetComponent <DungeonTile>(); m_AllTiles.Add(dt); } foreach (Vector2 GroundPosition in TheDungeon.GroundPositions) { DungeonTile dt = Instantiate(DungeonGround, GroundPosition, Quaternion.identity).GetComponent <DungeonTile>(); m_AllTiles.Add(dt); } DungeonTile up = Instantiate(Upstairs, TheDungeon.UpstairsPosition, Quaternion.identity).GetComponent <DungeonTile>(); m_AllTiles.Add(up); DungeonTile down = Instantiate(Downstairs, TheDungeon.DownstairsPosition, Quaternion.identity).GetComponent <DungeonTile>(); m_AllTiles.Add(down); DungeonTile extra = Instantiate(DungeonGround, TheDungeon.StartPosition, Quaternion.identity).GetComponent <DungeonTile>(); m_AllTiles.Add(extra); Hero theHero = FindObjectOfType <Hero>(); theHero.InitializeHero(); theHero.UpdatePosition(TheDungeon.StartPosition); foreach (DungeonTile dt in m_AllTiles) { Debug.Log("Initializing all Tiles..."); dt.InitializeTile(); } FindObjectOfType <FourthDimension.Roguelike.FieldOfView>().InitializeFieldOfView(TheDungeon.StartPosition); List <Vector3> PossiblePositions = new List <Vector3>(); foreach (DungeonTile dt in m_AllTiles) { if (!dt.IsVisible && !dt.IsWall) { PossiblePositions.Add(dt.transform.position); } } if (Random.value < 0.35f) // 35% of spawning gold on the floor { Debug.Log("Spawned gold!"); Vector3 Position = PossiblePositions.RandomOrDefault(); PossiblePositions.Remove(Position); ResourceDrop goldDrop = Instantiate(ResourceLocator.instance.GoldPrefab, Position, Quaternion.identity).GetComponent <ResourceDrop>(); goldDrop.Amount = Random.Range(5, 15); } if (Random.value < 0.1f) // 10% of spawning a potion { Debug.Log("Spawned a potion!"); Vector3 Position = PossiblePositions.RandomOrDefault(); Instantiate(ResourceLocator.instance.PotionPrefab, Position, Quaternion.identity); } }