public static void server_OnPlayerLeave(this RoomServer roomServer, DuelServer server, string name, string room) { if (server != null && string.IsNullOrEmpty(room)) { lock (server.AsyncLock) { server.Count--; } } if (string.IsNullOrEmpty(name)) { return; } lock (roomServer.Clients) { Session player = null; if (roomServer.Clients.TryGetValue(name, out player)) { player.RoomName = null; } } using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.PlayerLeave); writer.Write(server == null ? 0 : server.Port); writer.WriteUnicode(name, 20); writer.WriteUnicode(room, 20); roomServer.SendAll(writer.Content); } }
public static void OnChatMessage(this RoomServer roomServer, string name, string toname, string msg) { using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.OnChat); writer.Write((short)0x11); writer.WriteUnicode(name + ":" + msg); if (string.IsNullOrEmpty(toname)) { Logger.Debug("send to client"); roomServer.SendAllClient(writer.Content, name: name); } } using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.Chat); writer.WriteUnicode(name, 20); writer.WriteUnicode(toname, 20); writer.WriteUnicode(msg, msg.Length + 1); if (!string.IsNullOrEmpty(toname)) { lock (roomServer.Clients) { Session sender = null; if (roomServer.Clients.TryGetValue(name, out sender)) { sender.Send(writer.Content, true); } else { #if DEBUG Console.WriteLine("no find " + name); #endif } if (name != toname) { Session recevicer = null; if (roomServer.Clients.TryGetValue(toname, out recevicer)) { recevicer.Send(writer.Content, true); } else { if (sender != null) { sender.SendError("[err]" + toname + " Not online。"); } #if DEBUG Console.WriteLine("no find " + toname); #endif } } } } else { roomServer.SendAll(writer.Content, true, true); } } }
public static void OnServerStop(this RoomServer roomServer) { using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.ServerStop); roomServer.SendAll(writer.Content); } }
public static void OnError(this RoomServer roomServer, string err) { using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.Error); writer.WriteUnicode(err, err.Length + 1); roomServer.SendAll(writer.Content); } }
public static void server_OnRoomClose(this RoomServer roomServer, DuelServer server, string name) { using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.RoomClose); writer.Write(server.Port); writer.WriteUnicode(name, 20); roomServer.SendAll(writer.Content); } }
public static void server_OnRoomCreate(this RoomServer roomServer, DuelServer server, string name, string banlist, string gameinfo) { using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.RoomCreate); writer.Write(server.Port); writer.Write(server.NeedAuth); writer.WriteUnicode(name, 20); writer.WriteUnicode(banlist, 20); writer.WriteUnicode(gameinfo, gameinfo.Length + 1); //start duel writer.Write(false); roomServer.SendAll(writer.Content); } }
public static void server_OnPlayerJoin(this RoomServer roomServer, DuelServer server, string name, string room) { if (string.IsNullOrEmpty(name)) { return; } lock (roomServer.Clients) { Session player = null; if (roomServer.Clients.TryGetValue(name, out player)) { player.RoomName = room; } } using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.PlayerEnter); writer.Write(server.Port); writer.WriteUnicode(name, 20); writer.WriteUnicode(room, 20); roomServer.SendAll(writer.Content); } }