public static void OnSendServerInfo(this RoomServer roomServer, Session session) { using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.Info); writer.Write(roomServer.GetChatPort()); DuelServer srv = roomServer.GetMinServer(); lock (srv.AsyncLock) { srv.Count++; } if (srv != null) { session.ServerInfo = srv; writer.Write(srv.Port); writer.Write(srv.NeedAuth); } else { writer.Write(0); writer.Write((byte)0); } writer.WriteUnicode(session.Token, 32); session.Send(writer.Content); } }
public void PrintServer(int index = -1) { lock (DuelServers) { if (index >= 0) { if (index < DuelServers.Count) { DuelServer srv = DuelServers[index]; Console.WriteLine(">>" + index + ":" + srv.ToString()); } else { Console.WriteLine(">>" + index + ":null"); } } else { Console.WriteLine(">>" + DuelServers.Count); int i = 0; foreach (DuelServer srv in DuelServers) { Console.WriteLine(">>" + (i++) + ":" + srv.ToString()); } } } }
public static void OnServerClose(this RoomServer roomServer, DuelServer server) { using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.ServerClose); writer.Write(server.Port); DuelServer srv = roomServer.GetMinServer(); lock (srv.AsyncLock) { srv.Count = 0; } if (srv != null) { //特殊处理 writer.Write(srv.Port); writer.Write(srv.NeedAuth); //session.ServerInfo = srv; lock (roomServer.Clients) { foreach (Session client in roomServer.Clients.Values) { if (client.ServerInfo != null && client.ServerInfo.Port == server.Port) { client.ServerInfo = srv; client.Send(writer.Content); } } } } } }
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 OnServerClose(this RoomServer roomServer, DuelServer server) { using (PacketWriter writer = new PacketWriter(2)) { writer.Write((byte)RoomMessage.ServerClose); writer.Write(server.Port); DuelServer srv = roomServer.GetMinServer(); lock (srv.AsyncLock) { srv.Count = 0; } if (srv != null) { //Special handling writer.Write(srv.Port); writer.Write(srv.NeedAuth); //session.ServerInfo = srv; lock (roomServer.Clients) { foreach (Session client in roomServer.Clients.Values) { if (client.ServerInfo != null && client.ServerInfo.Port == server.Port) { client.ServerInfo = srv; client.Send(writer.Content); } } } } } }
private static void OnInfo(DuelServer server, PacketReader packet) { int Port = packet.ReadInt32(); bool NeedAuth = packet.ReadBoolean(); server.Init(Port, NeedAuth); Logger.Info("duel server port=" + Port + ",needauth=" + NeedAuth); }
public static void Handler(DuelServer session, List<PacketReader> packets){ foreach(PacketReader packet in packets){ // Parse(player, packet); ushort id = packet.ReadByte(); //if(RoomMessage.IsDefined(typeof(RoomMessage), id)){ EventHandler.Do(id, session, packet); packet.Close(); //} } }
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); } }
private static void OnPlayerEnter(DuelServer server, PacketReader packet) { Logger.Debug("OnPlayerEnter:" + server.Port); string name = packet.ReadUnicode(20); string room = packet.ReadUnicode(20); if (server.Server != null) { server.Server.server_OnPlayerJoin(server, name, room); } }
public static void Handler(DuelServer session, List <PacketReader> packets) { foreach (PacketReader packet in packets) { // Parse(player, packet); ushort id = packet.ReadByte(); //if(RoomMessage.IsDefined(typeof(RoomMessage), id)){ EventHandler.Do(id, session, packet); packet.Close(); //} } }
private static void OnRoomStart(DuelServer server, PacketReader packet){ string name = packet.ReadUnicode(20); Logger.Debug("OnRoomStart:"+server.Port+","+name); lock(server.Rooms){ GameConfig cfg = null; if(server.Rooms.TryGetValue(name, out cfg)){ cfg.IsStart = true; }else{ Logger.Warn("no start room:"+name+" form "+server.Port); } } if(server.Server!=null) server.Server.server_OnRoomStart(server, name); }
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); } }
private static void OnRoomClose(DuelServer server, PacketReader packet) { string name = packet.ReadUnicode(20); Logger.Debug("OnRoomClose:" + server.Port + "," + name); lock (server.Rooms){ if (name == null || !server.Rooms.Remove(name)) { Logger.Warn("no close room:" + name + " form " + server.Port); } } if (server.Server != null) { server.Server.server_OnRoomClose(server, name); } }
private static void OnRoomCreate(DuelServer server, PacketReader packet){ string name = packet.ReadUnicode(20); string info = packet.ReadUnicode(20); string banlist=packet.ReadUnicode(50); GameConfig config=new GameConfig(); config.RoomString = info; config.Parse(info); config.Name=name; config.BanList=banlist; Logger.Debug("OnRoomCreate:"+server.Port+","+name+"|"+info); lock(server.Rooms){ server.Rooms[name] = config; } if (server.Server != null) { server.Server.server_OnRoomCreate(server, name, banlist, info); } }
private void ApiListener_OnConnect(Connection <DuelServer> Client) { if (Client == null) { return; } if (!IsListening) { Client.Close(); return; } DuelServer server = new DuelServer(this, Client); Client.Tag = server; lock (DuelServers) { DuelServers.Add(server); } Logger.Debug("duel server connected."); }
private static void OnRoomStart(DuelServer server, PacketReader packet) { string name = packet.ReadUnicode(20); Logger.Debug("OnRoomStart:" + server.Port + "," + name); lock (server.Rooms){ GameConfig cfg = null; if (server.Rooms.TryGetValue(name, out cfg)) { cfg.IsStart = true; } else { Logger.Warn("no start room:" + name + " form " + server.Port); } } if (server.Server != null) { server.Server.server_OnRoomStart(server, name); } }
private static void OnRoomCreate(DuelServer server, PacketReader packet) { string name = packet.ReadUnicode(20); string info = packet.ReadUnicode(20); string banlist = packet.ReadUnicode(50); GameConfig config = new GameConfig(); config.RoomString = info; config.Parse(info); config.Name = name; config.BanList = banlist; Logger.Debug("OnRoomCreate:" + server.Port + "," + name + "|" + info); lock (server.Rooms){ server.Rooms[name] = config; } if (server.Server != null) { server.Server.server_OnRoomCreate(server, name, banlist, info); } }
private static void On302(Session session, PacketReader packet) { session.LobbyError("This is the chat room port"); DuelServer srv = session.Server.GetMinServer(); session.SendMessage("It's chat ports and say a Word, and all chats。"); session.SendMessage("Your short passwords are:" + session.Token + " (User name:" + session.Name + "$" + session.Token + ")"); if (srv != null && srv.Port > 0) { session.SendMessage("Recommended game port:" + srv.Port); } List <int> ports = session.Server.GetAllPorts(); string msg = "All the game port:"; foreach (int p in ports) { msg += p + ","; } session.SendMessage(msg); // session.Close(); }
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); } }
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 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); } }
private static void OnPlayerEnter(DuelServer server, PacketReader packet){ Logger.Debug("OnPlayerEnter:"+server.Port); string name = packet.ReadUnicode(20); string room = packet.ReadUnicode(20); if(server.Server!=null) server.Server.server_OnPlayerJoin(server, name, room); }
private static void OnInfo(DuelServer server, PacketReader packet){ int Port = packet.ReadInt32(); bool NeedAuth = packet.ReadBoolean(); server.Init(Port, NeedAuth); Logger.Info("duel server port="+Port+",needauth="+NeedAuth); }
private static void OnRoomClose(DuelServer server, PacketReader packet){ string name = packet.ReadUnicode(20); Logger.Debug("OnRoomClose:"+server.Port+","+name); lock(server.Rooms){ if(name == null || !server.Rooms.Remove(name)){ Logger.Warn("no close room:"+name+" form "+server.Port); } } if(server.Server!=null) server.Server.server_OnRoomClose(server, name); }
private void ApiListener_OnConnect(Connection<DuelServer> Client) { if (Client == null) return; if (!IsListening) { Client.Close(); return; } DuelServer server = new DuelServer(this, Client); Client.Tag = server; lock (DuelServers) { DuelServers.Add(server); } Logger.Debug("duel server connected."); }