public static object ReadFromFile(string filename)
        {
            string jsonString = File.ReadAllText(fileDataPath + filename);

            return(DiagJson.Deserialize(jsonString));
        }
        public static void WriteToFile(object data, string filename)
        {
            string outString = DiagJson.Serialize(data);

            File.WriteAllText(fileDataPath + filename, outString);
        }
Exemple #3
0
    public static List <VLanguage> PreloadLanguages(string dName)
    {
        Dictionary <string, object> dict;
        List <VLanguage>            langs = new List <VLanguage>();

        if (!Application.isPlaying)
        {
            if (!File.Exists(Application.dataPath + "/../" + VIDE_EditorDB.videRoot + "/Resources/LocalizationSettings.json"))
            {
                if (File.Exists(Application.dataPath + "/../" + VIDE_EditorDB.videRoot + "/Resources/demo_loc.json"))
                {
                    dict = SerializeHelper.ReadFromFile("demo_loc" + ".json") as Dictionary <string, object>;
                }
                else
                {
                    Debug.LogError("No localization settings found");
                    return(null);
                }
            }
            else
            {
                dict = SerializeHelper.ReadFromFile("LocalizationSettings" + ".json") as Dictionary <string, object>;
            }
        }
        else
        {
            return(null);
        }

        int langCount = (int)((long)dict["langs"]);

        for (int i = 0; i < langCount; i++)
        {
            langs.Add(new VLanguage());
            langs[i].enabled = (bool)dict["langEnabled_" + i.ToString()];
            langs[i].name    = (string)dict["lang_Name" + i.ToString()];
        }

        if (!Application.isPlaying)
        {
            if (!File.Exists(Application.dataPath + "/../" + VIDE_EditorDB.videRoot + "/Resources/Localized/" + "LOC_" + dName + ".json"))
            {
                //Debug.LogWarning("No localization file found");
                return(null);
            }
            else
            {
                string fileDataPath = Application.dataPath + "/../" + VIDE_EditorDB.videRoot + "/Resources/Localized/";
                string jsonString   = File.ReadAllText(fileDataPath + "LOC_" + dName + ".json");
                dict = DiagJson.Deserialize(jsonString) as Dictionary <string, object>;
            }
        }

        for (int d = 0; d < langs.Count; d++)
        {
            string        lang        = langs[d].name + "_";
            Sprite[]      sprites     = Resources.LoadAll <Sprite>("");
            AudioClip[]   audios      = Resources.LoadAll <AudioClip>("");
            List <string> spriteNames = new List <string>();
            List <string> audioNames  = new List <string>();
            foreach (Sprite t in sprites)
            {
                spriteNames.Add(t.name);
            }
            foreach (AudioClip t in audios)
            {
                audioNames.Add(t.name);
            }

            if (!dict.ContainsKey(lang + "playerDiags"))
            {
                continue;
            }

            int pDiags = (int)((long)dict[lang + "playerDiags"]);

            if (pDiags > 0)
            {
                langs[d].playerDiags = new List <VIDE_EditorDB.DialogueNode>();
            }

            for (int i = 0; i < pDiags; i++)
            {
                langs[d].playerDiags.Add(new VIDE_EditorDB.DialogueNode());
                VIDE_EditorDB.DialogueNode c = langs[d].playerDiags[i];

                if (!dict.ContainsKey(lang + "pd_pTag_" + i.ToString()))
                {
                    continue;
                }

                c.playerTag = (string)dict[lang + "pd_pTag_" + i.ToString()];
                int cSize = (int)((long)dict[lang + "pd_comSize_" + i.ToString()]);

                string name = Path.GetFileNameWithoutExtension((string)dict[lang + "pd_sprite_" + i.ToString()]);
                if (spriteNames.Contains(name))
                {
                    c.sprite = sprites[spriteNames.IndexOf(name)];
                }
                else if (name != string.Empty)
                {
                    Debug.LogError("'" + name + "' not found in any Resources folder!");
                }

                for (int ii = 0; ii < cSize; ii++)
                {
                    c.comment.Add(new VIDE_EditorDB.Comment());

                    c.comment[ii].text = (string)dict[lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "text"];

                    string namec = Path.GetFileNameWithoutExtension((string)dict[lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "sprite"]);

                    if (spriteNames.Contains(namec))
                    {
                        c.comment[ii].sprites = sprites[spriteNames.IndexOf(namec)];
                    }
                    else if (namec != "")
                    {
                        Debug.LogError("'" + namec + "' not found in any Resources folder!");
                    }

                    namec = Path.GetFileNameWithoutExtension((string)dict[lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "audio"]);

                    if (audioNames.Contains(namec))
                    {
                        c.comment[ii].audios = audios[audioNames.IndexOf(namec)];
                    }
                    else if (namec != "")
                    {
                        Debug.LogError("'" + namec + "' not found in any Resources folder!");
                    }
                }
            }
        }

        return(langs);
    }
