예제 #1
0
    void Update()
    {
        /* Clamp Value */
        int ValueDisplay = Mathf.Clamp(Value, ValueMin, ValueMax);

        /* Update Numerical-Display */
        if ((ValuePrevious != ValueDisplay) || (FlagPaddingZeroPrevious != FlagPaddingZero))
        {
            /* Update WorkArea */
            ValuePrevious           = ValueDisplay;
            FlagPaddingZeroPrevious = FlagPaddingZero;

            /* Generate Text */
            string Text            = (true == FlagPaddingZero) ? ValueDisplay.ToString(FormatToString[(int)KindFormat.PADDING_ZERO]) : ValueDisplay.ToString(FormatToString[(int)KindFormat.NORMAL]);
            char[] Characters      = Text.ToCharArray();
            int    CountCharacters = Characters.Length;

            /* Update Digits */
            int IndexCharacter;
            int IDParts;
            for (int i = 0; i < (int)Constant.DIGIT_MAX; i++)
            {
                IDParts = IDPartsDigit[i];
                if (0 <= IDParts)
                {                       /* Valid */
                                        /* Hide Digit */
                    InstanceRoot.HideSetForce(IDParts, true, false);

                    /* Change Cell & Show Digit */
                    if (i < CountCharacters)
                    {
                        /* Get Cell-Data */
                        IndexCharacter = IndexGetCharacter(Characters[(CountCharacters - 1) - i]);
                        if (0 <= IndexCharacter)
                        {
                            /* Change Cell */
                            /* MEMO: Ignore Attribute "Cell" */
                            /* MEMO: (IndexCellMap == 0) Because this Animation has 1 Texture. */
                            InstanceRoot.CellChange(IDParts, 0, IndexCell[IndexCharacter], true);

                            /* Show Digit */
                            /* MEMO: Don't Effect to children */
                            InstanceRoot.HideSetForce(IDParts, false, false);
                        }
                    }
                }
            }
        }
    }
    void Update()
    {
        bool FlagUpdateCell = false;

        /* Update Color */
        if (null != InstanceColorBlendOverwrite)
        {
            InstanceColorBlendOverwrite.SetOverall(KindOperationFontOverlay, ref ColorFontOverlay);
        }

        /* Font Update */
        if (IndexFontPrevious != IndexFont)
        {
            IndexFontPrevious = IndexFont;
            FontSet(IndexFont);
            FlagUpdateCell |= true;
        }

        /* Clamp Value */
        int ValueDisplay = Mathf.Clamp(Value, ValueMin, ValueMax);

        /* Update Numerical-Displa  */
        FlagUpdateCell |= ((ValuePrevious != ValueDisplay) || (FlagPaddingZeroPrevious != FlagPaddingZero) || (FlagProportionalPrevious != FlagProportional)) ? true : false;
        if (true == FlagUpdateCell)
        {
            /* Update WorkArea */
            ValuePrevious            = ValueDisplay;
            FlagProportionalPrevious = FlagProportional;
            FlagPaddingZeroPrevious  = FlagPaddingZero;

            /* Generate Text */
            string Text            = (true == FlagPaddingZero) ? ValueDisplay.ToString(FormatToString[(int)KindFormat.PADDING_ZERO]) : ValueDisplay.ToString(FormatToString[(int)KindFormat.NORMAL]);
            char[] Characters      = Text.ToCharArray();
            int    CountCharacters = Characters.Length;

            /* Update Digits */
            int CountDigit = (int)Constant.DIGIT_MAX;
            int IndexCharacter;
            int IDParts;
            int IndexCell;
            int PositionPixelDigit = 0;
            for (int i = 0; i < CountDigit; i++)
            {
                IDParts = WorkAreaPartsDigit[i].ID;
                if (0 <= IDParts)
                {                       /* Valid */
                                        /* Hide Digit */
                    InstanceRoot.HideSetForce(IDParts, true, false);

                    /* Change Cell & Show Digit */
                    if (i < CountCharacters)
                    {
                        /* Get Cell-Data */
                        IndexCharacter = IndexGetCharacter(Characters[(CountCharacters - 1) - i]);
                        if (0 <= IndexCharacter)
                        {
                            IndexCell = WorkAreaFontCell[IndexCharacter].IndexCell;
                            if (0 <= IndexCell)
                            {
                                /* Change Cell */
                                /* MEMO: Ignore Attribute "Cell" */
                                /* MEMO: (IndexCellMap == 0) Because this Animation has 1 Texture. */
                                InstanceRoot.CellChange(IDParts, 0, IndexCell, true);

                                /* Show Digit */
                                /* MEMO: Don't Effect to children */
                                InstanceRoot.HideSetForce(IDParts, false, false);

                                /* Get Pixel-Width */
                                /* MEMO: Spacing-width = (Previous digit's width + Now digit's width) / 2 */
                                int PixelSpaceNow = (true == FlagProportional) ? ((int)(WorkAreaFontCell[IndexCharacter].InstanceDataCell.Rectangle.width)) : SizePixelFont;
                                PixelSpaceNow /= 2;

                                /* Adjust Position */
                                /* MEMO: The first digit is Fixed-Position) */
                                if (0 < i)
                                {
                                    PositionPixelDigit -= PixelSpaceNow;

                                    Transform InstanceTransformDigit = WorkAreaPartsDigit[i].InstanceGameObject.transform;
                                    Vector3   LocalPositionDigit     = InstanceTransformDigit.localPosition;
                                    LocalPositionDigit.x = (float)PositionPixelDigit;
                                    InstanceTransformDigit.localPosition = LocalPositionDigit;
                                }
                                PositionPixelDigit -= PixelSpaceNow;
                            }
                        }
                    }
                }
            }
        }
    }