/* ///////////////////////////////////////////////////////////////////////////////////////////////// MultiFontPackExampleCategory 202501 by 14mhz https://www.patreon.com/14mhz Licensed under CC-BY-SA. (see https://creativecommons.org/licenses/by/4.0/) Feel free to incorporate or customazing this libary in your releases, but credit is required. ///////////////////////////////////////////////////////////////////////////////////////////////// */ using System; using System.Collections.Generic; using SimpleJSON; using UnityEngine.UI; public class MultiFontPackExampleCategory : MVRScript { public static String NAME = $"MultiFontPackExampleCategory"; public override void Init() { buildUI(); } void Start() { } void OnDestroy() { this.RemovePopup(SCRP_SELECT); this.RemovePopup(CATE_SELECT); this.RemovePopup(FEEL_SELECT); this.RemovePopup(THMS_SELECT); this.RemovePopup(FONT_SELECT); this.RemoveTextField(TEXTEXAMPLE); } /////////////////////////////////////////////////////////////////////////// JSONStorableStringChooser FONT_SELECT = null; JSONStorableString TEXTEXAMPLE = null; JSONStorableStringChooser SCRP_SELECT = null; JSONStorableStringChooser CATE_SELECT = null; JSONStorableStringChooser FEEL_SELECT = null; JSONStorableStringChooser THMS_SELECT = null; void buildUI() { MultiFontPackLoader.init(this); var _all = MultiFontPackLoader.listAll(this); var scrp = MultiFontPackLoader.group_scripts(); var cate = MultiFontPackLoader.group_categories(); var feel = MultiFontPackLoader.group_feelings(); var thms = MultiFontPackLoader.group_themes(); SCRP_SELECT = addChooser(this, true, "Script", scrp, callback); CATE_SELECT = addChooser(this, true, "Category", cate, callback); FEEL_SELECT = addChooser(this, true, "Feeling", feel, callback); THMS_SELECT = addChooser(this, true, "Theme", thms, callback); FONT_SELECT = addChooser(this, false, "Font", _all, callback); TEXTEXAMPLE = addText(this, false, text, 390 + 670); } void callback(String name, String val) { if (false) {} else if (name == "Script" || name == "Category" || name == "Feeling" || name == "Theme") { var scrp = SCRP_SELECT.val; var cate = CATE_SELECT.val; var feel = FEEL_SELECT.val; var thms = THMS_SELECT.val; var filt = MultiFontPackLoader.listFilter(this, scrp, cate, feel, thms); FONT_SELECT.choices = filt; } else if (name == "Font") { var font_name = val; var txt_compo = TEXTEXAMPLE.dynamicText.gameObject.GetComponentInChildren(); if (false) {// alternative implementation MultiFontPackLoader.set(this, font_name, txt_compo); } else { MultiFontPackLoader.set(this, font_name, (_ttf, font) => { SuperController.LogMessage($"[INF] MultiFontPackLoader set bundle [{_ttf}] font [{font}]"); txt_compo.font = font; }); } } } /////////////////////////////////////////////////////////////////////////// public static String text = @"Whereas a common understanding of these rights and freedoms is Proclame la présente Déclaration universelle des droits de l’homme Alle mensen worden vrij en gelijk in waardigheid en rechten geboren. da De forenede Nationers folk i pagten påny har bekræftet deres принимая во внимание, что народы Объединенных Наций подтвердили Üye devletlerin, Birleşmiş Milletler Teşkilatı ile işbirliği ederek Todos os seres humanos nascem livres e iguais em dignidade 국제연합의 모든 사람들은 그 헌장에서 기본적 인권, 인간의 존엄과 가치, 그리고 남녀의 동등한 권리에 대한 人人生而自由,在尊嚴和權利上一律平等。他們賦有理性和良心,並應以弟兄關係的精神相對待。 法律之前人人平等,並有權享受法律的平等保護,不受任何歧視。人人有權享受平等保護,以免受違反本 社会の各個人及び各機関が、この世界人権宣言を常に念頭に置きながら、加盟国自身の人民の間にも、また การไม่นำพาและการหมิ่นในคุณค่าของสิทธิมนุษยชน ยังผลให้มีการกระทำอันป่าเถื่อน ولما كانت الدول الأعضاء قد تعهدت بالتعاون مع الأمم المتحدة على چونکہ اقوامِ متحدہ کی ممبر قوموں نے اپنے چارٹر میں بنیادی انسانی Nhân dân các nước thành viên Liên Hợp Quốc trong bản Hiến chương"; static String getPluginPath(MVRScript script) { var sid = script.name.Substring(0, script.name.IndexOf('_')); var nme = script.manager.GetJSON()["plugins"][sid].Value; return nme.Substring(0, nme.LastIndexOfAny(new[] { '/', '\\' })); } public static ListloadJson(MVRScript script) { var list = new List(); var path = $"{getPluginPath(script)}/src/favorite.json"; var json = (JSONClass)script.LoadJSON(path); var jarr = json.HasKey("favorite") == false ? null : json["favorite"] as JSONArray; if (jarr != null) foreach (JSONNode f in jarr) list.Add(f.Value); if (list.Contains("Default") == false) list.Insert(0, "Default"); return list; } public static JSONStorableStringChooser addChooser(MVRScript script, bool left, string name, Listpoplist, System.Actionfunc) { var init_val = poplist.Count > 0 ? poplist[0] : ""; var storable = new JSONStorableStringChooser(name, poplist, init_val, name); script.CreateFilterablePopup(storable, !left); storable.setCallbackFunction = new JSONStorableStringChooser.SetStringCallback((String v) => func(name, v)); return storable; } public static JSONStorableString addText(MVRScript script, bool left, string text, float height) { var storable = new JSONStorableString("Info", text); var uid_text = script.CreateTextField(storable, !left); uid_text.height = height; return storable; } }