void LoadLevelData(int levelIndex)
    {
        curLevelIndex = levelIndex;
        LevelManager.LevelData data = LevelManager.instance.levelData [levelIndex];
        levelTitleText.text = data.name;

        leftButton.SetActive(curLevelIndex > 0);
        rightButton.SetActive(curLevelIndex < GameProgress.farthestLevel);

        for (int i = 0; i < backgrounds.Count; i++)
        {
            int bgLevelIndex = GetLevelIdInDir(i - 1);
            if (bgLevelIndex >= 0 && bgLevelIndex < LevelManager.instance.levelData.Count)
            {
                backgrounds [i].sprite = LevelManager.instance.levelData [bgLevelIndex].image;
            }
        }

        if (curLevelIndex == 0 || data.type != LevelManager.LevelData.Type.Campaign)
        {
            starParent.SetActive(false);
        }
        else
        {
            starParent.SetActive(true);
            int bestDifficulty = GameProgress.GetBestDifficultyForIndex(curLevelIndex);
            for (int i = 0; i < stars.Length; i++)
            {
                stars [i].color = (i <= bestDifficulty) ? Color.yellow : new Color(0, 0, 0, 0.5f);
            }
        }
    }