private void LoadLevelByIndex(int LevelIndex)
 {
     this._currentLevelIndex = LevelIndex;
     this._currentLevelScreen = new GameLevelPhysicsScreen(Assets.Levels[LevelIndex], LevelIndex);
     this._currentLevelScreen.OnNextLevel += (int CurrentLevelIndex) =>
         {
             if (CurrentLevelIndex == Assets.Levels.Count - 1)
                 CurrentLevelIndex = -1;
             LoadLevelByIndex(CurrentLevelIndex + 1);
         };
     ScreenManager.AddScreen(this._currentLevelScreen, null);
 }
        public void ResumeLevelFromMemoryData()
        {
            this._currentLevelIndex = _resumeStateData.CurrentLevel;
            this._currentLevelScreen = new GameLevelPhysicsScreen(
                Assets.Levels[_resumeStateData.CurrentLevel], _resumeStateData.CurrentLevel,
                _resumeStateData.CameraPosition, _resumeStateData.BallPosition,
                _resumeStateData.DistanceTravelled, _resumeStateData.DiamondsCollected, _resumeStateData.BackgroundPosition);

            this._currentLevelScreen.OnNextLevel += (int CurrentLevelIndex) =>
            {
                LoadLevelByIndex(CurrentLevelIndex + 1);
            };
            ScreenManager.AddScreen(this._currentLevelScreen, null);

            //Show Loading Screen to give user sometime to recover his mind
            ScreenManager.AddScreen(new LoadingScreen(), null);
        }