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); }
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); }
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 }
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!"); } } } } }