// OnClick function for Cell Buttons
        protected void Button_OnClick_For_Cell(object sender, object e)
        {
            if(this.TheClickedButton != null){
                //converting the sender to button
                CustomControl_Button theButton = sender as CustomControl_Button;
                //initiating an instance of Cell class
                if (this.TheClickedButton.Name == "btn_Theseus")
                {

                        if (OldTheseusButton != null)
                        {
                            OldTheseusButton.ClearCharacters();
                            OldTheseusButton = null;
                        }
                        OldTheseusButton = theButton;
                        theButton.ChildCharacter = theseus;

                }
                else if (this.TheClickedButton.Name == "btn_Minotaur")
                {

                        if (OldTheseusButton != null)
                        {
                            OldTheseusButton.ClearCharacters();
                            OldTheseusButton = null;
                        }
                        OldTheseusButton = theButton;
                        theButton.ChildCharacter = minotaur;

                }
                else
                {
                    Cell cell = new Cell();
                    switch (this.TheClickedButton.Name)
                    {
                        case "btn_TileLeft":
                            //Set the type of the instance to CellType.Left
                            cell.Type = CellType.Left;
                            break;
                        case "btn_TileUp":
                            //Set the type of the instance to CellType.Up
                            cell.Type = CellType.Up;
                            break;
                        case "btn_TileBlank":
                            //Set the type of the instance to CellType.Blank
                            //add correct flor tile
                            cell.Type = CellType.Ground;
                            break;
                        case "btn_TileLeftUp":
                            //Set the type of the instance to CellType.LeftUp
                            cell.Type = CellType.LeftUP;
                            break;
                        case "btn_TileExit":
                            //Set the type of the instance to CellType.Exit
                            cell.Type = CellType.Exit;
                            break;
                    }
                    //sets the button
                    theButton.ChildCell = cell;
                }
            }
        }
        private static void loadGameBoard(Level level, object sender, Theseus theseus, Minotaur minotaur)
        {
            int Theseus = level.TheseusLocation;
            int Minotaur = level.MinotaurLocation;
            int Exit = level.ExitLocation;
            int count = 0;

            Button loadButton = sender as Button;
            var theButton = sender as CustomControl_Button;
            Form parentForm = loadButton.FindForm();

            foreach (Cell cell in level.CellCollection)
            {
                theButton = parentForm.Controls.Find(count.ToString(), true).FirstOrDefault() as CustomControl_Button;

                if (Theseus == count)
                {

                    OldTheseusButton = theButton;
                    OldTheseusButton.ChildCharacter = theseus;

                    LevelDesigner.MyLevel.TheseusLocation = LevelDesigner.MyLevel.CellCollection.IndexOf(OldTheseusButton.ChildCell);

                }
                else if (Minotaur == count)
                {
                    OldMinotaurButton = theButton;
                    OldMinotaurButton.ChildCharacter = minotaur;
                    LevelDesigner.MyLevel.MinotaurLocation = LevelDesigner.MyLevel.CellCollection.IndexOf(OldMinotaurButton.ChildCell);

                }
                else if (Exit == count)
                {
                    OldExitButton = theButton;
                    OldExitButton._PreviousCell = theButton.ChildCell;

                    Cell cellll = new Cell() { Type = CellType.Exit };

                    theButton.ChildCell = cellll;

                    LevelDesigner.MyLevel.ExitLocation = LevelDesigner.MyLevel.CellCollection.IndexOf(theButton.ChildCell);

                }

                count++;
            }
                {
            }
        }
        protected void ContextMenu_OnClick_For_TileExit(object sender, object e)
        {
            //Converting the button object into menuitem
            var mnu = sender as MenuItem;
            //getting the right click menu(contextmenu) of the option that was clicked(MenuItem)
            ContextMenu MyContextMenu = (ContextMenu)mnu.Parent;
            //get the button of the context btton
            var theButton = MyContextMenu.SourceControl as CustomControl_Button;

            if (OldExitButton != null)
            {
                OldExitButton.DrawBackgroundImage(OldExitButton._PreviousCell.Type);
            }
            OldExitButton = theButton;
            OldExitButton._PreviousCell = OldExitButton.ChildCell;

            //create a cell object with apporiate wall
            Cell cell = new Cell() { Type = CellType.Exit };
            //assign the cell instance to the button
            theButton.ChildCell = cell;
               //     theButton.ChildCell.Type = CellType.Exit;

            LevelDesigner.MyLevel.ExitLocation = LevelDesigner.MyLevel.CellCollection.IndexOf(OldExitButton._PreviousCell);
        }
        protected void createGameBoard(int rows, int columns, bool isloaded)
        {
            if (isloaded != true)
            {
                //creating Level
                LevelDesigner.createLevel(rows, columns);
                LevelDesigner.MyLevel.CreateCells();
            }

            //Clear out the existing controls, we are generating a new table layout
            GameBoard.Controls.Clear();
            GameBoard.ColumnStyles.Clear();
            GameBoard.RowStyles.Clear();

            //Now we will generate the table, setting up the row and column counts first
            GameBoard.ColumnCount = columns;
            GameBoard.RowCount = rows;

            //creating rows
            for (int y = 0; y < LevelDesigner.MyLevel.Height; y++)
            {
                //create a row
                GameBoard.ColumnStyles.Add(new ColumnStyle(SizeType.Percent));

                //creating columns
                for (int x = 0; x < LevelDesigner.MyLevel.Width; x++)
                {
                    //create the grid
                    CustomControl_Button btn_Cell = new CustomControl_Button() { Name = count.ToString() };

                    //adding the cells from cell collection to the btn
                    btn_Cell.ChildCell = LevelDesigner.MyLevel.CellCollection[count];

                    //setting the button size
                    btn_Cell.Size = new Size(40, 40);
                    btn_Cell.Padding = new Padding(0);
                    btn_Cell.Margin = new Padding(0);
                    btn_Cell.Click += Button_OnClick_For_Cell;

                    MenuItem m1 = new MenuItem("LeftTile", new EventHandler(ContextMenu_OnClick_For_TileLeft));
                    MenuItem m2 = new MenuItem("UpTile", new EventHandler(ContextMenu_OnClick_For_TileUp));
                    MenuItem m3 = new MenuItem("BlankTile", new EventHandler(ContextMenu_OnClick_For_TileBlank));
                    MenuItem m4 = new MenuItem("LeftUpTile", new EventHandler(ContextMenu_OnClick_For_TileLeftUp));
                    MenuItem m5 = new MenuItem("Exit", new EventHandler(ContextMenu_OnClick_For_TileExit));
                    MenuItem m6 = new MenuItem("Theseus", new EventHandler(ContextMenu_OnClick_For_Theseus));
                    MenuItem m7 = new MenuItem("Minotaur", new EventHandler(ContextMenu_OnClick_For_Minotaur));

                    btn_Cell.ContextMenu = new System.Windows.Forms.ContextMenu();
                    btn_Cell.ContextMenu.MenuItems.Add(m1);
                    btn_Cell.ContextMenu.MenuItems.Add(m2);
                    btn_Cell.ContextMenu.MenuItems.Add(m3);
                    btn_Cell.ContextMenu.MenuItems.Add(m4);
                    btn_Cell.ContextMenu.MenuItems.Add(m5);
                    btn_Cell.ContextMenu.MenuItems.Add(m6);
                    btn_Cell.ContextMenu.MenuItems.Add(m7);

                    //Finally, add the control to the correct location in the table
                    GameBoard.Controls.Add(btn_Cell, x, y);
                    count += 1;
                }
            }
            if (isloaded != true)
            {
            //AddBorders();
            theseus = new Theseus();
            minotaur = new Minotaur();
            }
        }
        protected void ContextMenu_OnClick_For_Theseus(object sender, object e)
        {
            var mnu = sender as MenuItem;
            //getting the right click menu(contextmenu) of the option that was clicked(MenuItem)
            ContextMenu MyContextMenu = (ContextMenu)mnu.Parent;
            //get the button of the context btton
            var theButton = MyContextMenu.SourceControl as CustomControl_Button;
            //initiating an instance of Cell class
            if (OldTheseusButton != null)
            {
                OldTheseusButton.ClearCharacters();
            }
            OldTheseusButton = theButton;
            theButton.ChildCharacter = theseus;

            LevelDesigner.MyLevel.TheseusLocation = LevelDesigner.MyLevel.CellCollection.IndexOf(theButton.ChildCell);
        }