Skip to content
Snippets Groups Projects
PuzzlePlayer.cs 7.54 KiB
Newer Older
  • Learn to ignore specific revisions
  • using PuzzlePlayer_Namespace.Resources;
    
    bionic85's avatar
    bionic85 committed
    using System;
    
    bionic85's avatar
    bionic85 committed
    using System.Collections.Generic;
    
    DamianKomdeur's avatar
    DamianKomdeur committed
    using System.Diagnostics;
    
    bionic85's avatar
    bionic85 committed
    using System.Drawing;
    using System.Windows.Forms;
    
    
    bionic85's avatar
    bionic85 committed
    namespace PuzzlePlayer_Namespace
    
    bionic85's avatar
    bionic85 committed
    {
    
    bionic85's avatar
    bionic85 committed
        internal class Program
    
    bionic85's avatar
    bionic85 committed
        {
    
    bionic85's avatar
    bionic85 committed
            internal static void Main(string[] args)
            {
    
                Application.Run(new ShopMenu());//new MainForm());
    
    bionic85's avatar
    bionic85 committed
        }
    
    
    bionic85's avatar
    bionic85 committed
        internal class MainForm : Form
    
    Floris's avatar
    Floris committed
        {
    
    bionic85's avatar
    bionic85 committed
            List<PuzzleForm> puzzleForms = new List<PuzzleForm>();
    
            BlackJack bj;
    
    bionic85's avatar
    bionic85 committed
            public MainForm()
            {
                SetUpPuzzleForms();
                SetUpUI();
            }
    
            private void SetUpPuzzleForms()
            {
    
    bionic85's avatar
    bionic85 committed
                puzzleForms.Clear();
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                puzzleForms.Add(new PuzzleForm(new Binary()));
    
    bionic85's avatar
    bionic85 committed
                puzzleForms.Add(new PuzzleForm(new Maze()));
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                puzzleForms.Add(new PuzzleForm(new Sudoku()));
    
    bionic85's avatar
    bionic85 committed
                puzzleForms.Add(new PuzzleForm(new Minesweeper()));
    
    bionic85's avatar
    bionic85 committed
            }
    
            private void SetUpUI()
            {
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                this.ClientSize = new Size(1115, 755);
    
                this.BackColor = UserDataManager.Theme.primaryColor;
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                this.Text = "PuzzlePlayer";
    
                MenuStrip menuStrip = new MenuStrip
                {
    
                    BackColor = UserDataManager.Theme.secondaryColor,
                    ForeColor = UserDataManager.Theme.secondaryColor,
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                    Name = "Main menu",
                    Text = "Main Menu",
                    Dock = DockStyle.Top,
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                };
    
                ToolStripMenuItem menuSettings = new ToolStripMenuItem 
                {
                    BackColor = Color.FromArgb(54, 57, 62),
                    ForeColor = Color.Black,
                    Text = "Settings",
                    TextAlign = ContentAlignment.BottomRight,
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                };
    
                menuSettings.Click += (object o, EventArgs e) =>
                {
                    this.Hide();
                    SettingForm settingForm = new SettingForm();
    
                    settingForm.FormClosed += (object s, FormClosedEventArgs args) =>
                    {
    
                        this.BackColor = UserDataManager.Theme.primaryColor;
                        this.ForeColor = UserDataManager.Theme.tertiaryColor;
    
    DamianKomdeur's avatar
    DamianKomdeur committed
    
                        foreach (Control control in this.Controls)
                        {
    
                            SettingForm.UpdateControl(control);
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                        }
    
                        this.Show();
                    };
    
                    settingForm.Show();
                };
    
                // Create a flow layout panel that automatically sorts the buttons when the window is resized
                FlowLayoutPanel buttonsPanel = new FlowLayoutPanel
                {
                    Location = new Point(0, menuStrip.Height),
                    Size = new Size(ClientSize.Width, ClientSize.Height - menuStrip.Height),
                    Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom,
                    FlowDirection = FlowDirection.LeftToRight,
                    // Add another row if there are more buttons than that fit in the window horizontally
                    WrapContents = true,
                    // Add a scroll bar in case the buttons don't fit on the window vertically
                    AutoScroll = true,
                };
    
                // Add a button for each puzzle type
                for (int i = 0; i < puzzleForms.Count; i++)
                {
    
                    string image = puzzleForms[i].puzzleType;
    
                    Image normalImage = SettingForm.GetEmbeddedImage(image + ".jpg");
    
                    Image grayImage = SettingForm.GetEmbeddedImage(image + "Gray.jpg");
    
    DamianKomdeur's avatar
    DamianKomdeur committed
    
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                    // Set the name of the button
                    RoundedButton button = new RoundedButton
                    {
                        Text = puzzleForms[i].puzzleType,
                        Margin = new Padding(10),
                        Height = 345,
                        Width = 345,
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                        Image = normalImage,
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                        FlatStyle = FlatStyle.Flat,
    
    bionic85's avatar
    bionic85 committed
                        Font = new Font(UserDataManager.MainFont.Name, UserDataManager.MainFont.Size * 2,FontStyle.Bold),
    
    bionic85's avatar
    bionic85 committed
                        Name = i.ToString()
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                    };
    
                    button.MouseEnter += (object o, EventArgs e) =>
                    {
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                        button.Image = grayImage;
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                    };
    
                    button.MouseLeave += (object o, EventArgs e) =>
                    {
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                        button.Image = normalImage;
    
    Floris's avatar
    Floris committed
                    button.MouseClick += (object o, MouseEventArgs e) =>
                    {
                        this.Hide();
    
    bionic85's avatar
    bionic85 committed
                        RoundedButton rb = (RoundedButton) o;
    
                        PuzzleForm puzzleForm = puzzleForms[int.Parse(rb.Name)];
    
    Floris's avatar
    Floris committed
                        puzzleForm.FormClosed += (object o, FormClosedEventArgs fcea) =>
                        {
    
                            this.BackColor = UserDataManager.Theme.primaryColor;
                            this.ForeColor = UserDataManager.Theme.tertiaryColor;
    
    Floris's avatar
    Floris committed
    
                            foreach (Control control in this.Controls)
                            {
    
                                SettingForm.UpdateControl(control);
    
    Floris's avatar
    Floris committed
                            }
    
                            this.Show();
                        };
                        puzzleForm.Show();
    
    Floris's avatar
    Floris committed
                        puzzleForm.Board.Generate();
    
    bionic85's avatar
    bionic85 committed
                        SetUpPuzzleForms(); //cheeky dwdw
    
    Floris's avatar
    Floris committed
                    };
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                    buttonsPanel.Controls.Add(button);
                    // -- buttons.Add(button);
    
                    if (i == 0)
                    {
                        this.MinimumSize = new Size(button.Width + 56, button.Height + 83);
                    }
                }
    
                // add BlackJackbutton
                buttonsPanel.Controls.Add(SetUpBlackJackButton());
    
    
    DamianKomdeur's avatar
    DamianKomdeur committed
                this.Controls.Add(menuStrip);
                this.Controls.Add(buttonsPanel);
    
                menuStrip.Items.Add(menuSettings);
                menuStrip.BringToFront();
    
    
            RoundedButton SetUpBlackJackButton()
            {
    
    bionic85's avatar
    bionic85 committed
                Image normalImage = SettingForm.GetEmbeddedImage("blackjackImg.jpg");
                Image grayImage = SettingForm.GetEmbeddedImage("blackjackImgGray.jpg");
    
    
                RoundedButton blackJackButton = new RoundedButton();
                bj = new BlackJack();
                blackJackButton.Text = "BlackJack";
                blackJackButton.Margin = new Padding(10);
                blackJackButton.Height = 345;
                blackJackButton.Width = 345;
    
    bionic85's avatar
    bionic85 committed
                blackJackButton.Image = normalImage;
    
                blackJackButton.FlatStyle = FlatStyle.Flat;
    
    bionic85's avatar
    bionic85 committed
                blackJackButton.Font = new Font(UserDataManager.MainFont.Name, UserDataManager.MainFont.Size * 2,FontStyle.Bold);
    
                blackJackButton.Click += (object o, EventArgs e) => {
                    this.Hide();
    
                    bj.FormClosed += (object o, FormClosedEventArgs fcea) =>
                    {
    
                        this.BackColor = UserDataManager.Theme.primaryColor;
                        this.ForeColor = UserDataManager.Theme.tertiaryColor;
    
    
                        foreach (Control control in this.Controls)
                        {
    
                            SettingForm.UpdateControl(control);
    
                        }
    
                        this.Show();
                        bj = new BlackJack(); //cheeky dw
                    };
                    bj.Show();
    
                };
    
    bionic85's avatar
    bionic85 committed
    
                blackJackButton.MouseEnter += (object o, EventArgs e) =>
                {
                    blackJackButton.Image = grayImage;
                };
    
                blackJackButton.MouseLeave += (object o, EventArgs e) =>
                {
                    blackJackButton.Image = normalImage;
                };
    
    
                return blackJackButton;
            }
    
    Floris's avatar
    Floris committed
        }