internal void AddRoom(Room room) { _rooms[room.Guid] = room; try { RoomAdded?.Invoke(room); } catch (Exception e) { Debug.LogException(e); } //tell all rooms about this room var msg = GetMessage(room.RoomId.Length * 2 + 18); msg.Write(RpcUtils.GetHeader(ReliabilityMode.Ordered, BroadcastMode.Server, MsgType.Internal)); msg.Write(DandRRpcs.RoomAdd); msg.Write(room.RoomId); msg.Write(room.Guid); room.SendMessageToOthers(msg, ReliabilityMode.Ordered); //tell this room about all other rooms msg = GetMessage(1000); // f**k if I know msg.Write(RpcUtils.GetHeader(ReliabilityMode.Ordered, BroadcastMode.Server, MsgType.Internal)); msg.Write(DandRRpcs.RoomAdd); foreach (var r in _rooms.ToArray()) { msg.Write(r.Value.RoomId); msg.Write(r.Value.Guid); } room.SendMessage(msg, ReliabilityMode.Ordered); }
void UpdateRoomsOfNewRoom(Room room) { //tell all rooms about this room var msg = GetMessage(room.RoomId.Length * 2 + 18); msg.Write(RpcUtils.GetHeader(ReliabilityMode.Ordered, BroadcastMode.Server, MsgType.Internal)); msg.Write(DandRRpcs.RoomAdd); msg.Write(room.RoomId); msg.Write(room.Guid); room.SendMessageToOthers(msg, ReliabilityMode.Ordered); //tell this room about all other rooms msg = GetMessage(1000); // f**k if I know msg.Write(RpcUtils.GetHeader(ReliabilityMode.Ordered, BroadcastMode.Server, MsgType.Internal)); msg.Write(DandRRpcs.RoomAdd); foreach (var r in _rooms.ToArray()) { msg.Write(r.Value.RoomId); msg.Write(r.Value.Guid); } room.SendMessage(msg, ReliabilityMode.Ordered); }