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.

69 lines
2.0 KiB

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Networking;
  5. namespace Multiplayer
  6. {
  7. public class ClientLoginManager
  8. {
  9. private ClientManager ClientManager;
  10. public ClientLoginManager(ClientManager ClientManager)
  11. {
  12. this.ClientManager = ClientManager;
  13. RegisterHandlers();
  14. }
  15. private void RegisterHandlers()
  16. {
  17. ClientManager.Client.RegisterHandler(MsgType.Connect, OnConnected);
  18. ClientManager.Client.RegisterHandler(MsgType.Disconnect, OnDisconnected);
  19. ClientManager.Client.RegisterHandler(LoginMsgID.QueryName, OnRecieveID);
  20. ClientManager.Client.RegisterHandler(LoginMsgID.EnterLobby, StartLobby);
  21. ClientManager.Client.RegisterHandler(PlayerMsgID.GameStart, StartGame);
  22. }
  23. private void OnConnected(NetworkMessage msg)
  24. {
  25. ClientManager.IsConnected = true;
  26. Debug.Log("Successfully connected to server");
  27. }
  28. private void OnDisconnected(NetworkMessage msg)
  29. {
  30. ClientManager.IsConnected = false;
  31. Debug.Log("Disconnected from Server");
  32. }
  33. private void OnRecieveID(NetworkMessage msg)
  34. {
  35. PlayerMsg playerMsg;
  36. if (!Utility.ReadMessage<PlayerMsg>(msg, out playerMsg))
  37. return;
  38. Debug.Log("Recieved ID from server: " + playerMsg.ID);
  39. ClientManager.ID = playerMsg.ID;
  40. ClientManager.SendMessage(LoginMsgID.Name, new StringMsg(ClientManager.ID, ClientManager.Name));
  41. StartLobby();
  42. }
  43. private void StartLobby(NetworkMessage msg)
  44. {
  45. StartLobby();
  46. }
  47. private void StartLobby()
  48. {
  49. UnityEngine.SceneManagement.SceneManager.LoadScene(ClientManager.LobbyScene);
  50. }
  51. private void StartGame(NetworkMessage msg)
  52. {
  53. UnityEngine.SceneManagement.SceneManager.LoadScene(ClientManager.GameScene);
  54. }
  55. }
  56. }