// returns coorinates as an array from given cell
 public int[] getCoords(Cell cell)
 {
     //get the location of the cell
     int cellInt = myLevel.CellCollection.IndexOf(cell);
     //create array to return
     int[] coords = new int[2];
     // x is equal to the modulus of the cell location by the level width
     coords[0] = cellInt % myLevel.Width;
     // y is equal to the cell location divided by the level height
     coords[1] = cellInt / myLevel.Height;
     return coords;
 }
        // 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 Cell CreateOuterwall(string btnname)
 {
     Cell c = new Cell();
     c.Type = CellType.Ground;
     if (btnname == "b1")
     {
         //create a cell
         //make it blank
         c.Type = CellType.LeftUP;
         return c;
     }
     return c;
 }
        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);
        }
        public void ClearCharacters()
        {
            _ChildCharacter = null;

            this._ChildCell = this._PreviousCell;
            DrawBackgroundImage(this._ChildCell.Type);

            //this.BackgroundImage = Image.FromFile(LevelDesigner.MyLevel.TileSet["Ground1"]);
        }