Exemple #1
0
        public static RectTransform HorizontalGroup(RectTransform parent)
        {
            GameObject obj = new GameObject("ToyBox.HorizontalGroup");

            RectTransform transform = obj.AddComponent <RectTransform>();

            transform.SetParent(parent, false);

            HorizontalLayoutGroupWorkaround group = obj.AddComponent <HorizontalLayoutGroupWorkaround>();

            group.SetLayoutHorizontal();
            group.childControlWidth      = true;
            group.childControlHeight     = true;
            group.childForceExpandWidth  = false;
            group.childForceExpandHeight = false;
            group.childScaleWidth        = false;
            group.childScaleHeight       = false;
            group.childAlignment         = TextAnchor.UpperLeft;
            group.spacing = DefaultSpacing;
            group.padding = DefaultPadding;

            return(transform);
        }
Exemple #2
0
        public static RectTransform Checkbox(RectTransform parent)
        {
            GameObject obj = new GameObject("ToyBox.Checkbox");

            RectTransform transform = obj.AddComponent <RectTransform>();

            transform.SetParent(parent, false);
            transform.anchorMin = new Vector2(0.0f, 0.0f);
            transform.anchorMax = new Vector2(1.0f, 1.0f);
            transform.pivot     = new Vector2(0.5f, 0.5f);
            transform.offsetMin = new Vector2(0.0f, 0.0f);
            transform.offsetMax = new Vector2(0.0f, 0.0f);

            HorizontalLayoutGroupWorkaround group = obj.AddComponent <HorizontalLayoutGroupWorkaround>();

            group.SetLayoutHorizontal();
            group.childControlWidth      = true;
            group.childControlHeight     = true;
            group.childForceExpandWidth  = false;
            group.childForceExpandHeight = false;
            group.childScaleWidth        = false;
            group.childScaleHeight       = false;
            group.childAlignment         = TextAnchor.UpperLeft;
            group.spacing = DefaultSpacing;
            group.padding = DefaultPadding;

            LayoutElement layout = obj.AddComponent <LayoutElement>();

            layout.minWidth        = 32.0f;
            layout.minHeight       = 32.0f;
            layout.preferredWidth  = -1.0f;
            layout.preferredHeight = -1.0f;
            layout.flexibleWidth   = 0.0f;
            layout.flexibleHeight  = 0.0f;

            OwlcatMultiButton button = obj.AddComponent <OwlcatMultiButton>();

            button.ClickSoundType = -1;
            //button.HoverSoundType = 1;

            // background
            GameObject background_obj = new GameObject("ToyBox.Checkbox.Background");

            RectTransform background_transform = background_obj.AddComponent <RectTransform>();

            background_transform.SetParent(transform, false);
            background_transform.anchorMin = new Vector2(0.0f, 0.0f);
            background_transform.anchorMax = new Vector2(1.0f, 1.0f);
            background_transform.pivot     = new Vector2(0.5f, 0.5f);
            background_transform.offsetMin = new Vector2(0.0f, 0.0f);
            background_transform.offsetMax = new Vector2(0.0f, 0.0f);

            HorizontalLayoutGroupWorkaround background_group = background_obj.AddComponent <HorizontalLayoutGroupWorkaround>();

            background_group.SetLayoutHorizontal();
            background_group.childControlWidth      = true;
            background_group.childControlHeight     = true;
            background_group.childForceExpandWidth  = false;
            background_group.childForceExpandHeight = false;
            background_group.childScaleWidth        = false;
            background_group.childScaleHeight       = false;
            background_group.childAlignment         = TextAnchor.UpperLeft;
            background_group.spacing = DefaultSpacing;
            background_group.padding = new RectOffset(
                (int)(layout.minWidth * 0.2f),
                (int)(layout.minHeight * 0.2f),
                (int)(layout.minWidth * 0.2f),
                (int)(layout.minHeight * 0.2f)
                );

            LayoutElement background_layout = background_obj.AddComponent <LayoutElement>();

            background_layout.minWidth        = -1.0f;
            background_layout.minHeight       = -1.0f;
            background_layout.preferredWidth  = -1.0f;
            background_layout.preferredHeight = -1.0f;
            background_layout.flexibleWidth   = 0.0f;
            background_layout.flexibleHeight  = 0.0f;

            CanvasRenderer background_renderer = background_obj.AddComponent <CanvasRenderer>();

            Image background_image = background_obj.AddComponent <Image>();

            background_image.sprite = crUI.CheckboxBackgroundImage?.sprite;

            // checkmark
            GameObject checkmark_obj = new GameObject("ToyBox.Checkbox.Checkmark");

            RectTransform checkmark_transform = checkmark_obj.AddComponent <RectTransform>();

            checkmark_transform.SetParent(background_transform, false);
            checkmark_transform.anchorMin = new Vector2(0.0f, 0.0f);
            checkmark_transform.anchorMax = new Vector2(1.0f, 1.0f);
            checkmark_transform.pivot     = new Vector2(0.5f, 0.5f);
            checkmark_transform.offsetMin = new Vector2(0.0f, 0.0f);
            checkmark_transform.offsetMax = new Vector2(0.0f, 0.0f);

            LayoutElement checkmark_layout = checkmark_obj.AddComponent <LayoutElement>();

            checkmark_layout.minWidth        = -1.0f;
            checkmark_layout.minHeight       = -1.0f;
            checkmark_layout.preferredWidth  = -1.0f;
            checkmark_layout.preferredHeight = -1.0f;
            checkmark_layout.flexibleWidth   = 1.0f;
            checkmark_layout.flexibleHeight  = 1.0f;

            CanvasRenderer checkmark_renderer = checkmark_obj.AddComponent <CanvasRenderer>();

            Image checkmark_image = checkmark_obj.AddComponent <Image>();

            checkmark_image.sprite = crUI.CheckboxCheckmarkImage?.sprite;

            SpriteState sprite_state = crUI.CheckboxLayerParts[0].SpriteState;

            OwlcatSelectableLayerPart layer0 = new OwlcatSelectableLayerPart();

            layer0.Image       = background_image;
            layer0.Transition  = OwlcatTransition.SpriteSwap;
            layer0.SpriteState = sprite_state;
            button.AddLayerToMainPart(layer0);

            button.AddMultiLayer();
            button.AddMultiLayer();

            List <OwlcatMultiLayer> layers = AccessTools.DeclaredField(typeof(OwlcatMultiSelectable), "m_MultiLayers")
                                             .GetValue(button) as List <OwlcatMultiLayer>;

            layers[0].LayerName = "Unchecked";

            OwlcatMultiLayer layer1 = layers[1];

            layer1.LayerName = "Checked";
            layer1.AddPart();
            layer1.Parts[0].Transition = OwlcatTransition.Activate;
            AccessTools.DeclaredField(typeof(OwlcatSelectableLayerPart), "m_TargetGameObject")
            .SetValue(layer1.Parts[0], checkmark_obj);

            AccessTools.DeclaredMethod(typeof(OwlcatMultiSelectable), "DoSetLayers").Invoke(button, new object[] {});

            Button.ButtonClickedEvent evt = AccessTools
                                            .DeclaredField(typeof(OwlcatMultiButton), "m_OnLeftClick").GetValue(button) as Button.ButtonClickedEvent;

            evt.AddListener(() => {
                List <OwlcatMultiLayer> layers = AccessTools.DeclaredField(typeof(OwlcatMultiSelectable), "m_MultiLayers")
                                                 .GetValue(button) as List <OwlcatMultiLayer>;
                button.SetActiveLayer((button.ActiveLayerIndex + 1) % layers.Count);
            });

            return(transform);
        }