Exemple #4
0
    public static void SaveLanguages(string currentDiag)
    {
#if UNITY_EDITOR
        Dictionary <string, object> dict = new Dictionary <string, object>();
        List <string> sameNames          = new List <string>();

        for (int d = 0; d < languages.Count; d++)
        {
            string lang = languages[d].name + "_";
            if (!sameNames.Contains(lang))
            {
                sameNames.Add(lang);
            }
            else
            {
                continue;
            }


            if (languages[d].playerDiags != null)
            {
                dict.Add(lang + "playerDiags", languages[d].playerDiags.Count);
            }

            if (languages[d].playerDiags != null)
            {
                for (int i = 0; i < languages[d].playerDiags.Count; i++)
                {
                    dict.Add(lang + "pd_pTag_" + i.ToString(), languages[d].playerDiags[i].playerTag);
                    dict.Add(lang + "pd_comSize_" + i.ToString(), languages[d].playerDiags[i].comment.Count);

                    if (languages[d].playerDiags[i].sprite != null)
                    {
                        dict.Add(lang + "pd_sprite_" + i.ToString(), UnityEditor.AssetDatabase.GetAssetPath(languages[d].playerDiags[i].sprite));
                    }
                    else
                    {
                        dict.Add(lang + "pd_sprite_" + i.ToString(), string.Empty);
                    }

                    for (int ii = 0; ii < languages[d].playerDiags[i].comment.Count; ii++)
                    {
                        dict.Add(lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "text", languages[d].playerDiags[i].comment[ii].text);

                        if (languages[d].playerDiags[i].comment[ii].audios != null)
                        {
                            dict.Add(lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "audio", UnityEditor.AssetDatabase.GetAssetPath(languages[d].playerDiags[i].comment[ii].audios));
                        }
                        else
                        {
                            dict.Add(lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "audio", string.Empty);
                        }

                        if (languages[d].playerDiags[i].comment[ii].sprites != null)
                        {
                            dict.Add(lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "sprite", UnityEditor.AssetDatabase.GetAssetPath(languages[d].playerDiags[i].comment[ii].sprites));
                        }
                        else
                        {
                            dict.Add(lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "sprite", string.Empty);
                        }
                    }
                }
            }
        }


        string fileDataPath = Application.dataPath + "/../" + VIDE_EditorDB.videRoot + "/Resources/Localized/";

        string outString = DiagJson.Serialize(dict as Dictionary <string, object>);
        File.WriteAllText(fileDataPath + "LOC_" + currentDiag + ".json", outString);
#endif
    }
