Пример #1
0
        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;
            }
        }
Пример #2
0
        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);
        }