Example #1
0
        public Menu(ViewRoot parent)
            : base(parent)
        {
            var families = ContentLoadAuto.Get<Menu, DMI>("Planet").Families;
            var planet = new PanelImage(this, families["planet"].Directions[0].Image(0));
            planet.Size = new Vector2(527, 495);
            planet.Position = new Vector2(50, 100);

            _pnlEntries = new PanelList(this);
            _lblTitle   = new Label(this, "Marooned", ContentLoadAuto.Get<Menu, SpriteFont>("Minecraftia_big"));
            _pnlCredits = new Credits(this);

            /// \note Assume mono-spaced font.
            var btnNewGame = new ButtonLabel(_pnlEntries, "  New Game", ContentLoadAuto.Get<Menu, SpriteFont>("Minecraftia"));
            var btnOptions = new ButtonLabel(_pnlEntries, "Options ", ContentLoadAuto.Get<Menu, SpriteFont>("Minecraftia"));
            var btnCredits = new ButtonLabel(_pnlEntries, "Credits ", ContentLoadAuto.Get<Menu, SpriteFont>("Minecraftia"));
            var btnExit = new ButtonLabel(_pnlEntries, "Exit       ", ContentLoadAuto.Get<Menu, SpriteFont>("Minecraftia"));

            btnNewGame.ContentsEncompass(); btnNewGame.ColourHovered.ValueActive = Color.Orange;
            btnOptions.ContentsEncompass(); btnOptions.ColourHovered.ValueActive = Color.Orange;
            btnCredits.ContentsEncompass(); btnCredits.ColourHovered.ValueActive = Color.Orange;
            btnExit   .ContentsEncompass(); btnExit   .ColourHovered.ValueActive = Color.Red;

            btnOptions.InputEnabledMouse = false;

            _lblTitle.ContentsEncompass();
            _pnlEntries.Size = new Vector2(_pnlEntries.Select(p => p.Size.X).Max()
                                          ,_pnlEntries.Sum   (p => p.Size.Y));

            btnNewGame.OnClicked += (eButton) => { if (eButton != Buttons.A) return;
                                                   parent.Game = new GameInfo();
                                                   Visible = false; };
            btnExit   .OnClicked += (eButton) => { if (eButton != Buttons.A) return;
                                                   Marooned.Instance.Exit(); };
            btnCredits.OnClicked       += (eButton) => { ItsGameOverManGameOver(Credits.PlayType.GameOver); };
            btnCredits.OnClickedDouble += (eButton) => { ItsGameOverManGameOver(Credits.PlayType.Success ); };

                   OnResize += () => LayoutInvalidate();
            parent.OnResize += () => Size = parent.Size;

            OnVisibilityChanged += () => {
                if (Visible)
                {
                    CellActive = null;
                    if (parent.Game == null) return;
                    CellActive = parent.Game.World.ActiveCell;
                    parent.Game.World.ActiveCell = null;
                }
                else
                    parent.Game.World.ActiveCell = CellActive ?? parent.Game.World.ActiveCell;
            };

            OnInputKey += (eKey, bRelease) => {
                if (!bRelease          ) return;
                if (eKey != Keys.Escape) return;

                if (_pnlCredits.Play != Credits.PlayType.None)
                {
                    _pnlCredits.Play = Credits.PlayType.None;
                    return;
                }

                if (parent.Game == null) return;
                Visible = false;
            };
        }
Example #2
0
 public void ItsGameOverManGameOver(Credits.PlayType eType)
 {
     ((ViewRoot)Parent).Game = null;
     Visible = true;
     _pnlCredits.Play = eType;
 }