Exemple #3
0
        public static RectTransform Button(RectTransform parent, string text)
        {
            GameObject obj = new GameObject("ToyBox.Button");

            RectTransform transform = obj.AddComponent <RectTransform>();

            transform.SetParent(parent, false);
            transform.anchorMin = new Vector2(0.0f, 0.0f);
            transform.anchorMax = new Vector2(1.0f, 1.0f);
            transform.pivot     = new Vector2(0.5f, 0.5f);
            transform.offsetMin = new Vector2(0.0f, 0.0f);
            transform.offsetMax = new Vector2(0.0f, 0.0f);

            HorizontalLayoutGroupWorkaround group = obj.AddComponent <HorizontalLayoutGroupWorkaround>();

            group.SetLayoutHorizontal();
            group.childControlWidth      = true;
            group.childControlHeight     = true;
            group.childForceExpandWidth  = false;
            group.childForceExpandHeight = false;
            group.childScaleWidth        = false;
            group.childScaleHeight       = false;
            group.childAlignment         = TextAnchor.MiddleCenter;
            group.spacing = DefaultSpacing;
            group.padding = DefaultPadding;

            LayoutElement layout = obj.AddComponent <LayoutElement>();

            layout.minWidth        = -1.0f;
            layout.minHeight       = -1.0f;
            layout.preferredWidth  = -1.0f;
            layout.preferredHeight = -1.0f;
            layout.flexibleWidth   = 1.0f;
            layout.flexibleHeight  = 1.0f;

            CanvasRenderer renderer = obj.AddComponent <CanvasRenderer>();

            RectTransform inner_text = crUI.Text(transform, text);

            inner_text.GetComponent <TextMeshProUGUI>().alignment = TextAlignmentOptions.Center;

            Image image = obj.AddComponent <Image>();

            image.sprite = crUI.ButtonBackgroundImage?.sprite;

            SpriteState sprite_state = crUI.ButtonBackgroundSpriteState;

            OwlcatButton button = obj.AddComponent <OwlcatButton>();

            button.ClickSoundType = -1;
            button.HoverSoundType = 0;

            OwlcatSelectableLayerPart part0 = new OwlcatSelectableLayerPart();

            part0.Image       = image;
            part0.Transition  = OwlcatTransition.SpriteSwap;
            part0.SpriteState = sprite_state;

            OwlcatSelectableLayerPart part1 = new OwlcatSelectableLayerPart();
            ColorBlock colors = new ColorBlock();

            colors.normalColor      = new Color(0.7843f, 0.7686f, 0.749f, 1.0f);
            colors.highlightedColor = new Color(0.9176f, 0.8824f, 0.8235f, 1.0f);
            colors.pressedColor     = new Color(0.7647f, 0.749f, 0.7294f, 1.0f);
            colors.selectedColor    = new Color(0.9176f, 0.8824f, 0.8235f, 1.0f);
            colors.disabledColor    = new Color(0.6941f, 0.6941f, 0.6902f, 0.1922f);
            colors.colorMultiplier  = 1.0f;
            colors.fadeDuration     = 0.1f;
            part1.Colors            = colors;
            part1.TargetGraphic     = inner_text.GetComponent <TextMeshProUGUI>();

            button.AddLayerToMainPart(part0);
            button.AddLayerToMainPart(part1);

            return(transform);
        }
