Esempio n. 1
0
    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);
        }
    }