Example #1
0
            internal async Task RunAsync()
            {
                var sw = System.Diagnostics.Stopwatch.StartNew();

                while (Connected.Count == 0)
                {
                    await Task.Delay(10);

                    if (sw.Elapsed.TotalSeconds > 10)
                    {
                        Assert.Fail("Client Took Too Long To Connect");
                        break;
                    }
                }

                await Task.Delay(1000);

                var singleClient = Connected.First();

                singleClient.SendMessage("Hey?");
                await Task.Delay(100);

                singleClient.SendMessage("Anyone?");
                await Task.Delay(100);

                singleClient.SendMessage("What's this?");
                await Task.Delay(100);

                singleClient.SendMessage("What's your status?");
                await Task.Delay(10);

                singleClient.SendMessage("Greetings!!??");
                await Task.Delay(100);

                singleClient.SendMessage("Hello Client!?");

                sw = System.Diagnostics.Stopwatch.StartNew();

                Console.WriteLine($"Socket: Listening");

                while (Connected.Contains(singleClient))
                {
                    Receive();
                    await Task.Delay(100);

                    if (sw.Elapsed.TotalSeconds > 5)
                    {
                        Console.WriteLine("Socket: This all took too long - throwing an exception");
                        Assert.Fail("Socket Took Too Long");
                        break;
                    }
                }

                Console.WriteLine($"Socket: Closing connection because {Connected.Count()} Connected");

                await Task.Delay(1000);

                Close();
            }
            internal async Task RunAsync()
            {
                var sw = System.Diagnostics.Stopwatch.StartNew();

                while (Connected.Count == 0)
                {
                    await Task.Delay(10);

                    if (sw.Elapsed.TotalSeconds > 5)
                    {
                        Assert.Fail("Client Took Too Long To Connect");
                        break;
                    }
                }

                await Task.Delay(1000);

                var singleClient = Connected.First();

                singleClient.SendMessage("Hey?");
                await Task.Delay(100);

                singleClient.SendMessage("Anyone?");
                await Task.Delay(100);

                singleClient.SendMessage("What's this?");
                await Task.Delay(100);

                singleClient.SendMessage("What's your status?");
                await Task.Delay(10);

                singleClient.SendMessage("Greetings!!??");
                await Task.Delay(100);

                singleClient.SendMessage("Hello Client!?");

                sw = System.Diagnostics.Stopwatch.StartNew();

                while (Connected.Contains(singleClient))
                {
                    Receive();
                    await Task.Delay(100);

                    if (sw.Elapsed.TotalSeconds > 10)
                    {
                        Assert.Fail("Socket Took Too Long");
                        break;
                    }
                }

                await Task.Delay(1000);

                Close();
            }
Example #3
0
        private void Connect()
        {
            if (X - 1 >= 0 && !Connected.Contains(GameEngine.Puzzle[X - 1, Y]))
            {
                if (GameEngine.Puzzle[X - 1, Y].transform.eulerAngles.z == transform.eulerAngles.z && Vector3.Distance(GameEngine.Puzzle[X - 1, Y].transform.position,
                                                                                                                       transform.position + Quaternion.Euler(transform.eulerAngles) * new Vector3(-Settings.PuzzleShift, 0)) < 0.15f)
                {
                    Connected.Add(GameEngine.Puzzle[X - 1, Y]);
                    GameEngine.Puzzle[X - 1, Y].Connected.Add(this);
                }
            }

            if (X + 1 < GameEngine.W && !Connected.Contains(GameEngine.Puzzle[X + 1, Y]))
            {
                if (GameEngine.Puzzle[X + 1, Y].transform.eulerAngles.z == transform.eulerAngles.z && Vector3.Distance(GameEngine.Puzzle[X + 1, Y].transform.position,
                                                                                                                       transform.position + Quaternion.Euler(transform.eulerAngles) * new Vector3(Settings.PuzzleShift, 0)) < 0.15f)
                {
                    Connected.Add(GameEngine.Puzzle[X + 1, Y]);
                    GameEngine.Puzzle[X + 1, Y].Connected.Add(this);
                }
            }

            if (Y - 1 >= 0 && !Connected.Contains(GameEngine.Puzzle[X, Y - 1]))
            {
                if (GameEngine.Puzzle[X, Y - 1].transform.eulerAngles.z == transform.eulerAngles.z && Vector3.Distance(GameEngine.Puzzle[X, Y - 1].transform.position,
                                                                                                                       transform.position + Quaternion.Euler(transform.eulerAngles) * new Vector3(0, -Settings.PuzzleShift)) < 0.15f)
                {
                    Connected.Add(GameEngine.Puzzle[X, Y - 1]);
                    GameEngine.Puzzle[X, Y - 1].Connected.Add(this);
                }
            }

            if (Y + 1 < GameEngine.H && !Connected.Contains(GameEngine.Puzzle[X, Y + 1]))
            {
                if (GameEngine.Puzzle[X, Y + 1].transform.eulerAngles.z == transform.eulerAngles.z && Vector3.Distance(GameEngine.Puzzle[X, Y + 1].transform.position,
                                                                                                                       transform.position + Quaternion.Euler(transform.eulerAngles) * new Vector3(0, Settings.PuzzleShift)) < 0.15f)
                {
                    Connected.Add(GameEngine.Puzzle[X, Y + 1]);
                    GameEngine.Puzzle[X, Y + 1].Connected.Add(this);
                }
            }

            IsRecu = true;
            foreach (Puzzle p in Connected)
            {
                if (!p.IsRecu)
                {
                    p.Connect();
                }
            }
        }