Ejemplo n.º 1
0
    public IList <ObjectInstantiationData> LoadFromTemplate(
        GameObject[] enemyPrefabs, GameObject[] treasurePrefabs,
        IDictionary <POIType, GameObject[]> poiPrefabs,
        GameObject lavaParticlesPrefab, GameObject portalParticlesPrefab)
    {
        bool hasPOI = false;

        if (assignedPOI != null)
        {
            hasPOI = true;
        }

        var roomTemplate = tileMap.GenerateRoom(templateFileName, Neighbors, hasTreasure, hasPOI);

        foreach (var poi in roomTemplate.pois)
        {
            poi.type = assignedPOI.ToString();
        }

        width = roomTemplate.dimensions.width;
        depth = roomTemplate.dimensions.height;

        var objs = new List <ObjectInstantiationData>();

        objs.AddRange(EnemySpawner.SpawnEnemies(tileMap, roomTemplate.enemyNests, enemyPrefabs));
        if (hasTreasure)
        {
            var treasures = (InteractablesSpawner.SpawnTreasures(roomTemplate.treasures, treasurePrefabs));
            objs.AddRange(treasures);
        }

        if (assignedPOI != null)
        {
            var pois = (InteractablesSpawner.SpawnPOIs(roomTemplate.pois, poiPrefabs));
            objs.AddRange(pois);
        }

        var lavas = ParticleSpawner.SpawnLavaParticles(roomTemplate.lavas, lavaParticlesPrefab);

        objs.AddRange(lavas);

        var portals = ParticleSpawner.SpawnPortalParticles(roomTemplate.portal, portalParticlesPrefab);

        objs.AddRange(portals);

        return(objs);
    }