MultiDupProxy.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MultiDup;
  7. /// <summary>
  8. /// 相当于控制层, 利用tcp层与服务端进行通讯, 提供数据访问和修改请求.
  9. /// </summary>
  10. internal class MultiDupProxy : MonoSingleton<MultiDupProxy>
  11. {
  12. // 初始化, 离开, 获取大厅/房间数据,
  13. public LobbyInfo Lobby;
  14. /// <summary>
  15. /// 进入大厅
  16. /// </summary>
  17. public void EnterLobby()
  18. {
  19. MultiDupServer.Instance.Init();
  20. }
  21. public Action<SC_MD_BeginDup> OnStartGame;
  22. public Action<LobbyInfo> __On_GetRoomListCallBack;
  23. /// <summary>
  24. /// 拉取房间列表
  25. /// </summary>
  26. /// <param name="callback"></param>
  27. public void GetRoomList(Action<LobbyInfo> callback)
  28. {
  29. var ok = false;
  30. __On_GetRoomListCallBack = callback;
  31. MultiDupServer.Instance.GetRoomList(); // 发送拉取房间列表的请求.
  32. }
  33. // 创建成功的回调
  34. public Action<SC_MD_CreateRoom> __On_CreateRoomCallBack;
  35. /// <summary>
  36. /// 创建房间
  37. /// </summary>
  38. /// <param name="mapid"></param>
  39. /// <param name="callback"></param>
  40. public void CreateRoom(int mapid, Action<SC_MD_CreateRoom> callback)
  41. {
  42. __On_CreateRoomCallBack = callback;
  43. MultiDupServer.Instance.CreateRoom(mapid);
  44. }
  45. // 加入成功的回调
  46. public Action<SC_MD_EnterRoom> __On_EnterRoomCallback;
  47. /// <summary>
  48. /// 进入房间
  49. /// </summary>
  50. /// <param name="roomId"></param>
  51. /// <param name="callback"></param>
  52. public void EnterRoom(int roomId, Action<SC_MD_EnterRoom> callback)
  53. {
  54. __On_EnterRoomCallback = callback;
  55. MultiDupServer.Instance.EnterRoom(roomId);
  56. }
  57. public Action<SC_MD_BeginDup> __OnStartGameCallback;
  58. public void StartGame(Action<SC_MD_BeginDup> callback)
  59. {
  60. __OnStartGameCallback = callback;
  61. MultiDupServer.Instance.StartGame();
  62. }
  63. public void ExitLobby()
  64. {
  65. }
  66. #region 内部类
  67. /// <summary>
  68. /// 大厅信息
  69. /// </summary>
  70. public class LobbyInfo
  71. {
  72. public List<RoomInfo> RoomList = new List<RoomInfo>();
  73. /// <summary>
  74. /// 房间信息
  75. /// </summary>
  76. public class RoomInfo
  77. {
  78. public int RoomId;
  79. public int MapId;
  80. public List<string> PlayerUids = new List<string>();
  81. /// <summary>
  82. /// 服务器地址
  83. /// </summary>
  84. public string BattleServerAddress;
  85. }
  86. }
  87. #endregion
  88. }