Beispiel #1
0
        public void Show(GameClient client, IPEndPoint ep)
        {
            buffer.SetCursorPosition(10, 3);
            buffer.ForegroundColor = ConsoleColor.Gray;
            buffer.InsertBuffer(headline, 26, 4);
            string ip = ep.Address.ToString();

            buffer.SetCursorPosition((80 - ip.Length) / 2, 8);
            buffer.Write(ip);
            buffer.DrawSelf();

            Console.SetCursorPosition(26, 12);
            Console.ForegroundColor = SelectedColor;
            Console.Write(pretoken);
            Console.ResetColor();
            Console.BackgroundColor = SelectedColor;
            Console.Write("Cancel");
            Console.ResetColor();

            client.Connect(ep);



            long starttime = Program.Time;

            while (true)
            {
                double        time   = Program.Time / 120.0;
                ConsoleBuffer slider = new ConsoleBuffer(headline.Width, 1);
                //slider.BackgroundColor = ConsoleColor.DarkBlue;
                slider.Clear();

                string s = "██████";
                slider.DrawText(s, (int)(0.55 * Math.Sin(time) * slider.Width + 0.5 * slider.Width) - s.Length / 2, 0, this.SelectedColor, ConsoleColor.Black);

                slider.DrawText(" ", 0, 0, ConsoleColor.Black, ConsoleColor.White);
                slider.DrawText(" ", slider.Width - 1, 0, ConsoleColor.Black, ConsoleColor.White);
                slider.DrawSelf(26, 10);
                Thread.Sleep(20);

                if (Console.KeyAvailable)
                {
                    if (Console.ReadKey(true).Key == ConsoleKey.Enter)
                    {
                        client.Close();
                        return;
                    }
                }

                if (client.Connected)
                {
                    break;
                }

                if (starttime < Program.Time - 20 * 1000)
                {
                    client.ErrorMessage = "Connection timed out.";
                    break;
                }
            }

            Console.SetCursorPosition(26, 10);
            Console.Write("Connected! Logging in...");
            //buffer.DrawSelf();
            buffer.SetCursorPosition(26, 11);

            // waits for client to finish stuff
            client.Sync();

            if (client.LoggedIn)
            {
                try
                {
                    client.LobbyMenu.Show();
                }
                catch (Exception e)
                {
                    client.ErrorMessage = e.Message;
                }
            }

            if (!(client.LoggedIn && client.Connected))
            {
                Items[0] = proitems1[0] + " " + client.ErrorMessage;
                this.ReadMenu();
            }
            client.Close();
        }
        public void Show()
        {
            client = new GameClient();

            if (File.Exists("player.char"))
            {
                client.Character = PlayerCharacter.ReadFromFile("player.char");
            }

            while (true)
            {
                buffer = new ConsoleBuffer();

                ConsoleColor logo1 = ConsoleColor.Red, logo2 = ConsoleColor.DarkCyan, black = ConsoleColor.Black;

                buffer.Clear();
                buffer.ForegroundColor = logo1;
                buffer.Write("\n" +
                             "              ██░ ██  █    ██  ███▄    █   ▄████ ▓█████  ██▀███  \n" +
                             "             ▓██░ ██▒ ██  ▓██▒ ██ ▀█   █  ██▒ ▀█▒▓█   ▀ ▓██ ▒ ██▒\n" +
                             "             ▒██▀▀██░▓██  ▒██░▓██  ▀█ ██▒▒██░▄▄▄░▒███   ▓██ ░▄█ ▒\n" +
                             "             ░▓█ ░██ ▓▓█  ░██░▓██▒  ▐▌██▒░▓█  ██▓▒▓█  ▄ ▒██▀▀█▄  \n" +
                             "             ░▓█▒░██▓▒▒█████▓ ▒██ ░  ▓██░░▒▓███▀▒░▒████▒░██▓ ▒██▒\n" +
                             "              ▒ ░░▒░▒░▒▓▒ ▒ ▒ ░ ▒ ░  ▒ ▒  ░▒   ▒ ░░ ▒░ ░░ ▒▓ ░▒▓░\n" +
                             "              ▒ ░▒░ ░░░▒░ ░░░ ░ ░ ▒  ░ ▒░  ░   ░  ░ ░  ░  ░▒ ░ ▒░\n" +
                             "              ░  ░░ ░ ░░░ ░ ░    ░░  ░ ░ ░ ░   ░    ░     ░░   ░ \n" +
                             "              ░  ░  ░   ░              ░       ░    ░  ░   ░     \n"
                             );

                if (true)
                {
                    buffer.SetCursorPosition(0, buffer.CursorTop - 3);
                    string online =
                        "                ██████╗ ███╗   ██╗██╗     ██╗███╗   ██╗███████╗\n" +
                        "               ██╔═══██╗████╗  ██║██║     ██║████╗  ██║██╔════╝\n" +
                        "               ██║   ██║██╔██╗ ██║██║     ██║██╔██╗ ██║█████╗  \n" +
                        "               ██║   ██║██║╚██╗██║██║     ██║██║╚██╗██║██╔══╝  \n" +
                        "               ╚██████╔╝██║ ╚████║███████╗██║██║ ╚████║███████╗\n" +
                        "                ╚═════╝ ╚═╝  ╚═══╝╚══════╝╚═╝╚═╝   ╚══╝╚══════╝\n"
                    ;

                    int X = buffer.CursorLeft, Y = buffer.CursorTop;
                    for (int i = 0; i < online.Length; i++)
                    {
                        int x = i % (online.Length / 6) + X, y = i / (online.Length / 6) + Y;
                        ConsoleBuffer.CharInfo ci = buffer[x, y];
                        char overchar             = ' ';
                        if (ci.Char.AsciiChar == ConsoleBuffer.ASCII.IndexOf('░'))
                        {
                            overchar = '▒';
                        }
                        if (ci.Char.AsciiChar == ConsoleBuffer.ASCII.IndexOf('▒'))
                        {
                            overchar = '▓';
                        }


                        char online_char = online[i];
                        if (online_char == '\n')
                        {
                            online_char = ' ';
                        }

                        if (online_char == '█')
                        {
                            buffer.DrawText(overchar.ToString(), x, y, logo1, logo2);
                        }
                        else if (online_char == ' ')
                        {
                            buffer.DrawText(" ", x, y, logo2, black);
                        }
                        else
                        {
                            buffer.DrawText(online_char.ToString(), x, y, logo2, overchar != ' ' ? black : black);
                        }
                    }
                }


                buffer.SetCursorPosition(35, buffer.CursorTop + 7);
                int selected = this.ReadMenu();

                if (selected == 0)
                {
                    GameServer server = new GameServer();
                    server.LoadAssets();
                    new MapPreviewMenu().Show(server, client);
                }
                if (selected == 1)
                {
                    bool      valid  = true;
                    string    result = "";
                    IPAddress ip     = null;
                    int       port   = GameServer.DEFAULT_PORT;
                    InputBox.Show("Enter IP address", ref result);

                    if (result.Contains(':'))
                    {
                        if (int.TryParse(result.Split(':')[1], out port))
                        {
                            result = result.Split(':')[0];
                        }
                        else
                        {
                            valid = false;
                        }
                    }

                    if (IPAddress.TryParse(result, out ip))
                    {
                        IPEndPoint ep = new IPEndPoint(ip, port);
                        new ConnectingMenu().Show(client, ep);
                    }
                    else
                    {
                        valid = false;
                    }

                    if (!valid)
                    {
                        MessageBox.Show("Invalid IP address format.", MessageBox.Buttons.OK);
                    }
                }
                if (selected == 3)
                {
                    new SettingsMenu().Show(client);
                }
                if (selected == Items.Length - 1)
                {
                    ConsoleBuffer.Fullscreen = false;
                    return;
                }
            }
        }