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.

80 lines
2.4 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. 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. UnityEngine.SceneManagement.SceneManager.LoadScene(ClientManager.LobbyScene);
  51. }
  52. private void StartGame(NetworkMessage msg)
  53. {
  54. PlayersManager.Instance.LocalPlayer.GetComponent<LocalPlayer>().enabled = true;
  55. UnityEngine.SceneManagement.SceneManager.LoadScene(ClientManager.GameScene);
  56. }
  57. private void SetSeed(NetworkMessage msg)
  58. {
  59. longMsg longMsg;
  60. if (!Utility.ReadMessage<longMsg>(msg, out longMsg))
  61. return;
  62. Random.InitState((int)longMsg.Long);
  63. }
  64. }
  65. }