public void createLabel(GameObject go, int i) { if (go?.transform == null) { return; } GameObject label = new GameObject("Label"); Transform child = go.transform.FindChild("Arrow Prompt(Clone)/Labels/Inspect"); if (child?.gameObject == null) { return; } GameObject oldLabel = child.gameObject; if (oldLabel?.transform?.parent?.parent?.parent == null) { return; } //RectTransform RectTransform rectTransform = oldLabel.GetComponent <RectTransform>(); if (rectTransform == null) { return; } label.AddComponent(rectTransform); //MeshRenderer MeshRenderer meshRenderer = oldLabel.GetComponent <MeshRenderer>(); if (meshRenderer == null) { return; } label.AddComponent(meshRenderer); //MeshFilter MeshFilter meshFilter = oldLabel.GetComponent <MeshFilter>(); if (meshFilter == null) { return; } label.AddComponent(meshFilter); //TextContainer TextContainer textContainer = oldLabel.GetComponent <TextContainer>(); if (textContainer == null) { return; } label.AddComponent(textContainer); //TextMeshPro TextMeshPro textMeshPro = oldLabel.GetComponent <TextMeshPro>(); if (textMeshPro == null) { return; } label.AddComponent(textMeshPro); //ChangeFontByLanguage ChangeFontByLanguage changeFontByLanguage = oldLabel.GetComponent <ChangeFontByLanguage>(); if (changeFontByLanguage == null) { return; } label.AddComponent(changeFontByLanguage); if (label.transform?.localPosition == null) { return; } label.transform.parent = oldLabel.transform.parent.parent.parent; label.transform.localPosition = label.transform.localPosition + (Vector3.up * 2.4f); label.transform.localPosition = label.transform.localPosition + (Vector3.right * 0.14f); label.SetActive(true); TextMeshPro tmp = label.GetComponent <TextMeshPro>(); if (tmp == null) { return; } ChangeFontByLanguage fonts = label.GetComponent <ChangeFontByLanguage>(); if (fonts == null) { return; } tmp.font = fonts.defaultFont; string a = Language.Language.CurrentLanguage().ToString(); switch (a) { case "JA": tmp.font = fonts.fontJA; break; case "RU": tmp.font = fonts.fontRU; break; } tmp.fontSize = 7; tmp.alignment = TextAlignmentOptions.Center; tmp.text = BossInfo.itemName(i); TextMeshPro textMeshPro2 = label.GetComponent <TextMeshPro>(); if (textMeshPro2 != null) { tmp.faceColor = new Color32(textMeshPro2.faceColor.r, textMeshPro2.faceColor.g, textMeshPro2.faceColor.b, 0); } ItemTextFader itf = go.AddComponent <ItemTextFader>(); if (itf != null) { itf.tmp = tmp; itf.id = i; } }
private void OnChangeFontByLanguageSetFont(On.ChangeFontByLanguage.orig_SetFont orig, ChangeFontByLanguage self) { orig(self); Log(1); if (Language.Language.CurrentLanguage() == LanguageCode.TH) { Log(2); bool json = true; if (json) { if (fa == null) { Log(3); Assembly asm = Assembly.GetExecutingAssembly(); Log(4); using (Stream s = asm.GetManifestResourceStream("LanguageSupport.Resources.noto_serif_thai_bold.json")) { Log(5); if (s == null) { return; } Log(6); byte[] buffer = new byte[s.Length]; Log(7); s.Read(buffer, 0, buffer.Length); Log(8); s.Dispose(); Log(9); string jsonText = System.Text.Encoding.UTF8.GetString(buffer); Log(10); fa = JsonConvert.DeserializeObject <TMP_FontAsset>(jsonText, new TmpFontConverter()); Log(10.5); fa.name = "noto_serif_thai_bold_tmpro"; Log(11); Object.DontDestroyOnLoad(fa); } fa.atlas = null; // texture2d fa.material = new Material(Shader.Find("GUI/Text Shader")); using (Stream s = asm.GetManifestResourceStream("LanguageSupport.Resources.noto_serif_thai_bold.png")) { if (s != null) { byte[] buffer = new byte[s.Length]; s.Read(buffer, 0, buffer.Length); s.Dispose(); //Create texture from bytes var tex = new Texture2D(2, 2); tex.LoadImage(buffer, true); // Create sprite from texture // Split is to cut off the DreamKing.Resources. and the .png atlas = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); Object.DontDestroyOnLoad(atlas); } } fa.material.SetTexture("_MainTex", atlas.texture); fa.atlas = atlas.texture; fa.material.SetColor("_Color", Color.white); } if (fa != null) { Log(20); self.GetAttr <ChangeFontByLanguage, TextMeshPro>("tmpro").font = fa; //var tmp = self.GetAttr<ChangeFontByLanguage, TextMeshPro>("tmpro"); //Log(21); //tmp.font = fa; //Log(22); //self.SetAttr<ChangeFontByLanguage, TextMeshPro>("tmpro", tmp); } } else { if (abFa == null) { Log(12); Assembly asm = Assembly.GetExecutingAssembly(); Log(13); using (Stream s = asm.GetManifestResourceStream("LanguageSupport.Resources.tmprofont")) { Log(14); if (s == null) { return; } Log(15); abFa = AssetBundle.LoadFromStream(s); Log(16); Object.DontDestroyOnLoad(abFa); } } Log(17); if (fa == null && abFa != null) { Log(18); fa = abFa.LoadAsset <TMP_FontAsset>("noto_serif_thai_bold.asset"); Log(18.5); fa.name = "noto_serif_thai_bold_tmpro"; Log(19); Object.DontDestroyOnLoad(fa); } if (fa != null) { Log(20); var tmp = (TextMeshPro)typeof(ChangeFontByLanguage).GetField("tmpro", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(self); Log(21); tmp.font = fa; Log(22); typeof(ChangeFontByLanguage).GetField("tmpro", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(self, tmp); } } } Log(23); }