Esempio n. 1
0
 void WritePref(BinaryWriter writer, PP_base aPref)
 {
     byte[] tmp = utf_8.GetBytes(aPref.prefName);
     writer.Write((byte)tmp.Length);
     writer.Write(tmp);
     if (aPref is PP_int)
     {
         writer.Write((byte)0xFE);
         writer.Write(((PP_int)aPref).value);
     }
     else
     if (aPref is PP_float)
     {
         writer.Write((byte)0xFD);
         writer.Write(((PP_float)aPref).value);
     }
     else
     if (aPref is PP_string)
     {
         PP_string P = (PP_string)aPref;
         tmp = utf_8.GetBytes(P.value);
         if (tmp.Length < 128)
         {
             writer.Write((byte)tmp.Length);
         }
         else
         {
             writer.Write((byte)0x80);
             writer.Write(tmp.Length);
         }
         writer.Write(tmp);
     }
 }
Esempio n. 2
0
    void OnGUI()
    {
        GUILayout.BeginHorizontal("box");
        if (GUILayout.Button("create new", GUILayout.Width(80)))
        {
            m_FileName = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData) + "/Unity/WebPlayerPrefs";
            m_Prefs    = new List <PP_base>();
        }
        if (GUILayout.Button("open file", GUILayout.Width(80)))
        {
            OpenFile();
        }
        GUI.enabled = (m_Prefs != null && m_Prefs.Count > 0);
        if (GUILayout.Button("save file", GUILayout.Width(80)))
        {
            WriteFile();
        }
        GUI.enabled = true;
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal("box");
        GUILayout.Label("File:", GUILayout.Width(30));
        GUILayout.TextField(m_FileName);
        GUILayout.EndHorizontal();
        scrollPos = GUILayout.BeginScrollView(scrollPos);
        GUILayout.BeginVertical("box");

        if (m_Prefs != null)
        {
            for (int i = 0; i < m_Prefs.Count; i++)
            {
                PP_base current = m_Prefs[i];
                GUILayout.BeginHorizontal();
                if (current.DrawGUI())
                {
                    m_Prefs.RemoveAt(i);
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.BeginHorizontal("box");
            m_NewPrefType = GUILayout.Toolbar(m_NewPrefType, new string[] { "int", "float", "string" }, GUILayout.Width(150));
            m_NewPrefName = GUILayout.TextField(m_NewPrefName, 254, GUILayout.Width(200));
            if ((m_NewPrefName != "") && GUILayout.Button("[add new]", GUILayout.Width(70)))
            {
                AddPref(m_NewPrefType, m_NewPrefName);
            }
            GUILayout.EndHorizontal();
        }
        GUILayout.EndVertical();
        GUILayout.EndScrollView();
    }
Esempio n. 3
0
    List <PP_base> ReadFile(string aFileName)
    {
        List <PP_base> result = new List <PP_base>();

        using (FileStream FS = File.OpenRead(aFileName))
            using (BinaryReader reader = new BinaryReader(FS)) {
                string header = new string(reader.ReadChars(8));
                if (header != "UnityPrf")
                {
                    Debug.LogError("Not a valid UPP file. No 'UnityPrf' in header");
                    return(null);
                }
                int version1 = reader.ReadInt32();
                int version2 = reader.ReadInt32();
                if (version1 != 0x10000 || version2 != 0x100000)
                {
                    Debug.LogWarning("Different file version detected. Prepare for unforeseen consequences!");
                    if (!EditorUtility.DisplayDialog("Unknown file version", "The file seems to have a newer format. You can continue reading but on your own risk", "ok, do it", "no, stop here"))
                    {
                        Debug.Log("Reading UPP file aborted by user");
                        return(null);
                    }
                }
                try {
                    while (true)
                    {
                        PP_base pref = ReadPref(reader);
                        if (pref != null)
                        {
                            result.Add(pref);
                        }
                    }
                } catch (EndOfStreamException) { }
            }
        return(result);
    }