Пример #1
0
        public static Texture2D RenderTokenizedText(UIDynamicFont uidynamicFont, float textScale, string text, Color baseColor, out Vector2 textRealSize)
        {
            if (text.IsNullOrWhiteSpace())
            {
                textRealSize = Vector2.zero;
                return(new Texture2D(1, 1));
            }
            var textColors = new Stack <ColorInfo>();

            textColors.Clear();
            textColors.Push(new ColorInfo(baseColor));
            var     tokens  = (PoolList <UIMarkupToken>) typeof(UIMarkupTokenizer).GetMethod("Tokenize", RedirectorUtils.allFlags).Invoke(null, new object[] { text });
            Vector2 texSize = CalculateTextureSize(uidynamicFont, textScale, ref tokens, out int startYPos);

            if (texSize.x <= 0 || texSize.y <= 0)
            {
                textRealSize = Vector2.zero;
                return(new Texture2D(1, 1));
            }
            var position = new Vector3(0, startYPos);
            var result   = new Texture2D((int)texSize.x, (int)texSize.y, TextureFormat.RGBA32, false);

            result.SetPixels(new Color[result.width * result.height]);
            RenderLine(tokens, uidynamicFont, textScale, textColors, position, result);
            tokens.Release();
            textRealSize = new Vector2(result.width, result.height);
            return(RescalePowerOf2(result));
        }
        private UIButton CreateButton(UIPanel parent, string name, string text, string tooltip, MouseEventHandler onClick)
        {
            //Template: PublicTransportInfoViewPanel.LinesOverview.LinesOverview

            var btn = parent.AddUIComponent <UIButton>();

            btn.name = name;

            btn.height           = 19.5f;
            btn.width            = 120.0f;
            btn.disabledBgSprite = "ButtonMenuDisabled";
            btn.disabledColor    = new Color32(153, 153, 153, 255);
            btn.hoveredBgSprite  = "ButtonMenuHovered";
            btn.hoveredTextColor = new Color32(7, 132, 255, 255);
            btn.normalBgSprite   = "ButtonMenu";
            btn.outlineColor     = new Color32(0, 0, 0, 255);
            btn.pressedBgSprite  = "ButtonMenuPressed";
            btn.pressedTextColor = new Color32(30, 30, 44, 255);
            btn.textPadding      = new RectOffset(10, 10, 4, 2);
            btn.textScale        = 0.75f;
            btn.font             = UIDynamicFont.FindByName("OpenSans-Regular");

            btn.text        = text;
            btn.tooltip     = tooltip;
            btn.eventClick += onClick;

            return(btn);
        }
Пример #3
0
        private static Vector2 MeasureTextWidth(UIDynamicFont font, string text, float textScale, out Vector2 yBounds)
        {
            float width = 1f;
            int   size  = Mathf.CeilToInt(font.size * textScale);

            font.RequestCharacters(text, size, FontStyle.Normal);
            yBounds = new Vector2(9999999f, -999999999f);
            for (int i = 0; i < text.Length; i++)
            {
                char c = text[i];
                font.baseFont.GetCharacterInfo(c, out CharacterInfo characterInfo, size, FontStyle.Normal);
                if (c == '\t')
                {
                    width += 3f * characterSpacing;
                }
                else
                {
                    width    += ((c != ' ') ? characterInfo.maxX : (characterInfo.advance + (characterSpacing * textScale)));
                    yBounds.x = Mathf.Min(yBounds.x, characterInfo.minY);
                    yBounds.y = Mathf.Max(yBounds.y, characterInfo.maxY);
                }
            }
            if (text.Length > 2)
            {
                width += (text.Length - 2) * characterSpacing * textScale;
            }
            return(new Vector2(width + 6, yBounds.y - yBounds.x + 6));
        }
