Beispiel #1
0
        public override void Metamorphose(LegoUIMeta uiMeta)
        {
            if (MetamorphoseStage == LegoMetamorphoseStage.Completed)
            {
                MetamorphoseStage = LegoMetamorphoseStage.Metamorphosing;
            }

            if (PlaneToggleMeta == null)
            {
                PlaneToggleMeta = uiMeta.NextPlaneToggle;
                RectMeta        = uiMeta.CurrentRect;
            }

            switch (planeMetamorphoseStatus)
            {
            case MetamorphoseStatus.Toggle:
                MetamorphoseRect(RectMeta);
                if (PlaneToggleMeta.TransitionType == LegoTransition.ColorTint &&
                    PlaneToggleMeta.ColorTintMeta != null)
                {
                    var colorTintMeta = PlaneToggleMeta.ColorTintMeta;

                    colors = new ColorBlock
                    {
                        normalColor      = colorTintMeta.NormalLegoColor.ToColor(),
                        highlightedColor = colorTintMeta.HighlightedLegoColor.ToColor(),
                        pressedColor     = colorTintMeta.PressedLegoColor.ToColor(),
                        disabledColor    = colorTintMeta.DisabledLegoColor.ToColor(),
                        colorMultiplier  = colorTintMeta.ColorMultiplier,
                        fadeDuration     = colorTintMeta.FadeDuration
                    };
                }

                IsOn                    = PlaneToggleMeta.Ison;
                Interactable            = PlaneToggleMeta.Interactable;
                SoundEffectId           = PlaneToggleMeta.SoundId;
                planeMetamorphoseStatus = MetamorphoseStatus.SelfImage;
                break;

            case MetamorphoseStatus.SelfImage:
                ToggleImage.As <YuLegoImage>().Metamorphose(PlaneToggleMeta.ToggleImageMeta);
                planeMetamorphoseStatus = MetamorphoseStatus.Background;
                break;

            case MetamorphoseStatus.Background:
                FrontImage.As <YuLegoImage>().Metamorphose(PlaneToggleMeta
                                                           .ImageFrontPointRectMeta, PlaneToggleMeta.ImageFrontPointImageMeta);
                planeMetamorphoseStatus = MetamorphoseStatus.Toggle;
                MetamorphoseStage       = LegoMetamorphoseStage.Completed;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Beispiel #2
0
        public void Metamorphose(LegoUIMeta uiMeta)
        {
            if (MetamorphoseStage == LegoMetamorphoseStage.Completed)
            {
                MetamorphoseStage = LegoMetamorphoseStage.Metamorphosing;
            }

            if (scrollViewMeta == null)
            {
                scrollViewMeta = uiMeta.NextScrollView;
                RectMeta       = uiMeta.CurrentRect;
            }

            switch (metamorphoseStatus)
            {
            case MetamorphoseStatus.ScrollView:
                YuLegoUtility.MetamorphoseRect(RectTransform, RectMeta);
                ScrollViewImage.Metamorphose(scrollViewMeta.ScrollViewImageMeta);
                metamorphoseStatus = MetamorphoseStatus.ScrollRect;
                break;

            case MetamorphoseStatus.ScrollRect:
                YuLegoUtility.MetamorphoseRect(ScrollRectRect, scrollViewMeta.ScrollRectRectMeta);
                ScrollRectImage.Metamorphose(scrollViewMeta.ScrollRectImageMeta);
                metamorphoseStatus = MetamorphoseStatus.Content;
                break;

            case MetamorphoseStatus.Content:
                YuLegoUtility.MetamorphoseRect(Content, scrollViewMeta.ContentRectMeta);
                scrollViewMeta     = null;
                metamorphoseStatus = MetamorphoseStatus.ScrollView;
                MetamorphoseStage  = LegoMetamorphoseStage.Completed;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public void Metamorphose(LegoUIMeta uiMeta)
        {
            if (MetamorphoseStage == LegoMetamorphoseStage.Completed)
            {
                MetamorphoseStage = LegoMetamorphoseStage.Metamorphosing;
            }

            if (rockerMeta == null)
            {
                rockerMeta = uiMeta.NextRocker;
                RectMeta   = uiMeta.CurrentRect;
            }

            switch (metamorphose)
            {
            case MetamorphoseStatus.Rocker:
                YuLegoUtility.MetamorphoseRect(RectTransform, RectMeta);

                metamorphose = MetamorphoseStatus.BackgroundImage;
                break;

            case MetamorphoseStatus.BackgroundImage:
                BgImage.Metamorphose(rockerMeta.BgImageMeta);

                metamorphose = MetamorphoseStatus.RockerImage;
                break;

            case MetamorphoseStatus.RockerImage:
                RockerImage.Metamorphose(rockerMeta.RockerImageMeta);

                metamorphose      = MetamorphoseStatus.Rocker;
                MetamorphoseStage = LegoMetamorphoseStage.Completed;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Beispiel #4
0
        public override void Metamorphose(LegoUIMeta uiMeta)
        {
            if (MetamorphoseStage == LegoMetamorphoseStage.Completed)
            {
                MetamorphoseStage = LegoMetamorphoseStage.Metamorphosing;
            }

            if (ButtonMeta == null)
            {
                ButtonMeta = uiMeta.NextButton;
                RectMeta   = uiMeta.CurrentRect;
            }

            switch (metamorphoseStatus)
            {
            // 按钮自身变形
            case MetamorphoseStatus.Button:
                MetamorphoseRect(RectMeta);
                if (ButtonMeta.TransitionType == LegoTransition.ColorTint &&
                    ButtonMeta.ColorTintMeta != null)
                {
                    var colorTintMeta = ButtonMeta.ColorTintMeta;

                    colors = new ColorBlock
                    {
                        normalColor      = colorTintMeta.NormalLegoColor.ToColor(),
                        highlightedColor = colorTintMeta.HighlightedLegoColor.ToColor(),
                        pressedColor     = colorTintMeta.PressedLegoColor.ToColor(),
                        disabledColor    = colorTintMeta.DisabledLegoColor.ToColor(),
                        colorMultiplier  = colorTintMeta.ColorMultiplier,
                        fadeDuration     = colorTintMeta.FadeDuration
                    };
                }

                SoundEffectId = ButtonMeta.ButtonSoundId;

                metamorphoseStatus = MetamorphoseStatus.ButtonImage;
                break;

            case MetamorphoseStatus.ButtonImage:
                // 按钮附带的Image变形
                BgImage.As <YuLegoImage>().Metamorphose(ButtonMeta.ButtonImageMeta);
                if (ButtonMeta.IsNonRectangularButtonImage)
                {
                    IsNonRectangularButtonImage = true;
                    BgImage.As <YuLegoImage>().alphaHitTestMinimumThreshold =
                        ButtonMeta.ImageAlphaHitTestMinimumThreshold;
                }
                metamorphoseStatus = MetamorphoseStatus.SonText;
                break;

            case MetamorphoseStatus.SonText:
                if (ButtonMeta.IsTextActive)
                {
                    SonText.gameObject.SetActive(true);
                    SonText.Metamorphose(ButtonMeta.TextRect, ButtonMeta.TextMeta);
                }
                else
                {
                    SonText.gameObject.SetActive(false);
                }

                metamorphoseStatus = MetamorphoseStatus.Button;
                MetamorphoseStage  = LegoMetamorphoseStage.Completed;
                break;
            }
        }
Beispiel #5
0
        //private Sprite GetSprite(YuLegoDropdownOptionMeta optionMeta)
        //{
        //    var spriteId = optionMeta.SpriteId;

        //    if (spriteDict.ContainsKey(spriteId))
        //    {
        //        return spriteDict[spriteId].GetAsset();
        //    }

        //    var spRef = AssetModule.GetSprite(spriteId);
        //    spriteDict.Add(spriteId, spRef);
        //    return spRef.GetAsset();
        //}

        #endregion

        public override void Metamorphose(LegoUIMeta uiMeta)
        {
            if (MetamorphoseStage == LegoMetamorphoseStage.Completed)
            {
                MetamorphoseStage = LegoMetamorphoseStage.Metamorphosing;
            }

            if (dropdownMeta == null)
            {
                dropdownMeta     = uiMeta.NextDropdown;
                dropdownRectMeta = uiMeta.CurrentRect;
            }

            switch (metamorphoseStatus)
            {
            case MetamorphoseStatus.Dropdown:
                MetamorphoseRect(dropdownRectMeta);

                // 输入框自身附带Image控件变形
                SelfImage.Metamorphose(dropdownMeta.DropdownImageMeta);

                if (dropdownMeta.Transition == LegoTransition.ColorTint)
                {
                    var colorTintMeta = dropdownMeta.ColorTintMeta;

                    colors = new ColorBlock
                    {
                        normalColor      = colorTintMeta.NormalLegoColor.ToColor(),
                        highlightedColor = colorTintMeta.HighlightedLegoColor.ToColor(),
                        pressedColor     = colorTintMeta.PressedLegoColor.ToColor(),
                        disabledColor    = colorTintMeta.DisabledLegoColor.ToColor(),
                        colorMultiplier  = colorTintMeta.ColorMultiplier,
                        fadeDuration     = colorTintMeta.FadeDuration
                    };
                }

                // 选项
                if (dropdownMeta.OptionMetas != null && dropdownMeta.OptionMetas.Count > 0)
                {
                    options.Clear();

                    foreach (var optionMeta in dropdownMeta.OptionMetas)
                    {
                        var optionData = new OptionData();
                        optionData.text = optionMeta.Text;
                        // todo 下拉框菜单精灵

                        //optionData.image = SpriteRouter.GetSprite(optionMeta.SpriteId);
                        options.Add(optionData);
                    }
                }

                metamorphoseStatus = MetamorphoseStatus.Label;
                break;

            case MetamorphoseStatus.Label:
                Label.Metamorphose(dropdownMeta.LabelRectMeta, dropdownMeta.LabelTextMeta);
                metamorphoseStatus = MetamorphoseStatus.Arrow;
                break;

            case MetamorphoseStatus.Arrow:
                Arrow.Metamorphose(dropdownMeta.ArrowRectMeta, dropdownMeta.ArrowImageMeta);
                metamorphoseStatus = MetamorphoseStatus.Template;
                break;

            case MetamorphoseStatus.Template:
                TemplateImage.Metamorphose(dropdownMeta.TemplateRectMeta, dropdownMeta.TemplateImageMeta);
                metamorphoseStatus = MetamorphoseStatus.Viewport;
                break;

            case MetamorphoseStatus.Viewport:
                ViewportImage.Metamorphose(dropdownMeta.ViewPortRectMeta, dropdownMeta.ViewPortImageMeta);
                metamorphoseStatus = MetamorphoseStatus.Content;
                break;

            case MetamorphoseStatus.Content:
                YuLegoUtility.MetamorphoseRect(Content, dropdownMeta.ContentRectMeta);
                metamorphoseStatus = MetamorphoseStatus.Item;
                break;

            case MetamorphoseStatus.Item:
                if (dropdownMeta.ItemTransition == LegoTransition.ColorTint)
                {
                    var colorTintMeta = dropdownMeta.ItemRootColorTintMeta;

                    Item.colors = new ColorBlock
                    {
                        normalColor      = colorTintMeta.NormalLegoColor.ToColor(),
                        highlightedColor = colorTintMeta.HighlightedLegoColor.ToColor(),
                        pressedColor     = colorTintMeta.PressedLegoColor.ToColor(),
                        disabledColor    = colorTintMeta.DisabledLegoColor.ToColor(),
                        colorMultiplier  = colorTintMeta.ColorMultiplier,
                        fadeDuration     = colorTintMeta.FadeDuration
                    };
                }

                YuLegoUtility.MetamorphoseRect(Item.RectTransform, dropdownMeta.ItemRootRectMeta);
                metamorphoseStatus = MetamorphoseStatus.ItemBackground;
                break;

            case MetamorphoseStatus.ItemBackground:
                ItemBackground.Metamorphose(dropdownMeta.ItemBackgroundRectMeta,
                                            dropdownMeta.ItemBackgroundImageMeta);
                metamorphoseStatus = MetamorphoseStatus.ItemCheckmark;
                break;

            case MetamorphoseStatus.ItemCheckmark:
                ItemCheckmark.Metamorphose(dropdownMeta.ItemCheckmarkRectMeta,
                                           dropdownMeta.ItemCheckmarkImageMeta);
                metamorphoseStatus = MetamorphoseStatus.ItemLabel;
                break;

            case MetamorphoseStatus.ItemLabel:
                ItemLabel.Metamorphose(dropdownMeta.ItemLabelRectMeta,
                                       dropdownMeta.ItemLabelTextMeta);
                metamorphoseStatus = MetamorphoseStatus.Scrollbar;
                break;

            case MetamorphoseStatus.Scrollbar:
                ScrollbarImage.Metamorphose(dropdownMeta.ScrollbarRectMeta,
                                            dropdownMeta.ScrollbarImageMeta);
                metamorphoseStatus = MetamorphoseStatus.SlidingArea;
                break;

            case MetamorphoseStatus.SlidingArea:
                YuLegoUtility.MetamorphoseRect(SlidingArea, dropdownMeta.SlidingAreaRectMeta);
                metamorphoseStatus = MetamorphoseStatus.Handle;
                break;

            case MetamorphoseStatus.Handle:
                HandleImage.Metamorphose(dropdownMeta.ScrollbarHandleRectMeta,
                                         dropdownMeta.ScrollbarHandleImageMeta);

                dropdownMeta       = null;
                dropdownRectMeta   = null;
                metamorphoseStatus = MetamorphoseStatus.Dropdown;
                MetamorphoseStage  = LegoMetamorphoseStage.Completed;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }