Esempio n. 1
0
    private bool IsUpdateNeeded(LevelHandler.PackList packList)
    {
        // find out if playerdata file matches level data file
        // compare packlist length
        // foreach pack: compare packids, levellist length
        // foreach level in levellist: compare levelname

        if (data.packTrackerList.Count != packList.GetList().Count)
        {
            Debug.Log("PlayerData update needed: pack count difference");
            return(true);
        }

        for (int i = 0; i < packList.GetList().Count; i++)
        {
            if (packList.GetList()[i].packId != data.packTrackerList[i].packId ||
                packList.GetList()[i].levelList.Count != data.packTrackerList[i].levelTrackerList.Count)
            {
                Debug.Log("PlayerData update needed: pack order or level count difference");
                return(true);
            }
            for (int j = 0; j < packList.GetList()[i].levelList.Count; j++)
            {
                if (packList.GetList()[i].levelList[j].levelName != data.packTrackerList[i].levelTrackerList[j].levelName)
                {
                    Debug.Log("PlayerData update needed: level order difference " + i + " " + j + " ll:" + packList.GetList()[i].levelList[j].levelName + " pd:" + data.packTrackerList[i].levelTrackerList[j].levelName);
                    return(true);
                }
            }
        }
        return(false);
    }
Esempio n. 2
0
 public void Load(LevelHandler.PackList packList)
 {
     if (File.Exists(Application.persistentDataPath + DATA_FILENAME))
     {
         Debug.Log("PersistentDataPath: " + Application.persistentDataPath);
         try {
             BinaryFormatter bf   = new BinaryFormatter();
             FileStream      file = File.Open(Application.persistentDataPath + DATA_FILENAME, FileMode.Open);
             data = bf.Deserialize(file) as Data;
             Debug.Log("PlayerData: " + data.ToString());
             file.Close();
             if (IsUpdateNeeded(packList))
             {
                 ReconstructPlayerData(packList);
             }
         } catch (Exception e) {
             Debug.Log("PlayerProgress.Load exception: " + e.ToString());
             data = new Data(packList);
             Save();
         }
     }
     else
     {
         Debug.Log("PlayerProgress.Load file not found");
         data = new Data(packList);
         Save();
     }
 }
Esempio n. 3
0
 public Data(LevelHandler.PackList packList)
 {
     // Initialize PackTracker list to contain all packs
     packTrackerList = new List <PackTracker>();
     foreach (Pack pack in packList.GetList())
     {
         packTrackerList.Add(new PackTracker(pack));
     }
     lastPlayedPackID = Pack.PackID.PACK_1;
     soundOn          = true;
     musicOn          = true;
 }
Esempio n. 4
0
    private void ReconstructPlayerData(LevelHandler.PackList packList)
    {
        // reconstruct playerdata file since it is inconsistent with level data file
        // foreach pack: find matching packid in packtrackerlist, else make new packtracker
        // foreach level in pack.levellist: find matching levelName in leveltracker from matching packtracker, else make new leveltracker
        Debug.Log("Reconstructing PlayerData");
        Data newData = new Data(packList);

        newData.points           = data.points;
        newData.soundOn          = data.soundOn;
        newData.musicOn          = data.musicOn;
        newData.adDue            = data.adDue;
        newData.levelsPlayed     = data.levelsPlayed;
        newData.lastPlayedLevel  = data.lastPlayedLevel;
        newData.lastPlayedPackID = data.lastPlayedPackID;
        foreach (PackTracker newPackTracker in newData.packTrackerList)
        {
            foreach (PackTracker oldPackTracker in data.packTrackerList)
            {
                if (newPackTracker.packId == oldPackTracker.packId)
                {
                    newPackTracker.isUnlocked = oldPackTracker.isUnlocked;
                    bool wasLastPlayedPack = data.lastPlayedPackID == oldPackTracker.packId;
                    if (wasLastPlayedPack)
                    {
                        newData.lastPlayedPackID = oldPackTracker.packId;
                    }
                    foreach (LevelTracker newLevelTracker in newPackTracker.levelTrackerList)
                    {
                        foreach (LevelTracker oldLevelTracker in oldPackTracker.levelTrackerList)
                        {
                            if (newLevelTracker.levelName == oldLevelTracker.levelName)
                            {
                                newLevelTracker.levelProgress = oldLevelTracker.levelProgress;
                                if (wasLastPlayedPack && newLevelTracker.levelName == data.lastPlayedLevel)
                                {
                                    newData.lastPlayedLevel = data.lastPlayedLevel;
                                }
                                break;
                            }
                        }
                    }
                    break;
                }
            }
        }
        data = newData;
        Save();
        Debug.Log(data.ToString());
    }
Esempio n. 5
0
    public void Reset(LevelHandler.PackList packList)
    {
        int  levelsPlayed  = data.levelsPlayed;
        bool adDue         = data.adDue;
        bool soundOn       = data.soundOn;
        bool musicOn       = data.musicOn;
        int  lastSongIndex = data.lastSongIndex;

        data = new Data(packList);
        data.levelsPlayed  = levelsPlayed;
        data.adDue         = adDue;
        data.soundOn       = soundOn;
        data.musicOn       = musicOn;
        data.lastSongIndex = lastSongIndex;
        Save();
    }