Пример #4
0
 // Token: 0x06001451 RID: 5201 RVA: 0x00058EF8 File Offset: 0x000570F8
 private static void RenderLine(PoolList <UIMarkupToken> m_Tokens, UIDynamicFont uidynamicFont, float textScale, Stack <ColorInfo> colors, Vector3 position, Texture2D outputTexture)
 {
     for (int i = 0; i < m_Tokens.Count; i++)
     {
         UIMarkupToken     uimarkupToken = m_Tokens[i];
         UIMarkupTokenType tokenType     = uimarkupToken.tokenType;
         if (tokenType == UIMarkupTokenType.Text)
         {
             ColorInfo colorInfo = colors.Peek();
             position.x = RenderText(uidynamicFont, uimarkupToken.value, position, textScale, colorInfo.color, default, outputTexture);
Пример #5
0
        void RequestCharacterInfo()
        {
            UIDynamicFont uIDynamicFont = uifont as UIDynamicFont;

            if (uIDynamicFont == null || !UIFontManager.IsDirty(uIDynamicFont))
            {
                return;
            }

            uIDynamicFont.AddCharacterRequest("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.-:", 1, FontStyle.Normal);
        }
Пример #6
0
        public static Texture2D RenderTextToTexture(UIDynamicFont font, string text, Color textColor, out Vector2 textDimensions, Color outlineColor = default)
        {
            float textScale = 2f;

            textDimensions = MeasureTextWidth(font, text, textScale, out Vector2 yBounds);


            var tex = new Texture2D((int)textDimensions.x, (int)textDimensions.y, TextureFormat.ARGB32, false);

            tex.SetPixels(new Color[(int)(textDimensions.x * textDimensions.y)]);

            RenderText(font, text, new Vector3(0, -yBounds.x), textScale, textColor, outlineColor, tex);

            return(RescalePowerOf2(tex));
        }
        //public void ButtonEnabler(UITextureSprite sPrite) {

        //if (sPrite == FavCimsCBMenuSprite) {

        //FavCimsCBMenuSprite.texture = FavCimsCBETexture;
        //FavCimsBBMenuSprite.texture = FavCimsBBDTexture;
        //FavCimsSBMenuSprite.texture = FavCimsSBDTexture;

        //} else if (sPrite == FavCimsBBMenuSprite) {

        //FavCimsCBMenuSprite.texture = FavCimsCBDTexture;
        //FavCimsBBMenuSprite.texture = FavCimsBBETexture;
        //FavCimsSBMenuSprite.texture = FavCimsSBDTexture;

        //} else if (sPrite == FavCimsSBMenuSprite) {

        //FavCimsCBMenuSprite.texture = FavCimsCBDTexture;
        //FavCimsBBMenuSprite.texture = FavCimsBBDTexture;
        //FavCimsSBMenuSprite.texture = FavCimsSBETexture;

        //}
        //return;
        //}

        public override void Start()
        {
            var uiView = UIView.GetAView();

            this.name    = "FavCimsPanel";
            this.width   = 1200;
            this.height  = 700;
            this.opacity = 0.95f;
            this.eventVisibilityChanged += (component, value) => change_visibility_event();

            //Main Panel BG Texture
            Texture FavCimsMainBGTexture = ResourceLoader.loadTexture((int)this.width, (int)this.height, "UIMainPanel.mainbg.png");

            FavCimsMainBGTexture.wrapMode   = TextureWrapMode.Clamp;
            FavCimsMainBGTexture.filterMode = FilterMode.Bilinear;
            //FavCimsMainBGTexture.anisoLevel = 9; Set 1 Bad to 9 Very God
            FavCimsMainBGTexture.name = "FavCimsMainBGTexture";
            UITextureSprite FavCimsMainBGSprite;

            FavCimsMainBGSprite                  = this.AddUIComponent <UITextureSprite> ();
            FavCimsMainBGSprite.name             = "FavCimsMainBGSprite";
            FavCimsMainBGSprite.texture          = FavCimsMainBGTexture;
            FavCimsMainBGSprite.relativePosition = new Vector3(0, 0);

            FavCimsMainBGSprite.eventMouseDown += delegate {
                if (Input.GetMouseButton(0))
                {
                    if (this.GetComponentInChildren <WindowController> () != null)
                    {
                        this.PanelMover = this.GetComponentInChildren <WindowController> ();
                        this.PanelMover.ComponentToMove = this;
                        this.PanelMover.Stop            = false;
                        this.PanelMover.Start();
                    }
                    else
                    {
                        this.PanelMover = this.AddUIComponent(typeof(WindowController)) as WindowController;
                        this.PanelMover.ComponentToMove = this;
                    }
                    this.opacity = 0.5f;
                }
            };

            FavCimsMainBGSprite.eventMouseUp += delegate {
                if (this.PanelMover != null)
                {
                    this.PanelMover.Stop            = true;
                    this.PanelMover.ComponentToMove = null;
                    this.PanelMover = null;
                }
                this.opacity = 1f;
            };

            //Main Panel Title Texture
            Texture FavCimsTitleTexture;

            FavCimsTitleTexture = ResourceLoader.loadTexture((int)this.width, 58, "UIMainPanel.favcimstitle.png");

            FavCimsTitleTexture.wrapMode   = TextureWrapMode.Clamp;
            FavCimsTitleTexture.filterMode = FilterMode.Bilinear;
            FavCimsTitleTexture.mipMapBias = -0.5f;
            //FavCimsTitleTexture.anisoLevel = 9; // Set 1 Bad to 9 Very God

            FavCimsTitleTexture.name   = "FavCimsTitleTexture";
            FavCimsTitleSprite         = FavCimsMainBGSprite.AddUIComponent <UITextureSprite> ();
            FavCimsTitleSprite.name    = "FavCimsTitleSprite";
            FavCimsTitleSprite.texture = FavCimsTitleTexture;
            float FavCimsTitleSpriteRelPosX = ((this.width / 2) - (float)FavCimsTitleTexture.width / 2);

            FavCimsTitleSprite.relativePosition = new Vector3(FavCimsTitleSpriteRelPosX, 0);

            ///////////////////////////////////////////////
            //Game Default Close Button
            //////////////////////////////////////////////

            UIButton FavCimsMenuCloseButton = this.AddUIComponent <UIButton> ();

            FavCimsMenuCloseButton.name            = "FavCimsMenuCloseButton";
            FavCimsMenuCloseButton.width           = 32;
            FavCimsMenuCloseButton.height          = 32;
            FavCimsMenuCloseButton.normalBgSprite  = "buttonclose";
            FavCimsMenuCloseButton.hoveredBgSprite = "buttonclosehover";
            FavCimsMenuCloseButton.pressedBgSprite = "buttonclosepressed";
            FavCimsMenuCloseButton.opacity         = 1;
            FavCimsMenuCloseButton.useOutline      = true;
            FavCimsMenuCloseButton.playAudioEvents = true;

            FavCimsMenuCloseButton.eventClick += (component, eventParam) => FavoritesCimsButton.FavCimsPanelToggle();

            //Printing
            FavCimsMenuCloseButton.relativePosition = new Vector3(this.width - (FavCimsMenuCloseButton.width * 1.5f), ((float)FavCimsTitleTexture.height / 2) - FavCimsMenuCloseButton.height / 2);

            ///////////////////////////////////////////////
            //Main Panel Menu Background Texture
            ///////////////////////////////////////////////

            Texture FavCimsBGMenuTexture;

            FavCimsBGMenuTexture = ResourceLoader.loadTexture((int)this.width - 10, 70, "UIMainPanel.submenubar.png");

            FavCimsBGMenuTexture.wrapMode   = TextureWrapMode.Clamp;
            FavCimsBGMenuTexture.filterMode = FilterMode.Bilinear;
            FavCimsBGMenuTexture.name       = "FavCimsBGMenuTexture";
            UITextureSprite FavCimsBGMenuSprite = FavCimsMainBGSprite.AddUIComponent <UITextureSprite> ();

            FavCimsBGMenuSprite.name    = "FavCimsBGMenuSprite";
            FavCimsBGMenuSprite.texture = FavCimsBGMenuTexture;
            float FavCimsBGMenuSpriteRelPosX = ((this.width / 2) - (float)FavCimsBGMenuTexture.width / 2);

            FavCimsBGMenuSprite.relativePosition = new Vector3(FavCimsBGMenuSpriteRelPosX, 58);

            //Citizen Button Texture (Enabled & Disabled)
            FavCimsCBETexture = ResourceLoader.loadTexture(200, 59, "UIMainPanel.citizenbuttonenabled.png");
            FavCimsCBDTexture = ResourceLoader.loadTexture(200, 59, "UIMainPanel.citizenbuttondisabled.png");

            FavCimsCBETexture.wrapMode   = TextureWrapMode.Clamp;
            FavCimsCBETexture.filterMode = FilterMode.Bilinear;
            FavCimsCBETexture.name       = "FavCimsCBETexture";
            FavCimsCBETexture.mipMapBias = -0.5f;
            FavCimsCBDTexture.wrapMode   = TextureWrapMode.Clamp;
            FavCimsCBDTexture.filterMode = FilterMode.Bilinear;
            FavCimsCBDTexture.name       = "FavCimsCBDTexture";
            FavCimsCBDTexture.mipMapBias = -0.5f;

            FavCimsCBMenuSprite         = FavCimsMainBGSprite.AddUIComponent <UITextureSprite> ();
            FavCimsCBMenuSprite.name    = "FavCimsBGMenuSprite";
            FavCimsCBMenuSprite.texture = FavCimsCBETexture;

            //Citizens Transparent Button (For Easy Text Change)
            FavCimsBCMenuButton                  = this.AddUIComponent <UIButton> ();
            FavCimsBCMenuButton.name             = "FavCimsBCMenuButton";
            FavCimsBCMenuButton.width            = FavCimsCBMenuSprite.width;
            FavCimsBCMenuButton.height           = FavCimsCBMenuSprite.height;
            FavCimsBCMenuButton.useOutline       = true;
            FavCimsBCMenuButton.playAudioEvents  = true;
            FavCimsBCMenuButton.font             = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsBCMenuButton.textScale        = 1.8f;
            FavCimsBCMenuButton.textColor        = new Color32(204, 204, 51, 40);       //r,g,b,a
            FavCimsBCMenuButton.hoveredTextColor = new Color32(204, 102, 0, 20);
            FavCimsBCMenuButton.pressedTextColor = new Color32(153, 0, 0, 0);
            FavCimsBCMenuButton.focusedTextColor = new Color32(102, 153, 255, 147);
            FavCimsBCMenuButton.textPadding.left = 15;
            FavCimsBCMenuButton.useDropShadow    = true;
            FavCimsBCMenuButton.tooltipBox       = uiView.defaultTooltipBox;

            //Printing
            FavCimsCBMenuSprite.relativePosition = new Vector3(27, 69);
            FavCimsBCMenuButton.relativePosition = new Vector3(27, 69);

            ///////////////////////////////////////////////
            //Buildings Button Texture (Enabled & Disabled)
            //////////////////////////////////////////////

            /*
             * FavCimsBBETexture = ResourceLoader.loadTexture (200, 59, "UIMainPanel.buildingsbuttonenabled.png");
             * FavCimsBBDTexture = ResourceLoader.loadTexture (200, 59, "UIMainPanel.buildingsbuttondisabled.png");
             *
             * FavCimsBBETexture.wrapMode = TextureWrapMode.Clamp;
             * FavCimsBBETexture.filterMode = FilterMode.Bilinear;
             * FavCimsBBETexture.name = "FavCimsBBETexture";
             * FavCimsBBETexture.mipMapBias = -0.5f;
             * FavCimsBBDTexture.wrapMode = TextureWrapMode.Clamp;
             * FavCimsBBDTexture.filterMode = FilterMode.Bilinear;
             * FavCimsBBDTexture.name = "FavCimsBBETexture";
             * FavCimsBBDTexture.mipMapBias = -0.5f;
             * FavCimsBBMenuSprite = FavCimsMainBGSprite.AddUIComponent<UITextureSprite> ();
             * FavCimsBBMenuSprite.name = "FavCimsBBMenuSprite";
             * FavCimsBBMenuSprite.texture = FavCimsBBDTexture;
             *
             * //Buildings Transparent Button (For Easy Text Change)
             * FavCimsBBMenuButton = this.AddUIComponent<UIButton> ();
             * FavCimsBBMenuButton.name = "FavCimsBBMenuButton";
             * FavCimsBBMenuButton.width = FavCimsBBETexture.width;
             * FavCimsBBMenuButton.height = FavCimsBBETexture.height;
             * FavCimsBBMenuButton.useOutline = true;
             * FavCimsBBMenuButton.playAudioEvents = true;
             * FavCimsBBMenuButton.font = UIDynamicFont.FindByName ("OpenSans-Regular");
             * FavCimsBBMenuButton.textScale = 1.8f;
             * FavCimsBBMenuButton.textColor = new Color32 (204, 204, 51, 40); //r,g,b,a
             * FavCimsBBMenuButton.hoveredTextColor = new Color32 (204, 102, 0, 20);
             * FavCimsBBMenuButton.pressedTextColor = new Color32 (153, 0, 0, 0);
             * FavCimsBBMenuButton.focusedTextColor = new Color32 (102, 153, 255, 147);
             * FavCimsBBMenuButton.textPadding.left = 20;
             * FavCimsBBMenuButton.useDropShadow = true;
             * FavCimsBBMenuButton.tooltipBox = uiView.defaultTooltipBox;
             *
             * //Printing
             * //FavCimsBBMenuSprite.relativePosition = new Vector3 (FavCimsCBMenuSprite.position.x + FavCimsBBMenuSprite.width + 21, 69); //html => margin-left:21px;
             * //FavCimsBBMenuButton.relativePosition = new Vector3 (FavCimsBCMenuButton.position.x + FavCimsBBMenuButton.width + 35, 69);
             *
             * ///////////////////////////////////////////////
             * //Stats Button Texture (Enabled & Disabled)
             * //////////////////////////////////////////////
             *
             * FavCimsSBETexture = ResourceLoader.loadTexture (200, 59, "UIMainPanel.statsbuttonenabled.png");
             * FavCimsSBDTexture = ResourceLoader.loadTexture (200, 59, "UIMainPanel.statsbuttondisabled.png");
             *
             * FavCimsSBETexture.wrapMode = TextureWrapMode.Clamp;
             * FavCimsSBETexture.filterMode = FilterMode.Bilinear;
             * FavCimsSBETexture.name = "FavCimsSBETexture";
             * FavCimsSBETexture.mipMapBias = -0.5f;
             * FavCimsSBDTexture.wrapMode = TextureWrapMode.Clamp;
             * FavCimsSBDTexture.filterMode = FilterMode.Bilinear;
             * FavCimsSBDTexture.name = "FavCimsSBETexture";
             * FavCimsSBDTexture.mipMapBias = -0.5f;
             * FavCimsSBMenuSprite = FavCimsMainBGSprite.AddUIComponent<UITextureSprite> ();
             * FavCimsSBMenuSprite.name = "FavCimsSBMenuSprite";
             * FavCimsSBMenuSprite.texture = FavCimsSBDTexture;
             *
             * //Stats Transparent Button (For Easy Text Change)
             * FavCimsBSMenuButton = this.AddUIComponent<UIButton> ();
             * FavCimsBSMenuButton.name = "FavCimsBSMenuButton";
             * FavCimsBSMenuButton.width = FavCimsSBETexture.width;
             * FavCimsBSMenuButton.height = FavCimsSBETexture.height;
             * FavCimsBSMenuButton.useOutline = true;
             * FavCimsBSMenuButton.playAudioEvents = true;
             * FavCimsBSMenuButton.font = UIDynamicFont.FindByName ("OpenSans-Regular");
             * FavCimsBSMenuButton.textScale = 1.8f;
             * FavCimsBSMenuButton.textColor = new Color32 (204, 204, 51, 40); //r,g,b,a
             * FavCimsBSMenuButton.hoveredTextColor = new Color32 (204, 102, 0, 20);
             * FavCimsBSMenuButton.pressedTextColor = new Color32 (153, 0, 0, 0);
             * FavCimsBSMenuButton.focusedTextColor = new Color32 (102, 153, 255, 147);
             * FavCimsBSMenuButton.textPadding.left = 0;
             * FavCimsBSMenuButton.useDropShadow = true;
             * FavCimsBSMenuButton.tooltipBox = uiView.defaultTooltipBox;
             *
             * //Printing
             * //FavCimsSBMenuSprite.relativePosition = new Vector3 (FavCimsBBMenuSprite.position.x + FavCimsSBMenuSprite.width + 21, 69); //html => margin-left:21px;
             * //FavCimsBSMenuButton.relativePosition = new Vector3 (FavCimsBBMenuButton.position.x + FavCimsBSMenuButton.width + 21, 69); //html => margin-left:21px;
             *
             * ///////////////////////////////////////////////
             * //Click Operation for Main Buttons
             * //////////////////////////////////////////////
             *
             * //FavCimsBCMenuButton.eventClick += (component, eventParam) => ButtonEnabler (FavCimsCBMenuSprite);
             * //FavCimsBBMenuButton.eventClick += (component, eventParam) => ButtonEnabler (FavCimsBBMenuSprite);
             * //FavCimsBSMenuButton.eventClick += (component, eventParam) => ButtonEnabler (FavCimsSBMenuSprite);
             */

            ///////////////////////////////////////////////
            //Citizens Panel
            //////////////////////////////////////////////

            CitizensPanel                  = this.AddUIComponent <UIPanel> ();
            CitizensPanel.name             = "CitizensPanel";
            CitizensPanel.width            = 1190;
            CitizensPanel.height           = 558;
            CitizensPanel.relativePosition = new Vector3(((this.width / 2) - (float)CitizensPanel.width / 2), 128);

            ///////////////////////////////////////////////
            //Citizens Panel Body Background
            //////////////////////////////////////////////

            FavCimsMainBodyTexture = ResourceLoader.loadTexture(1190, 558, "UIMainPanel.bodybg.png");

            FavCimsMainBodyTexture.wrapMode   = TextureWrapMode.Clamp;
            FavCimsMainBodyTexture.filterMode = FilterMode.Bilinear;
            FavCimsMainBodyTexture.name       = "FavCimsMainBodyTexture";

            FavCimsBodySprite         = CitizensPanel.AddUIComponent <UITextureSprite> ();
            FavCimsBodySprite.name    = "FavCimsCBGBodySprite";
            FavCimsBodySprite.texture = FavCimsMainBodyTexture;
            //Printing
            FavCimsBodySprite.relativePosition = Vector3.zero;

            ///////////////////////////////////////////////
            //Index Column Background
            //////////////////////////////////////////////

            Texture FavCimsIndexBgBar = ResourceLoader.loadTexture(1146, 26, "UIMainPanel.indexerbgbar.png");

            FavCimsIndexBgBar.wrapMode   = TextureWrapMode.Clamp;
            FavCimsIndexBgBar.filterMode = FilterMode.Bilinear;
            FavCimsIndexBgBar.name       = "FavCimsIndexBgBar";
            FavCimsIndexBgBar.mipMapBias = -0.5f;
            UITextureSprite FavCimsIndexBgBarSprite = CitizensPanel.AddUIComponent <UITextureSprite> ();

            FavCimsIndexBgBarSprite.name    = "FavCimsIndexBgBarSprite";
            FavCimsIndexBgBarSprite.texture = FavCimsIndexBgBar;

            //Printing
            FavCimsIndexBgBarSprite.relativePosition = new Vector3(21, 7);

            ////////////////////////////////////////////////
            //Index Columns (Button for future sort order...)
            ////////////////////////////////////////////////

            //Status
            FavCimsHappinesColText        = CitizensPanel.AddUIComponent <UIButton> ();
            FavCimsHappinesColText.name   = "FavCimsHappinesColText";
            FavCimsHappinesColText.width  = 60;
            FavCimsHappinesColText.height = FavCimsIndexBgBar.height;
            FavCimsHappinesColText.textVerticalAlignment   = UIVerticalAlignment.Middle;
            FavCimsHappinesColText.textHorizontalAlignment = UIHorizontalAlignment.Center;
            FavCimsHappinesColText.playAudioEvents         = true;
            FavCimsHappinesColText.font             = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsHappinesColText.textScale        = 0.7f;
            FavCimsHappinesColText.textColor        = new Color32(204, 204, 51, 40);       //r,g,b,a
            FavCimsHappinesColText.hoveredTextColor = new Color32(204, 102, 0, 20);
            FavCimsHappinesColText.pressedTextColor = new Color32(153, 0, 0, 0);
            FavCimsHappinesColText.focusedTextColor = new Color32(102, 153, 255, 147);
            FavCimsHappinesColText.textPadding.left = 0;
            FavCimsHappinesColText.tooltipBox       = uiView.defaultTooltipBox;

            //Printing Status
            FavCimsHappinesColText.relativePosition = new Vector3(FavCimsIndexBgBarSprite.relativePosition.x + 6, FavCimsIndexBgBarSprite.relativePosition.y + 1);

            //Name
            FavCimsNameColText        = CitizensPanel.AddUIComponent <UIButton> ();
            FavCimsNameColText.name   = "FavCimsNameColText";
            FavCimsNameColText.width  = 180;
            FavCimsNameColText.height = FavCimsIndexBgBar.height;
            FavCimsNameColText.textVerticalAlignment   = UIVerticalAlignment.Middle;
            FavCimsNameColText.textHorizontalAlignment = UIHorizontalAlignment.Center;
            FavCimsNameColText.playAudioEvents         = true;
            FavCimsNameColText.font             = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsNameColText.textScale        = 0.7f;
            FavCimsNameColText.textColor        = new Color32(204, 204, 51, 40);       //r,g,b,a
            FavCimsNameColText.hoveredTextColor = new Color32(204, 102, 0, 20);
            FavCimsNameColText.pressedTextColor = new Color32(153, 0, 0, 0);
            FavCimsNameColText.focusedTextColor = new Color32(102, 153, 255, 147);
            FavCimsNameColText.textPadding.left = 0;
            FavCimsNameColText.tooltipBox       = uiView.defaultTooltipBox;

            //Printing Name
            FavCimsNameColText.relativePosition = new Vector3(FavCimsHappinesColText.relativePosition.x + FavCimsHappinesColText.width, FavCimsIndexBgBarSprite.relativePosition.y + 1);

            //Age Phase
            FavCimsAgePhaseColText        = CitizensPanel.AddUIComponent <UIButton> ();
            FavCimsAgePhaseColText.name   = "FavCimsAgePhaseColText";
            FavCimsAgePhaseColText.width  = 120;
            FavCimsAgePhaseColText.height = FavCimsIndexBgBar.height;
            FavCimsAgePhaseColText.textVerticalAlignment   = UIVerticalAlignment.Middle;
            FavCimsAgePhaseColText.textHorizontalAlignment = UIHorizontalAlignment.Center;
            FavCimsAgePhaseColText.playAudioEvents         = true;
            FavCimsAgePhaseColText.font             = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsAgePhaseColText.textScale        = 0.7f;
            FavCimsAgePhaseColText.textColor        = new Color32(204, 204, 51, 40);       //r,g,b,a
            FavCimsAgePhaseColText.hoveredTextColor = new Color32(204, 102, 0, 20);
            FavCimsAgePhaseColText.pressedTextColor = new Color32(153, 0, 0, 0);
            FavCimsAgePhaseColText.focusedTextColor = new Color32(102, 153, 255, 147);
            FavCimsAgePhaseColText.textPadding.left = 0;
            FavCimsAgePhaseColText.tooltipBox       = uiView.defaultTooltipBox;

            //Printing Age Phase
            FavCimsAgePhaseColText.relativePosition = new Vector3(FavCimsNameColText.relativePosition.x + FavCimsNameColText.width, FavCimsIndexBgBarSprite.relativePosition.y + 1);

            //Age
            FavCimsAgeColText        = CitizensPanel.AddUIComponent <UIButton> ();
            FavCimsAgeColText.name   = "FavCimsAgeColText";
            FavCimsAgeColText.width  = 40;
            FavCimsAgeColText.height = FavCimsIndexBgBar.height;
            FavCimsAgeColText.textVerticalAlignment   = UIVerticalAlignment.Middle;
            FavCimsAgeColText.textHorizontalAlignment = UIHorizontalAlignment.Center;
            FavCimsAgeColText.playAudioEvents         = true;
            FavCimsAgeColText.font             = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsAgeColText.textScale        = 0.7f;
            FavCimsAgeColText.textColor        = new Color32(204, 204, 51, 40);       //r,g,b,a
            FavCimsAgeColText.hoveredTextColor = new Color32(204, 102, 0, 20);
            FavCimsAgeColText.pressedTextColor = new Color32(153, 0, 0, 0);
            FavCimsAgeColText.focusedTextColor = new Color32(102, 153, 255, 147);
            FavCimsAgeColText.textPadding.left = 0;
            FavCimsAgeColText.tooltipBox       = uiView.defaultTooltipBox;

            //Printing Age
            FavCimsAgeColText.relativePosition = new Vector3(FavCimsAgePhaseColText.relativePosition.x + FavCimsAgePhaseColText.width, FavCimsIndexBgBarSprite.relativePosition.y + 1);

            //Education
            FavCimsEduColText        = CitizensPanel.AddUIComponent <UIButton> ();
            FavCimsEduColText.name   = "FavCimsEduColText";
            FavCimsEduColText.width  = 140;
            FavCimsEduColText.height = FavCimsIndexBgBar.height;
            FavCimsEduColText.textVerticalAlignment   = UIVerticalAlignment.Middle;
            FavCimsEduColText.textHorizontalAlignment = UIHorizontalAlignment.Center;
            FavCimsEduColText.playAudioEvents         = true;
            FavCimsEduColText.font             = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsEduColText.textScale        = 0.7f;
            FavCimsEduColText.textColor        = new Color32(204, 204, 51, 40);       //r,g,b,a
            FavCimsEduColText.hoveredTextColor = new Color32(204, 102, 0, 20);
            FavCimsEduColText.pressedTextColor = new Color32(153, 0, 0, 0);
            FavCimsEduColText.focusedTextColor = new Color32(102, 153, 255, 147);
            FavCimsEduColText.textPadding.left = 0;
            FavCimsEduColText.tooltipBox       = uiView.defaultTooltipBox;

            //Printing Education
            FavCimsEduColText.relativePosition = new Vector3(FavCimsAgeColText.relativePosition.x + FavCimsAgeColText.width, FavCimsIndexBgBarSprite.relativePosition.y + 1);

            //Home
            FavCimsHomeColText        = CitizensPanel.AddUIComponent <UIButton> ();
            FavCimsHomeColText.name   = "FavCimsHomeColText";
            FavCimsHomeColText.width  = 184;
            FavCimsHomeColText.height = FavCimsIndexBgBar.height;
            FavCimsHomeColText.textVerticalAlignment   = UIVerticalAlignment.Middle;
            FavCimsHomeColText.textHorizontalAlignment = UIHorizontalAlignment.Center;
            FavCimsHomeColText.playAudioEvents         = true;
            FavCimsHomeColText.font             = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsHomeColText.textScale        = 0.7f;
            FavCimsHomeColText.textColor        = new Color32(204, 204, 51, 40);       //r,g,b,a
            FavCimsHomeColText.hoveredTextColor = new Color32(204, 102, 0, 20);
            FavCimsHomeColText.pressedTextColor = new Color32(153, 0, 0, 0);
            FavCimsHomeColText.focusedTextColor = new Color32(102, 153, 255, 147);
            FavCimsHomeColText.textPadding.left = 0;
            FavCimsHomeColText.tooltipBox       = uiView.defaultTooltipBox;

            //Printing Home
            FavCimsHomeColText.relativePosition = new Vector3(FavCimsEduColText.relativePosition.x + FavCimsEduColText.width, FavCimsIndexBgBarSprite.relativePosition.y + 1);

            //Working Place
            FavCimsWorkingPlaceColText        = CitizensPanel.AddUIComponent <UIButton> ();
            FavCimsWorkingPlaceColText.name   = "FavCimsWorkingPlaceColText";
            FavCimsWorkingPlaceColText.width  = 180;
            FavCimsWorkingPlaceColText.height = FavCimsIndexBgBar.height;
            FavCimsWorkingPlaceColText.textVerticalAlignment   = UIVerticalAlignment.Middle;
            FavCimsWorkingPlaceColText.textHorizontalAlignment = UIHorizontalAlignment.Center;
            FavCimsWorkingPlaceColText.playAudioEvents         = true;
            FavCimsWorkingPlaceColText.font             = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsWorkingPlaceColText.textScale        = 0.7f;
            FavCimsWorkingPlaceColText.textColor        = new Color32(204, 204, 51, 40);       //r,g,b,a
            FavCimsWorkingPlaceColText.hoveredTextColor = new Color32(204, 102, 0, 20);
            FavCimsWorkingPlaceColText.pressedTextColor = new Color32(153, 0, 0, 0);
            FavCimsWorkingPlaceColText.focusedTextColor = new Color32(102, 153, 255, 147);
            FavCimsWorkingPlaceColText.textPadding.left = 0;
            FavCimsWorkingPlaceColText.tooltipBox       = uiView.defaultTooltipBox;

            //Printing Working Place
            FavCimsWorkingPlaceColText.relativePosition = new Vector3(FavCimsHomeColText.relativePosition.x + FavCimsHomeColText.width, FavCimsIndexBgBarSprite.relativePosition.y + 1);

            //Last Activity
            FavCimsLastActColText        = CitizensPanel.AddUIComponent <UIButton> ();
            FavCimsLastActColText.name   = "FavCimsLastActColText";
            FavCimsLastActColText.width  = 180;
            FavCimsLastActColText.height = FavCimsIndexBgBar.height;
            FavCimsLastActColText.textVerticalAlignment   = UIVerticalAlignment.Middle;
            FavCimsLastActColText.textHorizontalAlignment = UIHorizontalAlignment.Center;
            FavCimsLastActColText.playAudioEvents         = true;
            FavCimsLastActColText.font             = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsLastActColText.textScale        = 0.7f;
            FavCimsLastActColText.textColor        = new Color32(204, 204, 51, 40);       //r,g,b,a
            FavCimsLastActColText.hoveredTextColor = new Color32(204, 102, 0, 20);
            FavCimsLastActColText.pressedTextColor = new Color32(153, 0, 0, 0);
            FavCimsLastActColText.focusedTextColor = new Color32(102, 153, 255, 147);
            FavCimsLastActColText.textPadding.left = 0;
            FavCimsLastActColText.tooltipBox       = uiView.defaultTooltipBox;

            //Printing Last Activity
            FavCimsLastActColText.relativePosition = new Vector3(FavCimsWorkingPlaceColText.relativePosition.x + FavCimsWorkingPlaceColText.width, FavCimsIndexBgBarSprite.relativePosition.y + 1);

            //Close Button
            FavCimsCloseButtonCol        = CitizensPanel.AddUIComponent <UIButton> ();
            FavCimsCloseButtonCol.name   = "FavCimsCloseButtonCol";
            FavCimsCloseButtonCol.width  = 50;
            FavCimsCloseButtonCol.height = FavCimsIndexBgBar.height;
            FavCimsCloseButtonCol.textVerticalAlignment   = UIVerticalAlignment.Middle;
            FavCimsCloseButtonCol.textHorizontalAlignment = UIHorizontalAlignment.Center;
            FavCimsCloseButtonCol.playAudioEvents         = true;
            FavCimsCloseButtonCol.font              = UIDynamicFont.FindByName("OpenSans-Regular");
            FavCimsCloseButtonCol.textScale         = 0.7f;
            FavCimsCloseButtonCol.textColor         = new Color32(204, 204, 51, 40);      //r,g,b,a
            FavCimsCloseButtonCol.hoveredTextColor  = new Color32(204, 102, 0, 20);
            FavCimsCloseButtonCol.pressedTextColor  = new Color32(153, 0, 0, 0);
            FavCimsCloseButtonCol.focusedTextColor  = new Color32(102, 153, 255, 147);
            FavCimsCloseButtonCol.textPadding.right = 6;
            FavCimsCloseButtonCol.tooltipBox        = uiView.defaultTooltipBox;

            //Printing Close Button
            FavCimsCloseButtonCol.relativePosition = new Vector3(FavCimsLastActColText.relativePosition.x + FavCimsLastActColText.width, FavCimsIndexBgBarSprite.relativePosition.y + 1);

            ///////////////////////////////////////////////
            /////Rows Panel Body
            ///////////////////////////////////////////////

            FavCimsCitizenRowsPanel        = CitizensPanel.AddUIComponent <UIScrollablePanel> ();
            FavCimsCitizenRowsPanel.name   = "FavCimsCitizenRowsPanel";
            FavCimsCitizenRowsPanel.width  = FavCimsIndexBgBarSprite.width - 12;
            FavCimsCitizenRowsPanel.height = 500;

            FavCimsCitizenRowsPanel.autoLayoutDirection = LayoutDirection.Vertical;
            FavCimsCitizenRowsPanel.autoLayout          = true;
            FavCimsCitizenRowsPanel.clipChildren        = true;
            FavCimsCitizenRowsPanel.autoLayoutPadding   = new RectOffset(0, 0, 0, 0);
            FavCimsCitizenRowsPanel.relativePosition    = new Vector3(FavCimsIndexBgBarSprite.relativePosition.x + 6, FavCimsIndexBgBarSprite.relativePosition.y + FavCimsIndexBgBarSprite.height);

            //Damn ScrollBar
            UIScrollablePanel FavCimsCitizenRowsPanelScrollBar = CitizensPanel.AddUIComponent <UIScrollablePanel> ();

            FavCimsCitizenRowsPanelScrollBar.name             = "FavCimsCitizenRowsPanelScrollBar";
            FavCimsCitizenRowsPanelScrollBar.width            = 10;
            FavCimsCitizenRowsPanelScrollBar.height           = 500;
            FavCimsCitizenRowsPanelScrollBar.relativePosition = new Vector3(FavCimsIndexBgBarSprite.relativePosition.x + FavCimsIndexBgBarSprite.width, FavCimsCitizenRowsPanel.relativePosition.y);

            UIScrollbar FavCimsMainPanelScrollBar = FavCimsCitizenRowsPanelScrollBar.AddUIComponent <UIScrollbar> ();

            FavCimsMainPanelScrollBar.width       = 10;
            FavCimsMainPanelScrollBar.height      = FavCimsCitizenRowsPanel.height;
            FavCimsMainPanelScrollBar.orientation = UIOrientation.Vertical;
            FavCimsMainPanelScrollBar.pivot       = UIPivotPoint.TopRight;
            FavCimsMainPanelScrollBar.AlignTo(FavCimsMainPanelScrollBar.parent, UIAlignAnchor.TopRight);
            FavCimsMainPanelScrollBar.minValue        = 0;
            FavCimsMainPanelScrollBar.value           = 0;
            FavCimsMainPanelScrollBar.incrementAmount = 40;

            UISlicedSprite FavCimsMainPanelTrackSprite = FavCimsMainPanelScrollBar.AddUIComponent <UISlicedSprite> ();

            FavCimsMainPanelTrackSprite.relativePosition = FavCimsMainPanelScrollBar.relativePosition;
            FavCimsMainPanelTrackSprite.autoSize         = true;
            FavCimsMainPanelTrackSprite.size             = FavCimsMainPanelTrackSprite.parent.size;
            FavCimsMainPanelTrackSprite.fillDirection    = UIFillDirection.Vertical;
            FavCimsMainPanelTrackSprite.spriteName       = "ScrollbarTrack";

            FavCimsMainPanelScrollBar.trackObject = FavCimsMainPanelTrackSprite;

            UISlicedSprite thumbSprite = FavCimsMainPanelScrollBar.AddUIComponent <UISlicedSprite> ();

            thumbSprite.relativePosition              = FavCimsMainPanelScrollBar.relativePosition;
            thumbSprite.autoSize                      = true;
            thumbSprite.width                         = thumbSprite.parent.width;
            thumbSprite.fillDirection                 = UIFillDirection.Vertical;
            thumbSprite.spriteName                    = "ScrollbarThumb";
            FavCimsMainPanelScrollBar.thumbObject     = thumbSprite;
            FavCimsCitizenRowsPanel.verticalScrollbar = FavCimsMainPanelScrollBar;

            /* Thx to CNightwing for this piece of code */
            FavCimsCitizenRowsPanel.eventMouseWheel += (component, eventParam) => {
                var sign = Math.Sign(eventParam.wheelDelta);
                FavCimsCitizenRowsPanel.scrollPosition += new Vector2(0, sign * (-1) * FavCimsMainPanelScrollBar.incrementAmount);
            };
            /* End */

            FavCimsCitizenRowsPanel.eventComponentAdded   += (component, eventParam) => ReorderRowsBackgrounds();
            FavCimsCitizenRowsPanel.eventComponentRemoved += (component, eventParam) => ReorderRowsBackgrounds();

            ///////////////////////////////////////////////
            /////Rows Panel Footer
            ///////////////////////////////////////////////

            UITextureSprite FavCimsFooterBgBarSprite = CitizensPanel.AddUIComponent <UITextureSprite> ();

            FavCimsFooterBgBarSprite.name    = "FavCimsFooterBgBarSprite";
            FavCimsFooterBgBarSprite.width   = FavCimsIndexBgBarSprite.width;
            FavCimsFooterBgBarSprite.height  = 15;
            FavCimsFooterBgBarSprite.texture = FavCimsIndexBgBar;

            //Printing
            FavCimsFooterBgBarSprite.relativePosition = new Vector3(21, FavCimsCitizenRowsPanel.relativePosition.y + FavCimsCitizenRowsPanel.height);
            //Row End

            //Load Initial Row (People Renamed)
            foreach (KeyValuePair <InstanceID, string> FavCitizen in FavCimsCore.FavoriteCimsList())
            {
                if (FavCitizen.Key.Type == InstanceType.Citizen)                  // || FavCitizen.Key.Type == InstanceType.CitizenInstance
                {
                    CitizenRow FavCimsCitizenSingleRowPanel = FavCimsCitizenRowsPanel.AddUIComponent(typeof(CitizenRow)) as CitizenRow;
                    FavCimsCitizenSingleRowPanel.MyInstanceID    = FavCitizen.Key;
                    FavCimsCitizenSingleRowPanel.MyInstancedName = FavCitizen.Value;
                }
            }
        }
Пример #8
0
        public static Texture2D RenderSpriteLine(UIDynamicFont font, UITextureAtlas atlas, string spriteName, Color bgColor, string text, float textScale = 1)
        {
            UITextureAtlas.SpriteInfo spriteInfo = atlas[spriteName];
            if (spriteInfo == null)
            {
                CODebugBase <InternalLogChannel> .Warn(InternalLogChannel.UI, "Missing sprite " + spriteName + " in " + atlas.name);

                return(null);
            }
            else
            {
                textScale *= 2;

                Texture2D texture        = atlas.texture;
                float     calcHeight     = font.size * textScale * 2;
                float     calcProportion = spriteInfo.region.width * texture.width / (spriteInfo.region.height * texture.height);
                float     calcWidth      = Mathf.CeilToInt(calcHeight * calcProportion);

                int height = Mathf.CeilToInt(calcHeight);
                int width  = Mathf.CeilToInt(calcWidth);

                float textureScale = height / (spriteInfo.region.height * texture.height);

                LogUtils.DoLog($"height = {height} - width = {width} -  renderer.pixelRatio = 1 - textureScale = {height} / {(spriteInfo.region.height * texture.height)}");

                var   size        = new Vector3(width, height);
                float borderWidth = textScale * 3;

                Vector2 textDimensions = MeasureTextWidth(font, text, textScale, out Vector2 yBounds);
                float   borderBottom   = Mathf.Max(0, (spriteInfo.border.bottom * textScale * 2) + Mathf.Min(0, yBounds.x));
                var     textAreaSize   = new Vector4((spriteInfo.border.left * textScale * 2) + borderWidth, borderBottom + borderWidth, width - (spriteInfo.border.horizontal * textScale * 2) - borderWidth, height - (spriteInfo.border.top * textScale * 2) - borderBottom - borderWidth);

                float multipler = Mathf.Min(Mathf.Min(3.5f, textAreaSize.z / textDimensions.x), Mathf.Min(3.5f, textAreaSize.w / textDimensions.y));
                if (multipler > 1)
                {
                    textScale     *= 1 + ((multipler - 1) / 2.1f);
                    multipler      = 1;
                    textDimensions = MeasureTextWidth(font, text, textScale, out yBounds);
                }

                var imageSize = new Vector2(Mathf.NextPowerOfTwo((int)Mathf.Max(textDimensions.x * multipler, width)), Mathf.NextPowerOfTwo((int)Mathf.Max(textDimensions.y, height)));


                var tex = new Texture2D((int)imageSize.x, (int)imageSize.y, TextureFormat.ARGB32, false);
                tex.SetPixels(new Color[(int)(imageSize.x * imageSize.y)]);


                var texText = new Texture2D((int)textDimensions.x, (int)textDimensions.y, TextureFormat.ARGB32, false);
                texText.SetPixels(new Color[(int)(textDimensions.x * textDimensions.y)]);

                Color contrastColor = KlyteMonoUtils.ContrastColor(bgColor);

                Vector2 position = RenderSprite(atlas, spriteName, contrastColor, tex, textureScale);
                RenderSprite(atlas, spriteName, bgColor, tex, null, tex.height - (int)(borderWidth * 2), null, new Vector2((textScale / 2) - 0.5f, (textScale / 2) - 0.5f), (a, b) =>
                {
                    if (b.a == 1)
                    {
                        return(b);
                    }

                    if (b.a == 0)
                    {
                        return(a);
                    }

                    float totalAlpha = a.a + b.a;
                    return((a * (1 - b.a)) + (b * b.a));
                });
                Vector2 posText = position + VectorUtils.XY(textAreaSize) + new Vector2((textAreaSize.z / 2) - (textDimensions.x * multipler / 2) + 1, (textAreaSize.w / 2) - (textDimensions.y / 2) - (yBounds.x / 2));

                RenderText(font, text, new Vector3(0, -yBounds.x), textScale, contrastColor, bgColor, texText);

                if (multipler < 1)
                {
                    TextureScaler.scale(texText, (int)(texText.width * multipler), texText.height);
                }
                MergeTextures(tex, texText.GetPixels(), (int)posText.x, (int)posText.y, texText.width, texText.height, false);
                UnityEngine.Object.Destroy(texText);
                tex.Apply();

                return(tex);
            }
        }
Пример #9
0
        private static Vector2 CalculateTextureSize(UIDynamicFont font, float textScale, ref PoolList <UIMarkupToken> tokens, out int startYPos)
        {
            float xAdvance = 0;
            var   yBounds  = new Vector2(999999999999999999999999f, -99999999999999999999999999f);

            for (int i = 0; i < tokens.Count; i++)
            {
                UIMarkupToken token = tokens[i];
                if (token.tokenType == UIMarkupTokenType.Text)
                {
                    Vector2 textDimensions = MeasureTextWidth(font, token.value, textScale, out Vector2 yBoundsCalc);
                    xAdvance += textDimensions.x;
                    yBounds.x = Mathf.Min(yBounds.x, yBoundsCalc.x);
                    yBounds.y = Mathf.Max(yBounds.y, yBoundsCalc.y);
                }
                else if (token.tokenType == UIMarkupTokenType.Whitespace)
                {
                    int   size2 = Mathf.CeilToInt(font.size * textScale);
                    float num2  = characterSpacing * textScale;
                    float num   = 0;
                    font.RequestCharacters(" ", size2, FontStyle.Normal);
                    for (int j = 0; j < token.length; j++)
                    {
                        char c          = token[j];
                        int  multiplier = 1;
                        if (c == '\t')
                        {
                            multiplier = 4;
                        }
                        font.baseFont.GetCharacterInfo(' ', out CharacterInfo characterInfo, size2, FontStyle.Normal);
                        num += (characterInfo.advance + num2) * multiplier;
                    }
                    token.height = Mathf.CeilToInt(num);
                    xAdvance    += token.height;
                    yBounds.x    = Mathf.Min(yBounds.x, 0);
                    yBounds.y    = Mathf.Max(yBounds.y, token.height);
                }
                else if (token.tokenType == UIMarkupTokenType.StartTag)
                {
                    if (UIDynamicFontRendererRedirector.Matches(token, "sprite"))
                    {
                        if (token.attributeCount != 1)
                        {
                            tokens.RemoveAt(i);
                            i--;
                            continue;
                        }
                        UITextureAtlas.SpriteInfo spriteInfo = UIView.GetAView().defaultAtlas[token.GetAttribute(0).m_Value.value];
                        if (spriteInfo == null)
                        {
                            tokens.RemoveAt(i);
                            i--;
                            continue;
                        }
                        float targetScale = font.baseline * textScale / spriteInfo.texture.height;

                        token.height = (int)(targetScale * spriteInfo.texture.height);
                        xAdvance    += (int)(targetScale * spriteInfo.texture.width);
                        yBounds.x    = Mathf.Min(yBounds.x, 0);
                        yBounds.y    = Mathf.Max(yBounds.y, token.height);
                    }
                    else if (UIDynamicFontRendererRedirector.Matches(token, UIDynamicFontRendererRedirector.TAG_LINE))
                    {
                        if (token.attributeCount != 1)
                        {
                            tokens.RemoveAt(i);
                            i--;
                            continue;
                        }
                        string[] attrs = token.GetAttribute(0).m_Value.value.Split(',');
                        if (attrs.Length != 3 || !Regex.IsMatch(attrs[1], "^[0-9a-fA-F]{6}$"))
                        {
                            tokens.RemoveAt(i);
                            i--;
                            continue;
                        }
                        UITextureAtlas.SpriteInfo spriteInfo = UIView.GetAView().defaultAtlas[attrs[0]];
                        if (spriteInfo == null)
                        {
                            tokens.RemoveAt(i);
                            i--;
                            continue;
                        }
                        float baseScale   = font.baseline * textScale / spriteInfo.texture.height;
                        float targetScale = baseScale * 2;

                        token.height = (int)(targetScale * spriteInfo.texture.height);
                        xAdvance    += (int)(targetScale * spriteInfo.texture.width);
                        yBounds.x    = Mathf.Min(yBounds.x, -token.height / 3);
                        yBounds.y    = Mathf.Max(yBounds.y, token.height / 3 * 2);
                    }
                }
            }
            if (tokens.Count == 0)
            {
                startYPos = 0;
                return(new Vector2(1, 1));
            }
            float ySize = yBounds.y - yBounds.x;

            startYPos = (int)(-yBounds.x);
            return(new Vector2(xAdvance, ySize));
        }
Пример #10
0
 public static Texture2D RenderSpriteLineToTexture(UIDynamicFont font, UITextureAtlas atlas, string spriteName, Color bgColor, string text) => RenderSpriteLine(font, atlas, spriteName, bgColor, text);