Ejemplo n.º 1
0
    /// <summary>
    /// constructor
    /// </summary>
    /// <param name="_width">panel width</param>
    /// <param name="_height">panel height</param>
    public Menu(int _width, int _height) : base(_width, _height)
    {
        this.setBackground("assets/images/background_game.jpg");

        _startGameCommand = new NetworkCommand("G:START", (x) =>
        {
            this.Dispatcher.Invoke(() => { initNone(); lobbyManager.startGame(); });
        }, false, true);

        _onGengreChange = new NetworkCommand("G:GENCHANGE", (x) =>
        {
            this.Dispatcher.Invoke(() => { tb_lobbygenredisplay.Text = x[0]; });
        });

        // game background
        _backgroundGame = new PanelBase(MainWindow.SCREEN_WIDTH, MainWindow.SCREEN_HEIGHT);
        _backgroundGame.setBackground("assets/images/background_menu.png");
        this.Center(UIPlacerMode.center, 0, _backgroundGame);

        // notifications
        _notification = new NotificationHandler();
        this.addChild(_notification);

        // login pannel
        _loginPanel = new LoginPanel(300, 500);
        _loginPanel.setBackground("assets/images/background_panel.png");
        this.Center(UIPlacerMode.center, 0, _loginPanel);
        _loginPanel.rescale();

        _loginPanel.OnLogin += () =>
        {
            b_login.Content     = "Logout";
            tb_namemessage.Text = "You are logedin as " + Account.name;
            this.removeChild(_loginPanel);
        };

        string title = Account.isActivateAccount() ? "Logout" : "login";

        b_login = UIFactory.CreateButton(title, new Thickness(), new Point(100, 30), (x, y) =>
        {
            if (!MemoryDatabase.isConnected())
            {
                MemoryDatabase.reload();
                return;
            }

            if (Account.isActivateAccount())
            {
                Account.logout();
                b_login.Content     = "Login";
                tb_namemessage.Text = "You are logedin as " + Account.name;
                return;
            }

            if (this.Children.Contains(_loginPanel))
            {
                this.removeChild(_loginPanel);
            }
            else
            {
                this.addChild(_loginPanel);
            }
        });
        this.CenterLeft(UIPlacerMode.top, 5, b_login);

        b_highscore = UIFactory.CreateButton("Highscore's", new Thickness(), new Point(70, 30), (x, y) =>
        {
            if (this.Children.Contains(_highscorePanel))
            {
                this.removeChild(_highscorePanel);
            }
            else
            {
                this.addChild(_highscorePanel);
            }
        });
        this.CenterRigth(UIPlacerMode.top, 5, b_highscore);

        // main menu
        tb_namemessage = UIFactory.CreateTextBlock("You are loged in as " + Account.name, new Thickness(), new Point(400, 50), 20);

        tb_ip = UIFactory.CreateTextBox(new Thickness(), new Point(200, 30), 20);

        b_client = UIFactory.CreateButton("Connect To Game", new Thickness(), new Point(200, 50), (x, y) =>
        {
            startGame(false);
        });

        b_host = UIFactory.CreateButton("Host Game", new Thickness(), new Point(200, 50), (x, y) =>
        {
            startGame(true);
        });

        b_quit = UIFactory.CreateButton("Quit", new Thickness(), new Point(200, 50), (x, y) =>
        {
            System.Windows.Application.Current.Shutdown();
        });

        // lobby menu
        tb_lobbyname = UIFactory.CreateTextBlock(Account.name, new Thickness(), new Point(200, 30), 20);

        tb_lobbyscore = UIFactory.CreateTextBlock(string.Format("Wins: {0} / Losses: {1}", Account.score.wins, Account.score.losses), new Thickness(), new Point(200, 30), 20);

        tb_lobbygenredisplay = UIFactory.CreateTextBlock("Waiting for host", new Thickness(), new Point(200, 30), 20); // client only

        tb_lobbygenre = UIFactory.CreateTextBox(new Thickness(), new Point(200, 30), 20);                              // host only

        b_loggyconfirmgenre = UIFactory.CreateButton("Confirm Genre", new Thickness(), new Point(200, 50), (x, y) =>
        { // host only
            _onGengreChange.send(tb_lobbygenre.Text);
        });

        b_lobbyback = UIFactory.CreateButton("Return To Menu", new Thickness(), new Point(200, 50), (x, y) =>
        {
            initMenu();
        });

        b_lobbystartgame = UIFactory.CreateButton("Start Game", new Thickness(), new Point(200, 50), (x, y) =>
        {
            _startGameCommand.send("");
        });

        tb_lobbyplayerdisplay = UIFactory.CreateTextBlock(Account.name + "\n", new Thickness(), new Point(300, 400), 20, TextAlignment.Left);

        tb_lobbyplayerdisplay.Background = new ImageBrush()
        {
            ImageSource = new BitmapImage((new Uri("assets/images/background_panel.png", UriKind.RelativeOrAbsolute)))
        };

        // loading screen
        tb_loadingmessage = UIFactory.CreateTextBlock("connection to game", new Thickness(), new Point(400, 30), 20);

        b_loadingback = UIFactory.CreateButton("Return To Menu", new Thickness(), new Point(200, 50), (x, y) =>
        {
            terminateLobby();
        });
        this.Center(UIPlacerMode.center, 3, tb_loadingmessage, b_loadingback);

        initMenu();

        MemoryDatabase.init();
        Account.Load();

        // highscore panel
        _highscorePanel = new HighscorePanel(300, 300);
        _highscorePanel.setBackground("assets/images/background_panel.png");
        this.Center(UIPlacerMode.center, 0, _highscorePanel);
        _highscorePanel.rescale();

        tb_namemessage.Text = "You are loged in as " + Account.name;
    }