예제 #1
0
        public static void Main(string[] args)
        {
            ReceiveQueue.Start(PacketHandler.Handle);
            ServerSocket.Start(13338);
            Console.WriteLine($"Server running!");

            var t = new Thread(() =>
            {
                Console.WriteLine($"Heartbeat Thread started.");
                while (true)
                {
                    foreach (var kvp in Collections.Players)
                    {
                        var player = kvp.Value;

                        if (DateTime.Now >= player.LastPing.AddSeconds(1))
                        {
                            Console.WriteLine($"Sending Ping to {player.Name}/{player.Username}.");
                            player.Socket.Send(MsgPing.Create(player.UniqueId));
                            player.LastPing = DateTime.Now;
                        }
                    }

                    Thread.Sleep(1);
                }
            });

            t.Start();
            while (true)
            {
                Console.ReadLine();
            }
        }
 public void ConnectAsync(string ip, ushort port)
 {
     ThreadedConsole.WriteLine("Connecting to Server...");
     ReceiveQueue.Start(OnPacket);
     Socket = new ClientSocket(this);
     Socket.OnDisconnect += Disconnected;
     Socket.OnConnected  += Connected;
     Socket.ConnectAsync(ip, port);
 }
예제 #3
0
        public Task <bool> ConnectAsync(string ip, ushort port)
        {
            Socket = new ClientSocket(this);
            ReceiveQueue.Start(OnPacket);

            var tcs = new TaskCompletionSource <bool>();

            Socket.OnConnected  += () => { tcs?.SetResult(true); };
            Socket.OnDisconnect += () => { tcs?.SetResult(false); };

            Socket.OnDisconnect += Disconnected;
            Socket.OnConnected  += Connected;
            Socket.ConnectAsync(ip, port);
            return(tcs.Task);
        }
예제 #4
0
        public static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
            {
                Debugger.Break();
            };
            Console.Title = "SERVER APP";
            Db.EnsureDb();

            ReceiveQueue.Start(PacketHandler.Handle);
            ServerSocket.Start(65534);
            Console.WriteLine("Online");
            while (true)
            {
                Console.ReadLine();
            }
        }
예제 #5
0
        public static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                BotCount = int.Parse(args[0]);
            }

            ReceiveQueue.Start(PacketHandler.Handle);
            ServerSocket.Start(13338);
            Console.WriteLine("Server running!");

            World.Systems.Add(new GCMonitor(true, false));
            World.Systems.Add(new MoveSystem(true, false));

            for (int i = 0; i < BotCount; i++)
            {
                ref var npc = ref World.CreateEntity(100_000 + i);
                npc.Add(new NetworkComponent(100_000 + i));
                npc.Add <PositionComponent>();
                npc.Add <DestinationComponent>();
                npc.Add(new SpeedComponent(16));
                npc.Add <VelocityComponent>();
                Collections.Npcs.TryAdd(100_000 + i, new Npc(100_000 + i));
            }