Exemplo n.º 1
0
 public override void OnReceivedRoomListUpdate()
 {
     if (OnRoomListUpdate != null)
     {
         OnRoomListUpdate.Invoke();
     }
 }
        void ILANRPCMethodClient.updateDiscoverRoom(LobbyRoomData roomData)
        {
            log?.logTrace(name + "收到更新房间消息");
            roomData.SetIP(unconnectedInvokeIP.Address.ToString());
            _lanRooms[roomData.RoomID] = roomData;

            OnRoomListUpdate?.Invoke(_lanRooms);
        }
        void ILANRPCMethodClient.addDiscoverRoom(LobbyRoomData room)
        {
            log?.logTrace($"收到 {unconnectedInvokeIP} 创建/发送房间消息,房间: {room}");
            room.SetIP(unconnectedInvokeIP.Address.ToString());
            _lanRooms[room.RoomID] = room;

            OnRoomListUpdate?.Invoke(_lanRooms);
        }
        void ILANRPCMethodClient.removeDiscoverRoom(string roomID)
        {
            log?.logTrace(name + "收到删除房间消息");
            if (_lanRooms.ContainsKey(roomID))
            {
                _lanRooms.Remove(roomID);
            }

            OnRoomListUpdate?.Invoke(_lanRooms);
        }
        /// <summary>
        /// 获取当前服务器的房间信息
        /// </summary>
        /// <returns></returns>
        public async override Task RefreshRoomList()
        {
            var roomInfos = await serverClient.GetRoomInfosAsync();

            lobby.Clear();
            foreach (var item in roomInfos)
            {
                lobby[item.RoomID] = item;
            }
            OnRoomListUpdate?.Invoke(lobby);
        }