示例#1
0
    void SpawnRooms(Dictionary <Vector2Int, Room> room_dict)
    {
        positions_to_rooms = new Dictionary <Vector2Int, Room>();
        foreach (Vector2Int v in room_dict.Keys)
        {
            Room new_room = Instantiate(room_dict[v], new Vector3(v.x * room_width, v.y * room_height, 0), Quaternion.identity);
            new_room.grid_position = v;
            new_room.SetSize(room_width, room_height);
            adjacent_rooms.Add(new_room, new List <Room>());
            foreach (Vector2Int pos in new_room.template.GetCoordinateList())
            {
                positions_to_rooms.Add(pos + v, new_room);
                new_room.template.GetBlock(pos).DisablePathway();
            }
            new_room.LoadTileSet(ts);
            new_room.SpawnRandomRoomset();
            if (new_room as BossRoom != null)
            {
                boss_room = new_room as BossRoom;
            }
            else
            {
                rooms.Add(new_room);
            }
        }

        item_pool.Shuffle();
        List <Room> can_spawn_item = new List <Room>(rooms);
        int         target_items   = 3;

        while (can_spawn_item.Count > 0 && target_items > 0)
        {
            can_spawn_item.Shuffle();
            ItemSpawner item_spawn = can_spawn_item[0].GetComponentInChildren <ItemSpawner>();
            if (item_spawn == null)
            {
                can_spawn_item.RemoveAt(0);
            }
            else
            {
                item_spawn.SpawnItemChest().SetSpawnItem(item_pool[0]);
                item_pool.RemoveAt(0);
                target_items--;
                can_spawn_item.RemoveAt(0);
            }
        }

        if (boss_room.reward)
        {
            boss_room.reward.SpawnItemChest().SetSpawnItem(item_pool[0]);
            item_pool.RemoveAt(0);
        }
        foreach (Room r in rooms)
        {
            foreach (ItemSpawner ispawn in r.GetComponentsInChildren <ItemSpawner>())
            {
                Destroy(ispawn.gameObject);
            }
        }
    }