Created
April 26, 2019 04:22
-
-
Save SocketWeaver/68e9e4b2994e84a2f90ebd7e43338413 to your computer and use it in GitHub Desktop.
basic matchmaking logic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using SWNetwork; | |
using UnityEngine.SceneManagement; | |
public class Lobby : MonoBehaviour | |
{ | |
void Start() | |
{ | |
NetworkClient.Lobby.OnRoomReadyEvent += Lobby_OnRoomReadyEvent; | |
NetworkClient.Lobby.OnFailedToStartRoomEvent += Lobby_OnFailedToStartRoomEvent; | |
NetworkClient.Lobby.OnLobbyConncetedEvent += Lobby_OnLobbyConncetedEvent; | |
} | |
void onDestroy() | |
{ | |
NetworkClient.Lobby.OnRoomReadyEvent -= Lobby_OnRoomReadyEvent; | |
NetworkClient.Lobby.OnFailedToStartRoomEvent -= Lobby_OnFailedToStartRoomEvent; | |
NetworkClient.Lobby.OnLobbyConncetedEvent -= Lobby_OnLobbyConncetedEvent; | |
} | |
public void Play() | |
{ | |
NetworkClient.Lobby.JoinOrCreateRoom(true, 2, HandleJoinOrCreatedRoom); | |
} | |
void RegisterPlayer() | |
{ | |
NetworkClient.Lobby.Register((successful, reply, error) => | |
{ | |
if (successful) | |
{ | |
Debug.Log("Registered " + reply); | |
if (reply.started) | |
{ | |
ConnectToRoom(); | |
} | |
} | |
else | |
{ | |
Debug.Log("Failed to register " + error); | |
} | |
}); | |
} | |
void StartRoom() | |
{ | |
NetworkClient.Lobby.StartRoom((okay, error) => | |
{ | |
if (okay) | |
{ | |
Debug.Log("Started room"); | |
} | |
else | |
{ | |
Debug.Log("Failed to start room " + error); | |
} | |
}); | |
} | |
void ConnectToRoom() | |
{ | |
NetworkClient.Instance.ConnectToRoom(HandleConnectedToRoom); | |
} | |
void HandleConnectedToRoom(bool connected) | |
{ | |
if (connected) | |
{ | |
Debug.Log("Connected to room"); | |
SceneManager.LoadScene("game"); | |
} | |
else | |
{ | |
Debug.Log("Failed to connect to room"); | |
} | |
} | |
void HandleJoinOrCreatedRoom(bool successful, SWJoinRoomReply reply, SWLobbyError error) | |
{ | |
if (successful) | |
{ | |
Debug.Log("Joined or created room " + reply); | |
if (reply.started) | |
{ | |
ConnectToRoom(); | |
} | |
else if (NetworkClient.Lobby.IsOwner) | |
{ | |
StartRoom(); | |
} | |
} | |
else | |
{ | |
Debug.Log("Failed to join or create room " + error); | |
} | |
} | |
// Lobby events handlers | |
void Lobby_OnRoomReadyEvent(SWRoomReadyEventData eventData) | |
{ | |
Debug.Log("Room is ready: roomId= " + eventData.roomId); | |
ConnectToRoom(); | |
} | |
void Lobby_OnFailedToStartRoomEvent(SWFailedToStartRoomEventData eventData) | |
{ | |
Debug.Log("Failed to start room: " + eventData); | |
} | |
void Lobby_OnLobbyConncetedEvent() | |
{ | |
Debug.Log("Lobby connected"); | |
RegisterPlayer(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment