// Use scroll wheel to move camera up and down if we have loads of options?

        #endregion

        #region Callbacks

        /// <summary>
        /// Syncs our button's value with our options is full screen option
        /// </summary>
        /// <param name="button"></param>
        private void SyncOptionsIsFullScreen(ClickableImage image)
        {
            Button button = image as Button;
            DebugUtils.AssertNotNull(button);

            OptionsManager.IsFullScreen = !OptionsManager.IsFullScreen;
            button.Label.Text = OptionsManager.IsFullScreen.ToString();
        }
        /// <summary>
        /// Serializes all the UIObjects in our level editor into an XML data file.
        /// </summary>
        protected void SerializeLevel(ClickableImage image)
        {
            LevelDesignScreenData levelData = ScreenData.As<LevelDesignScreenData>();
            DebugUtils.AssertNotNull(levelData);

            levelData.ClearAll();

            // Need to check for the alive ones because although the objects are cleaned up from the Screen Managers, they will still linger in the other lists

            // Serialize normal tiles to level data
            foreach (LevelDesignObject levelObject in LevelObjects[LevelDesignType.kNormalTile].FindAll(x => x.IsAlive.Value))
            {
                levelData.NormalTiles.Add(SerializeLevelObject(levelObject));
            }

            // Serialize collision tiles to level data
            foreach (LevelDesignObject levelObject in LevelObjects[LevelDesignType.kCollisionTile].FindAll(x => x.IsAlive.Value))
            {
                levelData.CollisionTiles.Add(SerializeLevelObject(levelObject));
            }

            // Serialize normal decals to level data
            foreach (LevelDesignObject levelObject in LevelObjects[LevelDesignType.kNormalDecal].FindAll(x => x.IsAlive.Value))
            {
                levelData.NormalDecals.Add(SerializeLevelObject(levelObject));
            }

            // Serialize collision decals to level data
            foreach (LevelDesignObject levelObject in LevelObjects[LevelDesignType.kCollisionDecal].FindAll(x => x.IsAlive.Value))
            {
                levelData.CollisionDecals.Add(SerializeLevelObject(levelObject));
            }

            // Load our previously serialized level here
            AssetManager.SaveData(levelData, ScreenDataAsset);
        }
        /// <summary>
        /// Changes the object we will be adding to our level.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SetCurrentSelectedObject(ClickableImage image)
        {
            DebugUtils.AssertNotNull(image);

            RemoveScreenUIObject(CurrentSelectedObject);

            CurrentSelectedObject = AddScreenUIObject(new Image(TileSize, Vector2.Zero, (string)image.StoredObject), true, true) as Image;
            CurrentSelectedObject.StoredObject = image.StoredObject;
            CurrentSelectedObject.SetParent(GameMouse.Instance);

            GameMouse.Instance.IsFlushed = true;
        }
 private void Generate(ClickableImage image)
 {
     GenerationEngine engine = new GenerationEngine(this, null);
     engine.GenerateLevel();
 }
 /// <summary>
 /// The callback to execute when we press the 'Exit' button
 /// </summary>
 /// <param name="image">Unused</param>
 protected virtual void OnExitGameButtonClicked(ClickableImage image)
 {
     ScreenManager.Instance.EndGame();
 }
 /// <summary>
 /// The callback to execute when we press the 'Options' button
 /// </summary>
 /// <param name="image">The image that was clicked</param>
 protected virtual void OnOptionsButtonClicked(ClickableImage image)
 {
     Transition(new OptionsScreen(this));
 }
 /// <summary>
 /// The callback to execute when we press the 'Play' button
 /// </summary>
 /// <param name="image">The image that was clicked</param>
 protected virtual void OnPlayGameButtonClicked(ClickableImage image)
 {
     Transition(new PlatformGameplayScreen("Content\\Data\\Screens\\Levels\\Level1.xml"));
 }
 /// <summary>
 /// The callback to execute when we press the 'Play' button
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected virtual void OnPlayGameButtonClicked(ClickableImage image)
 {
     Transition(new LevelDesignScreen("Content\\Data\\Levels\\Level1.xml"));
 }