Exemple #4
0
        public static RectTransform Frame(RectTransform parent)
        {
            GameObject obj = new GameObject("ToyBox.Frame");

            RectTransform transform = obj.AddComponent <RectTransform>();

            transform.SetParent(parent, false);
            transform.anchorMin = new Vector2(0.0f, 0.0f);
            transform.anchorMax = new Vector2(1.0f, 1.0f);
            transform.pivot     = new Vector2(0.5f, 0.5f);
            transform.offsetMin = new Vector2(-16.0f, -16.0f);
            transform.offsetMax = new Vector2(16.0f, 16.0f);

            HorizontalLayoutGroupWorkaround group = obj.AddComponent <HorizontalLayoutGroupWorkaround>();

            group.SetLayoutHorizontal();
            group.childControlWidth      = true;
            group.childControlHeight     = true;
            group.childForceExpandWidth  = false;
            group.childForceExpandHeight = false;
            group.childScaleWidth        = false;
            group.childScaleHeight       = false;
            group.childAlignment         = TextAnchor.UpperRight;
            group.spacing = DefaultSpacing;
            group.padding = new RectOffset(left: 0, bottom: 0, right: 16, top: 8);

            LayoutElement layout = obj.AddComponent <LayoutElement>();

            layout.ignoreLayout    = true;
            layout.minWidth        = -1.0f;
            layout.minHeight       = -1.0f;
            layout.preferredWidth  = -1.0f;
            layout.preferredHeight = -1.0f;
            layout.flexibleWidth   = 1.0f;
            layout.flexibleHeight  = 1.0f;

            CanvasRenderer renderer = obj.AddComponent <CanvasRenderer>();

            Image image = obj.AddComponent <Image>();

            image.sprite = crUI.FrameBackgroundImage?.sprite;

            DraggbleWindow drag = obj.AddComponent <DraggbleWindow>();

            AccessTools
            .DeclaredField(typeof(DraggbleWindow), "m_OwnRectTransform")
            .SetValue(drag, parent);
            AccessTools
            .DeclaredField(typeof(DraggbleWindow), "m_ParentRectTransform")
            .SetValue(drag, parent.parent);

            RectTransform close = crUI.Button(transform, "Close");

            LayoutElement close_layout = close.GetComponent <LayoutElement>();

            close_layout.minWidth        = 64.0f;
            close_layout.minHeight       = 32.0f;
            close_layout.preferredWidth  = close_layout.minWidth;
            close_layout.preferredHeight = close_layout.minHeight;
            close_layout.flexibleWidth   = 0.0f;
            close_layout.flexibleHeight  = 0.0f;

            OwlcatButton button = close.GetComponent <OwlcatButton>();

            Button.ButtonClickedEvent evt = AccessTools
                                            .DeclaredField(typeof(OwlcatButton), "m_OnLeftClick").GetValue(button) as Button.ButtonClickedEvent;

            evt.AddListener(() => {
                parent.gameObject.SetActive(false);
            });

            return(transform);
        }