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());
             }
         }
     }
 }
Ejemplo n.º 3
0
 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);
        }
Ejemplo n.º 7
0
		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();
         //}
     }
 }
Ejemplo n.º 11
0
		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);
            }
        }
Ejemplo n.º 14
0
		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);
            }
        }
Ejemplo n.º 18
0
        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);
     }
 }
Ejemplo n.º 20
0
        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);
            }
        }
Ejemplo n.º 21
0
 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);
     }
 }
Ejemplo n.º 22
0
		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);
		}
Ejemplo n.º 23
0
		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);
		}
Ejemplo n.º 24
0
		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);
		}
Ejemplo n.º 25
0
 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);
     }
 }
Ejemplo n.º 26
0
 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.");
 }
Ejemplo n.º 27
0
 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);
     }
 }