You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

88 lines
2.5 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
namespace Multiplayer
{
public class ClientLoginManager
{
private ClientManager ClientManager;
public ClientLoginManager(ClientManager ClientManager)
{
this.ClientManager = ClientManager;
RegisterHandlers();
}
private void RegisterHandlers()
{
ClientManager.Client.RegisterHandler(MsgType.Connect, OnConnected);
ClientManager.Client.RegisterHandler(MsgType.Disconnect, OnDisconnected);
ClientManager.Client.RegisterHandler(LoginMsgID.QueryName, OnRecieveID);
ClientManager.Client.RegisterHandler(PlayerMsgID.Lobby, StartLobby);
ClientManager.Client.RegisterHandler(PlayerMsgID.GameStart, StartGame);
ClientManager.Client.RegisterHandler(LoginMsgID.Seed, SetSeed);
}
private void OnConnected(NetworkMessage msg)
{
ClientManager.IsConnected = true;
Debug.Log("Successfully connected to server");
}
private void OnDisconnected(NetworkMessage msg)
{
ClientManager.IsConnected = false;
Debug.Log("Disconnected from Server");
}
private void OnRecieveID(NetworkMessage msg)
{
PlayerMsg playerMsg;
if (!Utility.ReadMessage<PlayerMsg>(msg, out playerMsg))
return;
Debug.Log("Recieved ID from server: " + playerMsg.ID);
ClientManager.ID = playerMsg.ID;
ClientManager.SendMessage(LoginMsgID.Name, new StringMsg(ClientManager.ID, ClientManager.Name));
StartLobby();
}
private void StartLobby(NetworkMessage msg)
{
StartLobby();
}
private void StartLobby()
{
if (PlayersManager.Instance != null)
PlayersManager.Instance.DestroyPlayers();
UnityEngine.SceneManagement.SceneManager.LoadScene(ClientManager.LobbyScene);
}
private void StartGame(NetworkMessage msg)
{
PlayersManager.Instance.InstantiatePlayers();
UnityEngine.SceneManagement.SceneManager.LoadScene(ClientManager.GameScene);
}
private void SetSeed(NetworkMessage msg)
{
longMsg longMsg;
if (!Utility.ReadMessage<longMsg>(msg, out longMsg))
return;
Random.InitState((int)longMsg.Long);
}
}
}