Esempio n. 1
0
    //NOTE(Simon): These function parse a specific version to the current Compat class.
    //NOTE(Simon): Add more of these when changing the savefile version.
    #region Upgraders
    public static SaveFileDataCompat ParseToCompatV3toV4(string raw)
    {
        var saveFileData = new SaveFileDataCompat();

        var result = new ParsedJsonLine();

        result = JsonGetValueFromLine(raw, result.endindex);
        saveFileData.meta.version = Convert.ToInt32(result.value, CultureInfo.InvariantCulture);

        result = JsonGetValueFromLine(raw, result.endindex);
        saveFileData.meta.guid = new Guid(result.value);

        result = JsonGetValueFromLine(raw, result.endindex);
        saveFileData.meta.title = result.value;

        result = JsonGetValueFromLine(raw, result.endindex);
        saveFileData.meta.description = result.value;

        result = JsonGetValueFromLine(raw, result.endindex);
        saveFileData.meta.length = Convert.ToSingle(result.value, CultureInfo.InvariantCulture);

        saveFileData.points = new List <InteractionPointSerializeCompat>();

        foreach (var obj in ParseInteractionPoints(raw, result.endindex))
        {
            saveFileData.points.Add(JsonUtility.FromJson <InteractionPointSerializeCompat>(obj));
        }
        return(saveFileData);
    }
Esempio n. 2
0
    /*
     * public static List<string> GetExtraFiles(string metaFileName)
     * {
     *      var str = GetSaveFileContents(metaFileName);
     * }
     */
    public static SaveFileData OpenFile(string path)
    {
        var str = GetSaveFileContents(path);

        str = VersionManager.CheckAndUpgradeVersion(str);

        var saveFileData = new SaveFileData();

        var result = new ParsedJsonLine();

        result = JsonGetValueFromLine(str, result.endindex);
        saveFileData.meta.version = Convert.ToInt32(result.value);

        result = JsonGetValueFromLine(str, result.endindex);
        saveFileData.meta.guid = new Guid(result.value);

        result = JsonGetValueFromLine(str, result.endindex);
        saveFileData.meta.title = result.value;

        result = JsonGetValueFromLine(str, result.endindex);
        saveFileData.meta.description = result.value;

        result = JsonGetValueFromLine(str, result.endindex);
        saveFileData.meta.length = Convert.ToSingle(result.value);

        saveFileData.points = new List <InteractionpointSerialize>();

        foreach (var obj in ParseInteractionPoints(str, result.endindex))
        {
            saveFileData.points.Add(JsonUtility.FromJson <InteractionpointSerialize>(obj));
        }

        if (VersionManager.isUpdated)
        {
            try
            {
                using (var file = File.CreateText(path))
                {
                    file.Write(str);
                }
            }
            catch (Exception e)
            {
                Debug.Log(e.ToString());
            }
        }

        return(saveFileData);
    }
Esempio n. 3
0
    /*
     * public static List<string> GetExtraFiles(string metaFileName)
     * {
     *      var str = GetSaveFileContents(metaFileName);
     * }
     */
    public static SaveFileData OpenFile(string path)
    {
        var str = GetSaveFileContents(path);

        var level  = 0;
        var start  = 0;
        var count  = 0;
        var rising = true;

        var saveFileData = new SaveFileData();

        var result = new ParsedJsonLine();

        result = JsonGetValueFromLine(str, result.endindex);
        saveFileData.meta.guid = new Guid(result.value);

        result = JsonGetValueFromLine(str, result.endindex);
        saveFileData.meta.title = result.value;

        result = JsonGetValueFromLine(str, result.endindex);
        saveFileData.meta.description = result.value;

        result = JsonGetValueFromLine(str, result.endindex);
        saveFileData.meta.perspective = (Perspective)Enum.Parse(typeof(Perspective), result.value);

        //Note(Simon): Value "length" is only used server side, but we still need to skip over the text in the file.
        result = JsonGetValueFromLine(str, result.endindex);

        var stringObjects = new List <string>();

        for (var i = result.endindex; i < str.Length; i++)
        {
            if (str[i] == '{')
            {
                if (level == 0)
                {
                    start = i;
                }
                rising = true;
                level++;
            }
            if (str[i] == '}')
            {
                level--;
                rising = false;
            }

            count++;

            if (level == 0 && !rising)
            {
                stringObjects.Add(str.Substring(start, count - 1));
                count  = 0;
                rising = true;
            }
            if (level < 0)
            {
                Debug.Log("Corrupted save file. Aborting");
                return(null);
            }
        }


        saveFileData.points = new List <InteractionpointSerialize>();

        foreach (var obj in stringObjects)
        {
            saveFileData.points.Add(JsonUtility.FromJson <InteractionpointSerialize>(obj));
        }

        return(saveFileData);
    }