/// <summary>
    /// Adds a level with id = levelId to list of completed levels and updates game data
    /// </summary>
    /// <param name="levelId">id of the completed level</param>
    /// <param name="xpEarned">amount of xp earned</param>
    /// <param name="goldEarned">gold earned by the player</param>
    /// <param name="gemsEarned">gems earned by the player</param>
    /// <param name="stonesCollected">stones collected during gameplay</param>
    /// <param name="time">time spent playing level</param>
    /// <param name="damageDone">damage done by player</param>
    /// <param name="damageTaken">damage taken by player from enemies</param>
    /// <param name="kills">total number of enemies killed by player</param>
    /// <param name="hits">total hits done during game session</param>
    /// <param name="playerLevel">the level the player is currently at</param>
    public bool CompleteLevel(string levelId, LevelList levelList, int xpEarned, int goldEarned, int gemsEarned,
                              int stonesCollected, float time, float damageDone, float damageTaken,
                              int kills, float hits, int playerLevel, int xpToNext, float shotAccuracy, int score)
    {
        foreach (LevelSaveData level in completedLevels)
        {
            if (level.id == levelId)
            {
                Debug.Log("[Completing level....1]");
                level.time = Mathf.Min(level.time, time);
                return(false);
            }
        }
        Debug.Log("[Completing level.....2]woaaah!!!");
        completedLevels.Add(new LevelSaveData(levelId, xpEarned, goldEarned, gemsEarned,
                                              kills, damageDone, damageTaken, time, stonesCollected, hits, shotAccuracy, score));

        LevelItem completedLevel = levelList[levelId];

        if (completedLevel != null)
        {
            int index = levelList.IndexOf(completedLevel);
            int next  = index + 1;
            if (levelList[next] != null)
            {
                // PROBLEM = the locked state of a level is not saved
                // FIGURE OUT WHY AND FIX IT
                levelList[next].Locked = false;
            }
        }

        return(true);
    }
Beispiel #2
0
    /// <summary>
    /// Checks if the specified level is locked or not
    /// </summary>
    protected void CheckLevelAvailability()
    {
        int index    = levelList.IndexOf(m_Item);
        int previous = index - 1;

        if (previous >= 0)
        {
            LevelItem previousLevel     = levelList[previous];
            float     previousLevelTime = GameManager.instance.GetTimeForLevel(previousLevel.id);
            if (previousLevelTime <= 0 && !GameManager.instance.TestMode)
            {
                // Lock this level, previous level not complete yet
                Time.gameObject.SetActive(false);
                Description.text        = "Complete previous level to unlock";
                PlayButton.interactable = false;
                PlayButton.image.color  = new Color(145, 145, 145);
                PlayButtonText.text     = "LOCKED";
                LockImage.gameObject.SetActive(true);

                Debug.Log("Level - " + m_Item.name + " is locked");
            }
            else
            {
                // Previous level is complete, unlock this level
                Time.gameObject.SetActive(true);
                Description.text        = m_Item.description;
                PlayButton.interactable = true;
                PlayButton.image.color  = new Color(255, 255, 0);
                PlayButtonText.text     = "PLAY!";
                LockImage.gameObject.SetActive(false);

                Debug.Log("Level - " + m_Item.name + " is unlocked");
            }
        }
        else
        {
            // This is the first level in the list, its unlocked by default
            Time.gameObject.SetActive(true);
            Description.text        = m_Item.description;
            PlayButton.interactable = true;
            PlayButton.image.color  = new Color(255, 255, 0);
            PlayButtonText.text     = "PLAY!";
            LockImage.gameObject.SetActive(false);

            Debug.Log("Level - " + m_Item.name + " is the first level and is unlocked by default");
        }
    }