Exemple #5
0
    public static void LoadLanguages(string dName, bool onlyLoadDef)
    {
        Dictionary <string, object> dict;

        if (!Application.isPlaying)
        {
            if (!File.Exists(Application.dataPath + "/../" + VIDE_EditorDB.videRoot + "/Resources/Localized/" + "LOC_" + dName + ".json"))
            {
                for (int i = 0; i < languages.Count; i++)
                {
                    languages[i].playerDiags = null;
                }
                return;
            }
            else
            {
                string fileDataPath = Application.dataPath + "/../" + VIDE_EditorDB.videRoot + "/Resources/Localized/";
                string jsonString   = File.ReadAllText(fileDataPath + "LOC_" + dName + ".json");
                dict = DiagJson.Deserialize(jsonString) as Dictionary <string, object>;
            }
        }
        else
        {
            if (Resources.Load <TextAsset>("Localized/" + "LOC_" + dName) == null)
            {
                foreach (VLanguage l in languages)
                {
                    l.playerDiags = null;
                }

                return;
            }

            string jstr = Resources.Load <TextAsset>("Localized/" + "LOC_" + dName).text;
            dict = MiniJSON_VIDE.DiagJson.Deserialize(jstr) as Dictionary <string, object>;
        }


        for (int d = 0; d < languages.Count; d++)
        {
            if (onlyLoadDef)
            {
                if (languages[d] != defaultLanguage)
                {
                    continue;
                }
            }

            string        lang        = languages[d].name + "_";
            Sprite[]      sprites     = Resources.LoadAll <Sprite>("");
            AudioClip[]   audios      = Resources.LoadAll <AudioClip>("");
            List <string> spriteNames = new List <string>();
            List <string> audioNames  = new List <string>();
            foreach (Sprite t in sprites)
            {
                spriteNames.Add(t.name);
            }
            foreach (AudioClip t in audios)
            {
                audioNames.Add(t.name);
            }

            if (!dict.ContainsKey(lang + "playerDiags"))
            {
                continue;
            }

            int pDiags = (int)((long)dict[lang + "playerDiags"]);

            if (pDiags > 0)
            {
                languages[d].playerDiags = new List <VIDE_EditorDB.DialogueNode>();
            }

            for (int i = 0; i < pDiags; i++)
            {
                languages[d].playerDiags.Add(new VIDE_EditorDB.DialogueNode());
                VIDE_EditorDB.DialogueNode c = languages[d].playerDiags[i];

                if (!dict.ContainsKey(lang + "pd_pTag_" + i.ToString()))
                {
                    continue;
                }

                c.playerTag = (string)dict[lang + "pd_pTag_" + i.ToString()];
                int cSize = (int)((long)dict[lang + "pd_comSize_" + i.ToString()]);

                string name = Path.GetFileNameWithoutExtension((string)dict[lang + "pd_sprite_" + i.ToString()]);
                if (spriteNames.Contains(name))
                {
                    c.sprite = sprites[spriteNames.IndexOf(name)];
                }
                else if (name != string.Empty)
                {
                    Debug.LogError("'" + name + "' not found in any Resources folder!");
                }

                for (int ii = 0; ii < cSize; ii++)
                {
                    c.comment.Add(new VIDE_EditorDB.Comment());

                    c.comment[ii].text = (string)dict[lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "text"];

                    string namec = Path.GetFileNameWithoutExtension((string)dict[lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "sprite"]);

                    if (spriteNames.Contains(namec))
                    {
                        c.comment[ii].sprites = sprites[spriteNames.IndexOf(namec)];
                    }
                    else if (namec != "")
                    {
                        Debug.LogError("'" + namec + "' not found in any Resources folder!");
                    }

                    namec = Path.GetFileNameWithoutExtension((string)dict[lang + "pd_" + i.ToString() + "_com_" + ii.ToString() + "audio"]);

                    if (audioNames.Contains(namec))
                    {
                        c.comment[ii].audios = audios[audioNames.IndexOf(namec)];
                    }
                    else if (namec != "")
                    {
                        Debug.LogError("'" + namec + "' not found in any Resources folder!");
                    }
                }
            }
        }
    }