Esempio n. 1
0
        public void Run(string[] args)
        {
            _engine.ServerMessageRecieved +=
                (o, receivedArgs) => {
                if (receivedArgs != null)
                {
                    EngineServerMessageRecieved(receivedArgs);
                }
            };

            _engine.LoginResponseReceived +=
                (o, eventArgs) => {
                if (eventArgs != null)
                {
                    EngineLoginResponseReceived(eventArgs);
                }
            };

            _engine.GetRoomVariableResponseRecieved +=
                (o, responseArgs) => {
                if (responseArgs != null)
                {
                    engine_GetRoomVariableResponseRecieved(responseArgs);
                }
            };

            _engine.JoinRoom += (o, eventArgs) => { if (eventArgs != null)
                                                    {
                                                        EngineJoinRoom(eventArgs);
                                                    }
            };

            _server.ConnectionResponse +=
                (o, eventArgs) => {
                if (eventArgs != null)
                {
                    ServerConnectionResponse(eventArgs);
                }
            };

            _engine.AddServer(_server);

            Console.WriteLine("Connecting to server...");

            while (!_connectionSuccessful)
            {
                _server.Connect("127.0.0.1", 4000);
                _connectedReceivedEvent.WaitOne(-1);

                if (_connectionSuccessful)
                {
                    continue;
                }
                Console.WriteLine("Could not connect to server.  Retrying in 5 seconds.");
                Thread.Sleep(5000);
            }

            bool success;

            do
            {
                Console.Write("Enter your user name: ");
                _userName = Console.ReadLine();

                Console.WriteLine("Logging in...");
                Login(_userName);

                _loginReceievedEvent.WaitOne(-1);

                Interlocked.Read(ref _loginState);
                success = _loginState == 1;

                // wait until we got a login success
            } while (!success);


            bool quitFlag = false;

            DisplayMenu();
            do
            {
                ConsoleKeyInfo keyinfo = Console.ReadKey(true);

                switch (keyinfo.Key)
                {
                case ConsoleKey.R:
                    Console.Write("Room Name: ");
                    JoinRoom(Console.ReadLine(), "");
                    break;

                //case ConsoleKey.L:
                //    ListUsersInRoom();
                //    break;

                case ConsoleKey.X:
                    Console.Write("Room: ");
                    string room = Console.ReadLine();

                    Console.WriteLine();
                    Console.Write("Name: ");
                    string varname = Console.ReadLine();
                    GetRoomVariableRequest(room, varname);

                    break;


                case ConsoleKey.V:
                    CreateRoomVariable();
                    break;

                case ConsoleKey.Q:
                    quitFlag = true;
                    break;
                }

                if (!quitFlag)
                {
                    DisplayMenu();
                }
            } while (!quitFlag);

            // stop engine and disconnect all servers
            _engine.StopEngine();
        }