コード例 #1
0
        private static void TranslateHSpriteChangeCtrl(SpriteChangeCtrl hscc, string path, string scene)
        {
            var sprs = hscc.sprites;

            RegisterSprites(ref sprs, path, scene);
            hscc.sprites = sprs;
        }
コード例 #2
0
        public static void ExpandUI(object __instance, ref Array ___groupUIInfos, SpriteChangeCtrl ___sccBasePanel, int k)
        {
            var panel = GameObject.Find("HomeScene/Canvas/Panel");

            var core = panel.transform.Find(targets[k]);

            var ScrollView = new GameObject("ScrollView", typeof(RectTransform));

            ScrollView.transform.SetParent(core.transform, false);

            var ViewPort = new GameObject("ViewPort", typeof(RectTransform));

            ViewPort.transform.SetParent(ScrollView.transform, false);
            ViewPort.AddComponent <RectMask2D>();
            ViewPort.AddComponent <Image>().color = new Color(0, 0, 0, 0);

            var vpRectTransform = ViewPort.GetComponent <RectTransform>();

            var filter = core.transform.Find("Filter");

            filter.SetParent(ViewPort.transform, false);

            var svScrollRect = ScrollView.AddComponent <ScrollRect>();

            svScrollRect.content           = filter.GetComponent <RectTransform>();
            svScrollRect.viewport          = vpRectTransform;
            svScrollRect.horizontal        = true;
            svScrollRect.vertical          = false;
            svScrollRect.scrollSensitivity = 40;

            var fitter = filter.gameObject.AddComponent <ContentSizeFitter>();

            fitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
            fitter.verticalFit   = ContentSizeFitter.FitMode.Unconstrained;

            vpRectTransform.offsetMin = new Vector2(-80, 5);
            vpRectTransform.offsetMax = new Vector2(190, 50);

            var sRectTransform = ScrollView.GetComponent <RectTransform>();

            sRectTransform.offsetMin = new Vector2(-135, -71);
            sRectTransform.offsetMax = new Vector2(5.5f, 29);

            var trav = Traverse.Create(__instance);

            var type = ___groupUIInfos.GetType().GetElementType(); // why did you make this private?...

            if (type != null)
            {
                var newInfos = Array.CreateInstance(type, HS2_ExtraGroups.groupCount);
                Array.Copy(___groupUIInfos, newInfos, Math.Min(___groupUIInfos.Length, newInfos.Length));

                ___groupUIInfos = newInfos;
            }

            var ctrl1       = panel.transform.Find("Home/imgSelectGroup").GetComponent <SpriteChangeCtrl>();
            var oldSprites1 = ctrl1.sprites;

            ctrl1.sprites = new Sprite[HS2_ExtraGroups.groupCount];
            for (var i = 0; i < oldSprites1.Length; i++)
            {
                ctrl1.sprites[i] = oldSprites1[i];
            }

            var ctrl2       = panel.transform.Find("Home/imgSelectGroup/imgState").GetComponent <SpriteChangeCtrl>();
            var oldSprites2 = ctrl2.sprites;

            ctrl2.sprites = new Sprite[HS2_ExtraGroups.groupCount];
            for (var i = 0; i < oldSprites2.Length; i++)
            {
                ctrl2.sprites[i] = oldSprites2[i];
            }

            var oldSprites = ___sccBasePanel.sprites;

            ___sccBasePanel.sprites = new Sprite[HS2_ExtraGroups.groupCount];
            for (var i = 0; i < oldSprites.Length; i++)
            {
                ___sccBasePanel.sprites[i] = oldSprites[i];
            }

            var selectGroup = panel.transform.Find(k == 0 ? "CharaEdit/Group/SelectGroups" : "CharaEdit/Coordinate/SelectGroup");
            var gFilter5    = selectGroup.transform.Find("Panel/Filter And Sort/ScrollView/ViewPort/Filter/tglFilter5");

            if (k == 0)
            {
                var oldFilters = trav.Field("groupCharaSelectUI").Field("tglFilters").GetValue <Toggle[]>();
                var newFilters = new Toggle[HS2_ExtraGroups.groupCount + 1];

                for (var i = 0; i < oldFilters.Length; i++)
                {
                    newFilters[i] = oldFilters[i];
                }

                var selectChara = panel.transform.Find("CharaEdit/Group/SelectChara");
                var sFilter5    = selectChara.transform.Find("Panel/Filter And Sort/Filter/tglFilter5");

                for (var i = 5; i < HS2_ExtraGroups.groupCount; i++)
                {
                    var cCopy = Object.Instantiate(sFilter5, sFilter5.parent);
                    cCopy.name = "tglFilter" + (i + 1);

                    newFilters[i + 1] = cCopy.GetComponentInChildren <Toggle>();
                }

                trav.Field("groupCharaSelectUI").Field("tglFilters").SetValue(newFilters);
            }

            for (var i = 5; i < HS2_ExtraGroups.groupCount; i++)
            {
                ___sccBasePanel.sprites[i] = Object.Instantiate(___sccBasePanel.sprites[4]);
                ctrl1.sprites[i]           = Object.Instantiate(ctrl1.sprites[4]);
                ctrl2.sprites[i]           = Object.Instantiate(ctrl2.sprites[4]);

                if (type == null)
                {
                    continue;
                }

                var gCopy = Object.Instantiate(gFilter5, gFilter5.parent);
                gCopy.name = "tglFilter" + (i + 1);

                var obj = Activator.CreateInstance(type, true);

                var tglFieldInfo = type.GetField("tgl");
                tglFieldInfo.SetValue(obj, gCopy.GetComponentInChildren <Toggle>());

                var imageFieldInfo = type.GetField("image");
                imageFieldInfo.SetValue(obj, gCopy.GetComponentInChildren <Image>());

                ___groupUIInfos.SetValue(obj, i);
            }

            filter.GetComponent <HorizontalLayoutGroup>().enabled = true;
        }
コード例 #3
0
 public static void CoordinateGroupListUI_Start_CreateUI(CoordinateGroupListUI __instance, ref Array ___groupUIInfos, SpriteChangeCtrl ___sccBasePanel)
 {
     Tools.ExpandUI(__instance, ref ___groupUIInfos, ___sccBasePanel, 1);
 }