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.

87 lines
2.5 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(PlayerMsgID.Lobby, StartLobby);
  21. ClientManager.Client.RegisterHandler(PlayerMsgID.GameStart, StartGame);
  22. ClientManager.Client.RegisterHandler(LoginMsgID.Seed, SetSeed);
  23. }
  24. private void OnConnected(NetworkMessage msg)
  25. {
  26. ClientManager.IsConnected = true;
  27. Debug.Log("Successfully connected to server");
  28. }
  29. private void OnDisconnected(NetworkMessage msg)
  30. {
  31. ClientManager.IsConnected = false;
  32. Debug.Log("Disconnected from Server");
  33. }
  34. private void OnRecieveID(NetworkMessage msg)
  35. {
  36. PlayerMsg playerMsg;
  37. if (!Utility.ReadMessage<PlayerMsg>(msg, out playerMsg))
  38. return;
  39. Debug.Log("Recieved ID from server: " + playerMsg.ID);
  40. ClientManager.ID = playerMsg.ID;
  41. ClientManager.SendMessage(LoginMsgID.Name, new StringMsg(ClientManager.ID, ClientManager.Name));
  42. StartLobby();
  43. }
  44. private void StartLobby(NetworkMessage msg)
  45. {
  46. StartLobby();
  47. }
  48. private void StartLobby()
  49. {
  50. if (PlayersManager.Instance != null)
  51. PlayersManager.Instance.DestroyPlayers();
  52. UnityEngine.SceneManagement.SceneManager.LoadScene(ClientManager.LobbyScene);
  53. }
  54. private void StartGame(NetworkMessage msg)
  55. {
  56. PlayersManager.Instance.InstantiatePlayers();
  57. UnityEngine.SceneManagement.SceneManager.LoadScene(ClientManager.GameScene);
  58. }
  59. private void SetSeed(NetworkMessage msg)
  60. {
  61. longMsg longMsg;
  62. if (!Utility.ReadMessage<longMsg>(msg, out longMsg))
  63. return;
  64. Random.InitState((int)longMsg.Long);
  65. }
  66. }
  67. }