public void OnClickMatchmaking()
    {
        if (PhotonNetwork.connectedAndReady)
        {
            //Filter for Gamemodes
            //Room Player count will be ignored
            Hashtable expectedProperties = new Hashtable()
            {
                { RoomProperties.Gamemode, m_pickedMode }
            };

            m_matchmakingInfo.text = "looking for match...";
            //If the operation got queued and will be sent - returns true
            if (PhotonNetwork.GetRoomList().Length > 0)
            {
                PhotonNetwork.JoinRandomRoom(expectedProperties, 0);
                MapDatabase.LoadMap(m_waitingRoom);
            }
            else
            {
                m_matchmakingInfo.text = "No Open Room found.";
            }
        }
        else
        {
            m_matchmakingInfo.text = "Not Connected.";
        }
    }
示例#2
0
    void OnClickCreateRoom()
    {
        Mode parsedEnum = (Mode)System.Enum.Parse(typeof(Mode), gameMode.options[gameMode.value].text);

        int m_maxPlayer = 1;

        switch (parsedEnum)
        {
        case Mode.DeatchMatch:
            m_maxPlayer = System.Convert.ToInt32(playercount.options[playercount.value].text);
            break;

        case Mode.TeamDeathMatch:
            m_maxPlayer = System.Convert.ToInt32(playercount.options[playercount.value].text) * 2;
            break;
        }

        PhotonNetwork.automaticallySyncScene = true;

        //Create a new Hashtable and store room Properties
        Hashtable m_customRoomOption = new Hashtable()
        {
            { RoomProperties.Map, m_pickedMap.GetMapName },
            { RoomProperties.Gamemode, parsedEnum },
        };
        //set Room Options and store the properties in it
        //To get/set properties in the Looby set CustomRoomPropertiesForLobby
        RoomOptions m_roomOptions = new RoomOptions()
        {
            IsVisible  = true,
            IsOpen     = true,
            MaxPlayers = (byte)m_maxPlayer,
            CustomRoomPropertiesForLobby = new string[] { RoomProperties.Map, RoomProperties.Gamemode, RoomProperties.Ping },
            CustomRoomProperties         = m_customRoomOption,
        };

        List <RoomInfo> roomInfo = new List <RoomInfo>();

        roomInfo.AddRange(PhotonNetwork.GetRoomList());
        var    doubleRoom  = roomInfo.Find(x => x.Name == roomNameField.text);
        string newRoomName = roomNameField.text + "#" + Random.Range(0, 999);

        if (doubleRoom == null)
        {
            if (PhotonNetwork.CreateRoom(newRoomName, m_roomOptions, TypedLobby.Default))
            {
                MapDatabase.LoadMap(waitingRoom);
            }
        }
        else
        {
            newRoomName = roomNameField.text + "#" + Random.Range(0, 999);
            if (PhotonNetwork.CreateRoom(newRoomName, m_roomOptions, TypedLobby.Default))
            {
                MapDatabase.LoadMap(waitingRoom);
            }
        }
    }
 void OnClickJoinRoom(string roomName, RoomInfo roomInfo)
 {
     if (PhotonNetwork.JoinRoom(roomName))
     {
         MapDatabase.LoadMap(waitingRoom);
     }
     else
     {
         print("Join room failed");
     }
 }
示例#4
0
    void LoadPickedMap()
    {
        if (m_mapLoaded)
        {
            return;
        }

        if (PhotonNetwork.player.IsLocal)
        {
            PhotonNetwork.DestroyPlayerObjects(PhotonNetwork.player);
        }

        PhotonNetwork.isMessageQueueRunning = false;

        MapDatabase.LoadMap(m_roomMap);
        m_mapLoaded = true;
    }
示例#5
0
 void LeaveCurrentRoom()
 {
     PhotonNetwork.LeaveRoom();                      //only leave the Room no need to disconect
     MapDatabase.LoadMap(m_lobby);                   //go back to lobby
     Destroy(m_ddols);                               //destroy all ddols
 }