/// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            //21/35
            sample_image = new SpriteSheet(Content.Load <Texture2D>("sprites/commandos"), spriteBatch, 21, 35);
            sample_tile  = new SpriteSheet(Content.Load <Texture2D>("sprites/green_tile20x20"), spriteBatch, 20, 20);
            sample_util  = new SpriteSheet(Content.Load <Texture2D>("sprites/util_misc20x20"), spriteBatch, 20, 20);
            menuUI       = new SpriteSheet(Content.Load <Texture2D>("gamePlayUI/menuUI"), spriteBatch, 299, 211);
            iconUI       = new SpriteSheet(Content.Load <Texture2D>("gamePlayUI/icons"), spriteBatch, 208, 51);
            gamePlayMenu = new ViewGamePlayMenu(graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight, menuUI);
            gamePlayMenu.loadIconSprite(iconUI);

            gameSelectView.loadSpriteSheet(sample_util);

            gameView = new View(800, 600, spriteBatch);
            gameView.LoadScenario(this.testGameController.scenario);
            gamePlayMenu.LoadScenario(this.testGameController.scenario);
            gameView.LoadMap(this.testGameController.gameWorld);


            gameView.LoadSpriteSheet(sample_tile);
            gameView.LoadUnitsSpriteSheet(sample_image);
            gameView.LoadUtilitySpriteSheet(sample_util);
            gameView.LoadBuildingSpriteSheet(new SpriteSheet(Content.Load <Texture2D>("gameBuildings/sample_build"), spriteBatch, 40, 40));
            testGameController.registerObserver(gameSelectView);
            // TODO: use this.Content to load your game content here
        }
        /// <summary>
        /// Update Input
        /// </summary>
        /// <param name="input"></param>
        /// <param name="testGameController"></param>
        /// <param name="gameView"></param>
        /// <param name="gamePlayMenu"></param>
        public void updateInput(MouseState input, Controller testGameController, ZRTS.View.ViewGame gameView, ViewGamePlayMenu gamePlayMenu)
        {
            // Right click to give a command
            if (input.RightButton == ButtonState.Pressed && prevInput.RightButton == ButtonState.Released)
            {
                giveCommand(input, gameView, testGameController);
            }

            if(gamePlayMenu.containsPoint(input.X, input.Y))
            {
                if (input.LeftButton == ButtonState.Pressed)
                {
                    /** Handle Menu Input **/
                    int button = gamePlayMenu.onButton(input.X, input.Y);
                    //button corespons with the button pressed 0 to 3 left to right

                    if (button == 0)
                    {
                        currentPlayerCommand = PlayerCommand.CANCEL;
                    }
                    if (button == 1)
                    {
                        currentPlayerCommand = PlayerCommand.BUILD;
                    }
                    if (button == 2)
                    {
                        currentPlayerCommand = PlayerCommand.MOVE;
                    }
                    if (button == 3)
                    {
                        currentPlayerCommand = PlayerCommand.ATTACK;
                    }

                }
            }
            else
            {
                handleSelecting(input, testGameController, gameView, gamePlayMenu);
            }

            prevInput = input;
        }
        /// <summary>
        /// Update Input
        /// </summary>
        /// <param name="input"></param>
        /// <param name="testGameController"></param>
        /// <param name="gameView"></param>
        /// <param name="gamePlayMenu"></param>
        public void updateInput(MouseState input, Controller testGameController, View gameView, ViewGamePlayMenu gamePlayMenu)
        {
            // Right click to give a command
            if (input.RightButton == ButtonState.Pressed && prevInput.RightButton == ButtonState.Released)
            {
                giveCommand(input, gameView, testGameController);
            }


            if (gamePlayMenu.containsPoint(input.X, input.Y))
            {
                if (input.LeftButton == ButtonState.Pressed)
                {
                    /** Handle Menu Input **/
                    int button = gamePlayMenu.onButton(input.X, input.Y);
                    //button corespons with the button pressed 0 to 3 left to right

                    if (button == 0)
                    {
                        currentPlayerCommand = PlayerCommand.CANCEL;
                    }
                    if (button == 1)
                    {
                        currentPlayerCommand = PlayerCommand.BUILD;
                    }
                    if (button == 2)
                    {
                        currentPlayerCommand = PlayerCommand.MOVE;
                    }
                    if (button == 3)
                    {
                        currentPlayerCommand = PlayerCommand.ATTACK;
                    }
                }
            }
            else
            {
                handleSelecting(input, testGameController, gameView, gamePlayMenu);
            }

            prevInput = input;
        }
        /// <summary>
        /// Handle selecting units and buildings by the user
        /// </summary>
        /// <param name="input"></param>
        /// <param name="testGameController"></param>
        /// <param name="gameView"></param>
        /// <param name="gamePlayMenu"></param>
        private void handleSelecting(MouseState input, Controller testGameController, View gameView, ViewGamePlayMenu gamePlayMenu)
        {
            /* Left click to select units */

            // Store the first corner of the "drag box"
            if (input.LeftButton == ButtonState.Pressed && prevInput.LeftButton == ButtonState.Released)
            {
                if (testGameController.isWithinGameBound(selectX, selectY))
                {
                    selectX = gameView.convertScreenLocToGameLoc(input.X, input.Y).X;
                    selectY = gameView.convertScreenLocToGameLoc(input.X, input.Y).Y;

                    gameView.setFirstCornerOfDragBox(input.X, input.Y);
                    gameView.IsDragging = true;
                }
            }

            // While dragging, update the view to draw the box
            if (input.LeftButton == ButtonState.Pressed)
            {
                gameView.setDragBox(input.X, input.Y);
            }

            // "Drag box" is created, select all units within box
            if (input.LeftButton == ButtonState.Released && prevInput.LeftButton == ButtonState.Pressed)
            {
                float releaseX = gameView.convertScreenLocToGameLoc(input.X, input.Y).X; // coords of release location
                float releaseY = gameView.convertScreenLocToGameLoc(input.X, input.Y).Y;
                float pressX   = selectX;                                                // coords of press location
                float pressY   = selectY;

                if (testGameController.isWithinGameBound(releaseX, releaseY) && testGameController.isWithinGameBound(pressX, pressY))
                {
                    /*
                     * Retrieve all units within the drag box - Use Min and Max to find the topleft and
                     * bottomright corner
                     */
                    testGameController.scenario.selectUnits(
                        (int)Math.Min(pressX, releaseX),
                        (int)Math.Min(pressY, releaseY),
                        (int)(Math.Max(pressX, releaseX) - Math.Min(pressX, releaseX)),
                        (int)(Math.Max(pressY, releaseY) - Math.Min(pressY, releaseY))
                        );
                }

                gameView.IsDragging = false;
                //gameView.resetDragBox();
            }
        }
        /// <summary>
        /// Handle selecting units and buildings by the user
        /// </summary>
        /// <param name="input"></param>
        /// <param name="testGameController"></param>
        /// <param name="gameView"></param>
        /// <param name="gamePlayMenu"></param>
        private void handleSelecting(MouseState input, Controller testGameController, ZRTS.View.ViewScreenConvert gameView, ViewGamePlayMenu gamePlayMenu)
        {
            /* Left click to select units */

            // Store the first corner of the "drag box"
            if (input.LeftButton == ButtonState.Pressed && prevInput.LeftButton == ButtonState.Released)
            {
                if (testGameController.isWithinGameBound(selectX, selectY))
                {
                    selectX = gameView.convertScreenLocToGameLoc(input.X, input.Y).X;
                    selectY = gameView.convertScreenLocToGameLoc(input.X, input.Y).Y;

                    //gameView.setFirstCornerOfDragBox(input.X, input.Y);
                    //gameView.IsDragging = true;
                }

            }

            // While dragging, update the view to draw the box
            if (input.LeftButton == ButtonState.Pressed)
            {
                //gameView.setDragBox(input.X, input.Y);
            }

            // "Drag box" is created, select all units within box
            if (input.LeftButton == ButtonState.Released && prevInput.LeftButton == ButtonState.Pressed)
            {
                float releaseX = gameView.convertScreenLocToGameLoc(input.X, input.Y).X;     // coords of release location
                float releaseY = gameView.convertScreenLocToGameLoc(input.X, input.Y).Y;
                float pressX = selectX;  // coords of press location
                float pressY = selectY;

                if (testGameController.isWithinGameBound(releaseX, releaseY) && testGameController.isWithinGameBound(pressX, pressY))
                {
                    /*
                     * Retrieve all units within the drag box - Use Min and Max to find the topleft and
                     * bottomright corner
                     */
                    testGameController.scenario.selectUnits(
                        (int)Math.Min(pressX, releaseX),
                        (int)Math.Min(pressY, releaseY),
                        (int)(Math.Max(pressX, releaseX) - Math.Min(pressX, releaseX)),
                        (int)(Math.Max(pressY, releaseY) - Math.Min(pressY, releaseY))
                    );
                }

                //gameView.IsDragging = false;
                //gameView.resetDragBox();

            }
        }
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            //21/35
            sample_image = new SpriteSheet(Content.Load<Texture2D>("sprites/commandos"), spriteBatch, 21, 35);
            sample_tile = new SpriteSheet(Content.Load<Texture2D>("sprites/green_tile20x20"), spriteBatch, 20, 20);
            sample_util = new SpriteSheet(Content.Load<Texture2D>("sprites/util_misc20x20"), spriteBatch, 20, 20);
            menuUI = new SpriteSheet(Content.Load<Texture2D>("gamePlayUI/menuUI"), spriteBatch, 299, 211);
            iconUI = new SpriteSheet(Content.Load<Texture2D>("gamePlayUI/icons"), spriteBatch, 208, 51);
            gamePlayMenu = new ViewGamePlayMenu(graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight,menuUI);
            gamePlayMenu.loadIconSprite(iconUI);

            gameSelectView.loadSheet(sample_util);

            gameView = new ZRTS.View.ViewGame(800,600);
            //gameView.LoadScenario(this.testGameController.scenario);
            gamePlayMenu.LoadScenario(this.testGameController.scenario);
            gameView.loadGameWorld(this.testGameController.gameWorld);

            gameView.loadSheet(sample_tile);
            gameView.loadUnitSheet(sample_image);
            //gameView.LoadUtilitySpriteSheet(sample_util);
            gameView.loadBuildingSheet(new SpriteSheet(Content.Load<Texture2D>("gameBuildings/sample_build"), spriteBatch, 40, 40));
            testGameController.registerObserver(gameSelectView);
            // TODO: use this.Content to load your game content here
        }