Example #1
0
    public void OpenDoors()
    {
        foreach (Door d in doors)
        {
            if (d)
            {
                d.Open();
            }
        }

        foreach (GameObject go in spawnPlayer)
        {
            RoomExit temp = go.GetComponent <RoomExit>();
            if (temp)
            {
                temp.EnableExit(true);
            }
        }
    }
Example #2
0
    public void InitRoom(GameObject roomPrefab, SMonsterSpawnConfiguration monstersToSpawn)
    {
        //SaveGameManager.instance.SaveGame(playerStats.roomNumber, playerStats.hp, playerStats.gold);
        int i, j;

        //GameObject room =
        room = Instantiate(roomPrefab);

        surface.BuildNavMesh();

        players = new List <Player>(GameObject.FindObjectsOfType <Player>());
        foreach (Player p in players)
        {
            p.EnableAgent(false);
        }

        spawnMonster = new List <GameObject>(GameObject.FindGameObjectsWithTag("Spawner"));
        j            = 0;
        foreach (SMonsterSpawnConfiguration.Spawner s in monstersToSpawn.monsters)
        {
            for (i = 0; i < s.numberToSpawn; i++)
            {
                //Debug.Log("Instanzio nuovo mostro.");
                GameObject newMonster = Instantiate(s.monsterToSpawn, spawnMonster[j % spawnMonster.Count].transform.position, spawnMonster[j % spawnMonster.Count].transform.rotation);
                newMonster.transform.rotation = spawnMonster[j % spawnMonster.Count].transform.rotation;
                monsters.Add(newMonster.GetComponent <Monster>());
                monstersAlive++;
                //Debug.Log("Mostro " + newMonster.name + " " + monstersAlive + " " + newMonster.transform.position + " " + monsters.Count);
                j++;
            }
        }

        doors = new List <Door>(GameObject.FindObjectsOfType <Door>());

        spawnPlayer = new List <GameObject>(GameObject.FindGameObjectsWithTag("SpawnerPlayer"));

        for (i = 0; i < spawnPlayer.Count; i++)
        {
            RoomExit newSpawnPoint = Instantiate(playerSpawnExitPrefab, spawnPlayer[i].transform.position, spawnPlayer[i].transform.rotation);
            exits.Add(newSpawnPoint);
            newSpawnPoint.EnableExit(false);
            spawnPlayer[i] = newSpawnPoint.gameObject;
        }

        i = 0;
        foreach (Player p in players)
        {
            p.transform.position = spawnPlayer[i % spawnPlayer.Count].transform.position;
            p.transform.rotation = spawnPlayer[i % spawnPlayer.Count].transform.rotation;
            //elimino la  possibilita' di uscire da qua
            spawnPlayer[i % spawnPlayer.Count].GetComponent <RoomExit>().CloseExit();
            //print(p.transform.position + " " + spawnPlayer[i % spawnPlayer.Length].transform.position);
            float minDistance = 80000f;
            int   closestDoor = 0;
            for (j = 0; j < doors.Count; j++)
            {
                if (Vector3.Distance(p.transform.position, doors[j].transform.position) < minDistance)
                {
                    minDistance = Vector3.Distance(p.transform.position, doors[j].transform.position);
                    closestDoor = j;
                }
            }
            doors[closestDoor].Block();
            i++;
            p.EnableAgent(true);
        }

        roomLoaded.Raise();
        //Debug.Log("Number of monsters: " + monsters.Count + " " + GameObject.FindGameObjectsWithTag("Monster").Length);
    }