Example #1
0
    public void Load()
    {
        Debug.Log("persistent data path:" + Application.persistentDataPath);
        if (false == File.Exists(Application.persistentDataPath + "/playerdata.dat"))
        {
            return;
        }

        BinaryFormatter bf   = new BinaryFormatter();
        FileStream      file = File.Open(Application.persistentDataPath + "/playerdata.dat", FileMode.Open);
        SaveData        data = (SaveData)bf.Deserialize(file);

        gold          = data.gold;
        citadel.level = data.citadelLevel;

        if (data.version == SAVE_FORMAT_VERSION)
        {
            waveLevel = data.waveLevel;
            foreach (var itr in data.heros)
            {
                HeroUnit.SaveData saveData = itr.Value;
                HeroUnit          hero     = citadel.heros [saveData.id];
                hero.level     = saveData.level;
                hero.purchased = saveData.purchased;
                hero.slotIndex = saveData.slotIndex;
                hero.equiped   = saveData.equiped;
                if (true == hero.equiped)
                {
                    citadel.citadelParts [hero.slotIndex].slot.EquipUnit(hero);
                }
            }

            if (null != data.citadelParts)
            {
                for (int i = 0; i < citadel.citadelParts.Length; i++)
                {
                    if (null == data.citadelParts [i])
                    {
                        continue;
                    }
                    if (true == data.citadelParts [i].active)
                    {
                        citadel.citadelParts [i].gameObject.SetActive(true);
                    }
                }
            }
            for (int i = 0; i < data.citadelBuffs.Length; i++)
            {
                CitadelBuff buff = citadel.citadelBuffs [i];
                buff.level = data.citadelBuffs [i].level;
            }
        }
        file.Close();
    }
Example #2
0
    public void Save()
    {
        BinaryFormatter bf   = new BinaryFormatter();
        FileStream      file = File.Create(Application.persistentDataPath + "/playerdata.dat");

        SaveData data = new SaveData();

        data.version      = SAVE_FORMAT_VERSION;
        data.gold         = gold;
        data.waveLevel    = waveLevel;
        data.citadelLevel = citadel.level;

        data.heros = new Dictionary <string, HeroUnit.SaveData> ();
        foreach (var itr in citadel.heros)
        {
            HeroUnit hero = itr.Value;
            if (false == hero.purchased)
            {
                continue;
            }
            HeroUnit.SaveData saveData = new HeroUnit.SaveData();
            saveData.id               = hero.info.id;
            saveData.level            = hero.level;
            saveData.purchased        = hero.purchased;
            saveData.slotIndex        = hero.slotIndex;
            saveData.equiped          = hero.equiped;
            data.heros [hero.info.id] = saveData;
        }

        data.citadelParts = new CitadelParts.SaveData[citadel.citadelParts.Length];
        for (int i = 0; i < citadel.citadelParts.Length; i++)
        {
            CitadelParts.SaveData saveData = new CitadelParts.SaveData();
            saveData.active       = citadel.citadelParts [i].gameObject.activeSelf;
            data.citadelParts [i] = saveData;
        }

        data.citadelBuffs = new CitadelBuff.SaveData[citadel.citadelBuffs.Length];
        for (int i = 0; i < citadel.citadelBuffs.Length; i++)
        {
            CitadelBuff.SaveData saveData = new CitadelBuff.SaveData();
            saveData.level        = citadel.citadelBuffs [i].level;
            data.citadelBuffs [i] = saveData;
        }
        bf.Serialize(file, data);
        file.Close();
    }