示例#1
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public static ColoredIconButton Create(Transform parent, Color color, Text textPrefab = null, string label = "", float width = 100, float iconWidth = 20)
        {
            var checkboxButton = new GameObject("Checkbox", typeof(RectTransform));
            var rt             = checkboxButton.transform as RectTransform;

            RectTransformExtensions.SetParams(rt, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), parent);
            RectTransformExtensions.SetSize(rt, width, 20);
            rt.anchoredPosition = new Vector2(0, 0);

            var checkbox = LockerPrefabShared.CreateIcon(rt, color, 0);

            RectTransformExtensions.SetSize(checkbox.rectTransform, iconWidth, iconWidth);
            checkbox.rectTransform.anchoredPosition = new Vector2(textPrefab != null ? -width / 2 + 10 : 0, 0);

            Text text = null;

            if (textPrefab != null)
            {
                var spacing = 5;
                text = LockerPrefabShared.CreateText(rt, textPrefab, color, 0, 10, label);
                RectTransformExtensions.SetSize(text.rectTransform, width - 20 - spacing, 20);
                text.rectTransform.anchoredPosition = new Vector2(10 + spacing, 0);
                text.alignment = TextAnchor.MiddleLeft;
            }

            checkboxButton.AddComponent <BoxCollider2D>();

            var button = checkboxButton.AddComponent <ColoredIconButton>();

            button.image   = checkbox;
            button.text    = text ?? null;
            button.UpColor = color;

            return(button);
        }
示例#2
0
        ///////////////////////////////////////////////////////////////////////////////////////////////////////
        protected static void Create(Transform parent, Picker instance, int buttonCount)
        {
            var lockerPrefab = Resources.Load <GameObject>("Submarine/Build/SmallLocker");
            var textPrefab   = Instantiate(lockerPrefab.GetComponentInChildren <Text>());

            textPrefab.fontSize = 16;
            textPrefab.color    = ScreenContentColor;

            float padding  = 30;
            float width    = padding + instance.ButtonSize + ((instance.ButtonsPerRow - 1) * instance.Spacing) - 20;
            int   rowCount = Mathf.CeilToInt(instance.ButtonsPerPage / (float)instance.ButtonsPerRow);
            float height   = padding + instance.ButtonSize + ((rowCount - 0.5f) * instance.Spacing);

            var rt = instance.rectTransform;

            RectTransformExtensions.SetParams(rt, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), parent);
            RectTransformExtensions.SetSize(rt, width, height);

            instance.background      = instance.gameObject.AddComponent <Image>();
            instance.background.type = Image.Type.Sliced;
            instance.background.rectTransform.anchoredPosition = new Vector2(0, -20);

            instance.pageText = LockerPrefabShared.CreateText(instance.transform, textPrefab, Color.white, 0, 10, "X/X");
            RectTransformExtensions.SetSize(instance.pageText.rectTransform, 30, 20);

            for (int i = 0; i < buttonCount; ++i)
            {
                var colorButton = ColorPickerButton.Create(instance.transform, instance.ButtonSize, instance.ButtonSize * 0.7f);
                instance.buttons.Add(colorButton);
            }

            instance.prevPageButton = ColorPickerPageButton.Create(instance.transform, Color.white);
            instance.nextPageButton = ColorPickerPageButton.Create(instance.transform, Color.white);
        }
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public static CustomizeScreen Create(Transform parent, SaveDataEntry data, GameObject lockerPrefab = null)
        {
#if SUBNAUTICA
            lockerPrefab = Resources.Load <GameObject>("Submarine/Build/SmallLocker");
            var textPrefab = Instantiate(lockerPrefab.GetComponentInChildren <Text>());
#elif BELOWZERO
            var textPrefab = Instantiate(lockerPrefab.GetComponentInChildren <TextMeshProUGUI>());
#endif
            textPrefab.fontSize = 12;
            textPrefab.color    = CustomizeScreen.ScreenContentColor;

            var screen = new GameObject("CustomizeScreen", typeof(RectTransform)).AddComponent <CustomizeScreen>();
            RectTransformExtensions.SetParams(screen.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), parent);
            RectTransformExtensions.SetSize(screen.rectTransform, 114, 241);

            screen.background        = new GameObject("Background").AddComponent <Image>();
            screen.background.sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("CustomizeScreen.png"));
            RectTransformExtensions.SetParams(screen.background.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), screen.transform);
            RectTransformExtensions.SetSize(screen.background.rectTransform, 114, 241);

            screen.labelLabel = LockerPrefabShared.CreateText(screen.background.transform, textPrefab, ScreenContentColor, 100, 9, "Label:");
            RectTransformExtensions.SetSize(screen.labelLabel.rectTransform, 90, 40);
#if SUBNAUTICA
            screen.labelLabel.alignment = TextAnchor.MiddleLeft;
#elif BELOWZERO
            screen.labelLabel.alignment = TextAlignmentOptions.MidlineLeft;
#endif

            screen.label = LabelController.Create(data, screen.background.transform, lockerPrefab);
            screen.label.rectTransform.anchoredPosition = new Vector2(0, 80);

            screen.exitButton = ConfigureButton.Create(screen.background.transform, Color.white, 40);

            var startX = 0;
            var startY = 30;
            screen.labelColorSetting = ColorSetting.Create(screen.background.transform, "Label Color", lockerPrefab);
            screen.labelColorSetting.rectTransform.anchoredPosition = new Vector2(startX, startY);

            screen.iconColorSetting = ColorSetting.Create(screen.background.transform, "Icon Color", lockerPrefab);
            screen.iconColorSetting.rectTransform.anchoredPosition = new Vector2(startX, startY - 19);

            screen.textColorSetting = ColorSetting.Create(screen.background.transform, "Filters Color", lockerPrefab);
            screen.textColorSetting.rectTransform.anchoredPosition = new Vector2(startX, startY - (19 * 2));

            screen.buttonsColorSetting = ColorSetting.Create(screen.background.transform, "Misc Color", lockerPrefab);
            screen.buttonsColorSetting.rectTransform.anchoredPosition = new Vector2(startX, startY - (19 * 3));

            screen.lockerColorSetting = ColorSetting.Create(screen.background.transform, "Locker Color", lockerPrefab);
            screen.lockerColorSetting.rectTransform.anchoredPosition = new Vector2(startX, startY - (19 * 4));

            screen.colorPicker = ColorPicker.Create(screen.background.transform, lockerPrefab);
            screen.colorPicker.gameObject.SetActive(false);
            screen.colorPicker.rectTransform.anchoredPosition = new Vector2(0, 30);

            return(screen);
        }
示例#4
0
        public static ConfigureButton Create(Transform parent, Color color, float x)
        {
            var config = LockerPrefabShared.CreateIcon(parent, color, 0);

            RectTransformExtensions.SetSize(config.rectTransform, 20, 20);
            config.rectTransform.anchoredPosition = new Vector2(x, -104);

            config.gameObject.AddComponent <BoxCollider2D>();
            var button = config.gameObject.AddComponent <ConfigureButton>();

            return(button);
        }
            public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
            {
                CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SmallLocker);

                yield return(task);

                GameObject originalPrefab = task.GetResult();
                GameObject prefab         = GameObject.Instantiate(originalPrefab);

                StorageContainer container = prefab.GetComponent <StorageContainer>();

                container.width  = Mod.config.AutosorterWidth;
                container.height = Mod.config.AutosorterHeight;
                container.Resize(Mod.config.AutosorterWidth, Mod.config.AutosorterHeight);
                var meshRenderers = prefab.GetComponentsInChildren <MeshRenderer>();

                foreach (var meshRenderer in meshRenderers)
                {
                    meshRenderer.material.color = new Color(1, 0, 0);
                }

#if SUBNAUTICA
                var prefabText = prefab.GetComponentInChildren <Text>();
#elif BELOWZERO
                var prefabText = prefab.GetComponentInChildren <TextMeshProUGUI>();
#endif
                var label = prefab.FindChild("Label");
                DestroyImmediate(label);

                var autoSorter = prefab.AddComponent <AutosortLocker>();

                var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);
                autoSorter.background = LockerPrefabShared.CreateBackground(canvas.transform, autoSorter.name);
                autoSorter.icon       = LockerPrefabShared.CreateIcon(autoSorter.background.transform, MainColor, 40);
                // The first number is the vertical position, the second number is the font
                autoSorter.text = LockerPrefabShared.CreateText(autoSorter.background.transform, prefabText, MainColor, 0, 14, "Autosorter", "Autosorter");
                autoSorter.text.rectTransform.anchoredPosition += new Vector2(20, 0);

                autoSorter.sortingText = LockerPrefabShared.CreateText(autoSorter.background.transform, prefabText, MainColor, -120, 18, "Sorting...", "Autosorter");
#if SUBNAUTICA
                autoSorter.sortingText.alignment = TextAnchor.UpperCenter;
#elif BELOWZERO
                autoSorter.sortingText.alignment = TextAlignmentOptions.Top;
#endif

                autoSorter.background.gameObject.SetActive(false);
                autoSorter.icon.gameObject.SetActive(false);
                autoSorter.text.gameObject.SetActive(false);
                autoSorter.sortingText.gameObject.SetActive(false);

                gameObject.Set(prefab);
                yield break;
            }
        public static GameObject GetPrefab(TechType basePrefab)
        {
            GameObject originalPrefab = CraftData.GetPrefabForTechType(basePrefab);
            GameObject prefab         = GameObject.Instantiate(originalPrefab);

            var meshRenderers = prefab.GetComponentsInChildren <MeshRenderer>();

            foreach (var meshRenderer in meshRenderers)
            {
                meshRenderer.material.color = new Color(0.3f, 0.3f, 0.3f);
            }

            var autosortTarget = prefab.AddComponent <AutosortTarget>();

            var smallLockerPrefab = CraftData.GetPrefabForTechType(TechType.SmallLocker);

            autosortTarget.textPrefab = GameObject.Instantiate(smallLockerPrefab.GetComponentInChildren <Text>());
            var label = prefab.FindChild("Label");

            DestroyImmediate(label);

            var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);

            if (basePrefab == TechType.Locker)
            {
                canvas.transform.localPosition = new Vector3(0, 1.1f, 0.25f);
            }

            autosortTarget.background = LockerPrefabShared.CreateBackground(canvas.transform);
            autosortTarget.icon       = LockerPrefabShared.CreateIcon(autosortTarget.background.transform, autosortTarget.textPrefab.color, 70);
            autosortTarget.text       = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, -20, 12, "Any");

            autosortTarget.label = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 100, 12, "Locker");

            autosortTarget.background.gameObject.SetActive(false);
            autosortTarget.icon.gameObject.SetActive(false);
            autosortTarget.text.gameObject.SetActive(false);

            autosortTarget.plus       = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 0, 30, "+");
            autosortTarget.plus.color = new Color(autosortTarget.textPrefab.color.r, autosortTarget.textPrefab.color.g, autosortTarget.textPrefab.color.g, 0);
            autosortTarget.plus.rectTransform.anchoredPosition += new Vector2(30, 70);

            autosortTarget.quantityText = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 0, 10, "XX");
            autosortTarget.quantityText.rectTransform.anchoredPosition += new Vector2(-35, -104);

            autosortTarget.configureButton      = ConfigureButton.Create(autosortTarget.background.transform, autosortTarget.textPrefab.color, 40);
            autosortTarget.configureButtonImage = autosortTarget.configureButton.GetComponent <Image>();
            autosortTarget.customizeButton      = ConfigureButton.Create(autosortTarget.background.transform, autosortTarget.textPrefab.color, 20);
            autosortTarget.customizeButtonImage = autosortTarget.customizeButton.GetComponent <Image>();

            return(prefab);
        }
示例#7
0
        private static ConfigureButton CreateConfigureButton(Transform parent, Color color, AutosortTarget target)
        {
            var config = LockerPrefabShared.CreateIcon(parent, color, 0);

            RectTransformExtensions.SetSize(config.rectTransform, 20, 20);
            config.rectTransform.anchoredPosition = new Vector2(40, -104);

            config.gameObject.AddComponent <BoxCollider2D>();
            var button = config.gameObject.AddComponent <ConfigureButton>();

            button.target = target;

            return(button);
        }
        public static AutosortTypePicker Create(Transform parent, Text textPrefab)
        {
            var picker = LockerPrefabShared.CreateCanvas(parent).gameObject.AddComponent <AutosortTypePicker>();

            picker.GetComponent <Canvas>().sortingLayerID = 0;
            picker.gameObject.SetActive(false);

            var t = picker.transform;

            t.localEulerAngles = new Vector3(0, 180, 0);
            t.localPosition    = new Vector3(0, 0, 0.4f);

            picker.background       = LockerPrefabShared.CreateBackground(picker.transform);
            picker.background.color = new Color(0, 0, 0, 1);
            picker.background.type  = Image.Type.Simple;
            RectTransformExtensions.SetSize(picker.background.rectTransform, 240, 220);

            int spacing = 20;
            int startY  = 60;
            int x       = 55;

            picker.underlines[0] = CreateUnderline(picker.background.transform, x);
            picker.underlines[1] = CreateUnderline(picker.background.transform, -x);

            var currentText = LockerPrefabShared.CreateText(picker.background.transform, textPrefab, Color.white, 90, 12, "Current");

            currentText.rectTransform.anchoredPosition = new Vector2(-x, 90);

            picker.categoriesTabButton = CreatePickerButton(picker.background.transform, x - 23 + 2, 90, textPrefab, picker.OnCategoriesButtonClick, 60);
            picker.categoriesTabButton.Override("Categories", true);

            picker.itemsTabButton = CreatePickerButton(picker.background.transform, x + 30 + 2, 90, textPrefab, picker.OnItemsButtonClick, 38);
            picker.itemsTabButton.Override("Items", false);

            picker.pageText = LockerPrefabShared.CreateText(picker.background.transform, textPrefab, Color.white, 90, 10, "1/X");
            picker.pageText.rectTransform.anchoredPosition = new Vector2(x, -80);

            picker.prevPageButton = AddPageButton(picker.background.transform, picker, -1, x - 20, -80);
            picker.nextPageButton = AddPageButton(picker.background.transform, picker, +1, x + 20, -80);

            picker.closeButton = AddCloseButton(picker.background.transform);

            for (int i = 0; i < AutosortTarget.MaxTypes; ++i)
            {
                picker.currentList[i]   = CreatePickerButton(picker.background.transform, -x, startY - (i * spacing), textPrefab, picker.OnCurrentListItemClick);
                picker.availableList[i] = CreatePickerButton(picker.background.transform, x, startY - (i * spacing), textPrefab, picker.OnAvailableListItemClick);
            }

            return(picker);
        }
        private static PickerPageButton AddPageButton(Transform parent, AutosortTypePicker target, int pageOffset, int x, int y)
        {
            var pageButton = LockerPrefabShared.CreateIcon(parent, Color.white, y);

            pageButton.sprite = ImageUtils.LoadSprite(Mod.GetAssetPath(pageOffset < 0 ? "ArrowLeft.png" : "ArrowRight.png"));
            pageButton.rectTransform.anchoredPosition = new Vector2(x, y);
            RectTransformExtensions.SetSize(pageButton.rectTransform, 44 / 4.0f, 73 / 4.0f);

            var controller = pageButton.gameObject.AddComponent <PickerPageButton>();

            controller.target     = target;
            controller.pageOffset = pageOffset;

            return(controller);
        }
示例#10
0
        public static GameObject GetPrefab()
        {
            GameObject originalPrefab = Resources.Load <GameObject>("Submarine/Build/SmallLocker");
            GameObject prefab         = GameObject.Instantiate(originalPrefab);

            prefab.name = "AutosortReceptacle";

            var container = prefab.GetComponent <StorageContainer>();

            container.width  = Mod.config.ReceptacleWidth;
            container.height = Mod.config.ReceptacleHeight;
            container.container.Resize(Mod.config.ReceptacleWidth, Mod.config.ReceptacleHeight);

            var meshRenderers = prefab.GetComponentsInChildren <MeshRenderer>();

            foreach (var meshRenderer in meshRenderers)
            {
                meshRenderer.material.color = new Color(0.3f, 0.3f, 0.3f);
            }

            var autosortTarget = prefab.AddComponent <AutosortTarget>();

            autosortTarget.textPrefab = GameObject.Instantiate(prefab.GetComponentInChildren <Text>());
            var label = prefab.FindChild("Label");

            DestroyImmediate(label);

            var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);

            autosortTarget.background           = LockerPrefabShared.CreateBackground(canvas.transform);
            autosortTarget.icon                 = LockerPrefabShared.CreateIcon(autosortTarget.background.transform, autosortTarget.textPrefab.color, 80);
            autosortTarget.text                 = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, -10, 12, "Any");
            autosortTarget.configureButton      = CreateConfigureButton(autosortTarget.background.transform, autosortTarget.textPrefab.color, autosortTarget);
            autosortTarget.configureButtonImage = autosortTarget.configureButton.GetComponent <Image>();

            autosortTarget.plus       = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 0, 30, "+");
            autosortTarget.plus.color = new Color(autosortTarget.textPrefab.color.r, autosortTarget.textPrefab.color.g, autosortTarget.textPrefab.color.g, 0);
            autosortTarget.plus.rectTransform.anchoredPosition += new Vector2(30, 80);

            autosortTarget.quantityText = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 0, 10, "XX");
            autosortTarget.quantityText.rectTransform.anchoredPosition += new Vector2(-35, -104);

            autosortTarget.background.gameObject.SetActive(false);
            autosortTarget.icon.gameObject.SetActive(false);
            autosortTarget.text.gameObject.SetActive(false);

            return(prefab);
        }
示例#11
0
        public static GameObject GetPrefab()
        {
            GameObject originalPrefab = Resources.Load <GameObject>("Submarine/Build/SmallLocker");
            GameObject prefab         = GameObject.Instantiate(originalPrefab);

            prefab.name = "Autosorter";

            var container = prefab.GetComponent <StorageContainer>();

            container.width  = Mod.config.AutosorterWidth;
            container.height = Mod.config.AutosorterHeight;
            container.container.Resize(Mod.config.AutosorterWidth, Mod.config.AutosorterHeight);

            var meshRenderers = prefab.GetComponentsInChildren <MeshRenderer>();

            foreach (var meshRenderer in meshRenderers)
            {
                meshRenderer.material.color = new Color(1, 0, 0);
            }

            var prefabText = prefab.GetComponentInChildren <Text>();
            var label      = prefab.FindChild("Label");

            DestroyImmediate(label);

            var autoSorter = prefab.AddComponent <AutosortLocker>();

            var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);

            autoSorter.background = LockerPrefabShared.CreateBackground(canvas.transform);
            autoSorter.icon       = LockerPrefabShared.CreateIcon(autoSorter.background.transform, MainColor, 40);
            autoSorter.text       = LockerPrefabShared.CreateText(autoSorter.background.transform, prefabText, MainColor, 0, 14, "Autosorter");

            autoSorter.sortingText           = LockerPrefabShared.CreateText(autoSorter.background.transform, prefabText, MainColor, -120, 12, "Sorting...");
            autoSorter.sortingText.alignment = TextAnchor.UpperCenter;

            autoSorter.background.gameObject.SetActive(false);
            autoSorter.icon.gameObject.SetActive(false);
            autoSorter.text.gameObject.SetActive(false);
            autoSorter.sortingText.gameObject.SetActive(false);

            return(prefab);
        }
        /*_____________________________________________________________________________________________________*/

        public static ColorPickerPageButton Create(Transform parent, Color color, float iconWidth = 20)
        {
            var pageButton = new GameObject("ColorPickerPageButton", typeof(RectTransform));
            var rt         = pageButton.transform as RectTransform;

            RectTransformExtensions.SetParams(rt, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), parent);

            var icon = LockerPrefabShared.CreateIcon(rt, color, 0);

            // Size of the arrows
            RectTransformExtensions.SetSize(icon.rectTransform, iconWidth, iconWidth);

            pageButton.AddComponent <BoxCollider2D>();

            var button = pageButton.AddComponent <ColorPickerPageButton>();

            button.image = icon;

            return(button);
        }
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public static ColorPickerButton Create(Transform parent, float width, float iconWidth)
        {
            var button = new GameObject("ColorPickerButton", typeof(RectTransform)).AddComponent <ColorPickerButton>();
            var rt     = button.rectTransform;

            RectTransformExtensions.SetParams(rt, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), parent);
            RectTransformExtensions.SetSize(rt, width, width);

            var highlight = LockerPrefabShared.CreateIcon(rt, Color.white, 0);

            RectTransformExtensions.SetParams(highlight.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), button.transform);
            RectTransformExtensions.SetSize(highlight.rectTransform, width, width);
            button.highlight = highlight;
            button.highlight.gameObject.SetActive(false);

            var image = new GameObject("Image", typeof(RectTransform)).AddComponent <uGUI_Icon>();

            RectTransformExtensions.SetParams(image.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), button.transform);
            RectTransformExtensions.SetSize(image.rectTransform, iconWidth, iconWidth);
            image.rectTransform.anchoredPosition = new Vector2(0, 0);
            button.image = image;

            return(button);
        }
        public static IEnumerator GetPrefabAsync(TechType basePrefab, IOut <GameObject> gameObject)
        {
            //Logger.Log($"GetPrefabAsync() executing for basePrefab TechType.{basePrefab.AsString()}");
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(basePrefab);

            yield return(task);

            GameObject originalPrefab = task.GetResult();
            GameObject prefab         = GameObject.Instantiate(originalPrefab);

            var meshRenderers = prefab.GetComponentsInChildren <MeshRenderer>();

            foreach (var meshRenderer in meshRenderers)
            {
                meshRenderer.material.color = new Color(0.3f, 0.3f, 0.3f);
            }

            var autosortTarget = prefab.AddComponent <AutosortTarget>();

            task = CraftData.GetPrefabForTechTypeAsync(TechType.SmallLocker);
            yield return(task);

            //var smallLockerPrefab = CraftData.GetPrefabForTechType(TechType.SmallLocker);

            //Logger.Log($"GetPrefabAsync() attempting to instantiate smallLockerPrefab");
            var smallLockerPrefab = GameObject.Instantiate(task.GetResult());

            //Logger.Log($"GetPrefabAsync() attempting to instantiate autosortTarget; smallLockerPrefab " + (smallLockerPrefab == null ? "is" : "is not") + " null");
#if SUBNAUTICA
            autosortTarget.textPrefab = GameObject.Instantiate(smallLockerPrefab.GetComponentInChildren <Text>());
#elif BELOWZERO
            autosortTarget.textPrefab = GameObject.Instantiate(smallLockerPrefab.GetComponentInChildren <TextMeshProUGUI>());
#endif
            var label = prefab.FindChild("Label");
            DestroyImmediate(label);

            var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);
            if (basePrefab == TechType.Locker)
            {
                canvas.transform.localPosition = new Vector3(0, 1.1f, 0.25f);
            }

            autosortTarget.background = LockerPrefabShared.CreateBackground(canvas.transform);
            autosortTarget.icon       = LockerPrefabShared.CreateIcon(autosortTarget.background.transform, autosortTarget.textPrefab.color, 70);
            autosortTarget.text       = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, -20, 12, "Any");

            autosortTarget.label = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 100, 12, "Locker");

            autosortTarget.background.gameObject.SetActive(false);
            autosortTarget.icon.gameObject.SetActive(false);
            autosortTarget.text.gameObject.SetActive(false);

            autosortTarget.plus       = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 0, 30, "+");
            autosortTarget.plus.color = new Color(autosortTarget.textPrefab.color.r, autosortTarget.textPrefab.color.g, autosortTarget.textPrefab.color.g, 0);
            autosortTarget.plus.rectTransform.anchoredPosition += new Vector2(30, 70);

            autosortTarget.quantityText = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 0, 10, "XX");
            autosortTarget.quantityText.rectTransform.anchoredPosition += new Vector2(-35, -104);

            autosortTarget.configureButton      = ConfigureButton.Create(autosortTarget.background.transform, autosortTarget.textPrefab.color, 40);
            autosortTarget.configureButtonImage = autosortTarget.configureButton.GetComponent <Image>();
            autosortTarget.customizeButton      = ConfigureButton.Create(autosortTarget.background.transform, autosortTarget.textPrefab.color, 20);
            autosortTarget.customizeButtonImage = autosortTarget.customizeButton.GetComponent <Image>();

            //return prefab;
            //originalPrefab.SetActive(false);
            gameObject.Set(prefab);
        }
示例#15
0
            public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
            {
                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 1");
                CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SmallLocker);

                yield return(task);

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 2");
                GameObject originalPrefab = task.GetResult();
                GameObject prefab         = GameObject.Instantiate(originalPrefab);

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 3, prefab " + (prefab == null ? "is" : "is not") + " null");

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 4");
                // TEST
                StorageContainer container = prefab.GetComponent <StorageContainer>();

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 4.1, container.container is " + (container.container == null ? "is" : "is not") + " null");
                container.width = Mod.config.AutosorterWidth;
                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 4.2");
                container.height = Mod.config.AutosorterHeight;
                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 4.3");
                container.Resize(Mod.config.AutosorterWidth, Mod.config.AutosorterHeight);

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 5");
                var meshRenderers = prefab.GetComponentsInChildren <MeshRenderer>();

                foreach (var meshRenderer in meshRenderers)
                {
                    meshRenderer.material.color = new Color(1, 0, 0);
                }

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 6");
                var prefabText = prefab.GetComponentInChildren <TextMeshProUGUI>();
                //Logger.Log($"AutosortLockerBuildable.GetGameObjectAsync: 6.1, prefabText == {prefabText.ToString()}");
                var label = prefab.FindChild("Label");

                DestroyImmediate(label);

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 7");
                var autoSorter = prefab.AddComponent <AutosortLocker>();

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 8");
                var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 8.1");
                autoSorter.background = LockerPrefabShared.CreateBackground(canvas.transform);
                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 8.2");
                autoSorter.icon = LockerPrefabShared.CreateIcon(autoSorter.background.transform, MainColor, 40);
                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 8.3: prefabText " + (prefabText == null ? "is" : "is not") + " null");
                autoSorter.text = LockerPrefabShared.CreateText(autoSorter.background.transform, prefabText, MainColor, 0, 14, "Autosorter");

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 9");
                autoSorter.sortingText = LockerPrefabShared.CreateText(autoSorter.background.transform, prefabText, MainColor, -120, 12, "Sorting...");
#if SUBNAUTICA
                autoSorter.sortingText.alignment = TextAnchor.UpperCenter;
#elif BELOWZERO
                autoSorter.sortingText.alignment = TextAlignmentOptions.Top;
#endif

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 10");
                autoSorter.background.gameObject.SetActive(false);
                autoSorter.icon.gameObject.SetActive(false);
                autoSorter.text.gameObject.SetActive(false);
                autoSorter.sortingText.gameObject.SetActive(false);

                //Logger.Log("AutosortLockerBuildable.GetGameObjectAsync: 11");
                //return prefab;
                gameObject.Set(prefab);
                yield break;
            }
示例#16
0
        public static IEnumerator GetPrefabAsync(TechType basePrefab, IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(basePrefab);

            yield return(task);

            GameObject originalPrefab = task.GetResult();
            GameObject prefab         = GameObject.Instantiate(originalPrefab);

            var meshRenderers = prefab.GetComponentsInChildren <MeshRenderer>();

            foreach (var meshRenderer in meshRenderers)
            {
                meshRenderer.material.color = new Color(0.3f, 0.3f, 0.3f);
            }

            var autosortTarget = prefab.AddComponent <AutosortTarget>();

            task = CraftData.GetPrefabForTechTypeAsync(TechType.SmallLocker);
            yield return(task);

            var smallLockerPrefab = GameObject.Instantiate(task.GetResult());

#if SUBNAUTICA
            autosortTarget.textPrefab = GameObject.Instantiate(smallLockerPrefab.GetComponentInChildren <Text>());
#elif BELOWZERO
            autosortTarget.textPrefab = GameObject.Instantiate(smallLockerPrefab.GetComponentInChildren <TextMeshProUGUI>());
#endif
            // Destroys the lable on the small locker
            var label = prefab.FindChild("Label");
            DestroyImmediate(label);
            label = prefab.FindChild("Locker");
            DestroyImmediate(label);

            var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);
            if (basePrefab == TechType.Locker)
            {
                // Positions the rectangle on the standing locker horz, vert, depth
                canvas.transform.localPosition = new Vector3(0.04f, 1.0f, 0.25f);
            }

            autosortTarget.background = LockerPrefabShared.CreateBackground(canvas.transform, prefab.name);

            int iconPos   = 75;          // The vertical pos of the icon at the top of the container
            int textPos   = 110;         // The vertical pos of the "Locker" text at the top of the container
            int buttonPos = -104;        // The vertical positions of the color and customize buttons
            int labelFont = 12;          // The font for the label on the lockers
            if (Mod.config.ShowLabel)
            {                            // This is a cludge until I can find the placeholder
                labelFont = 0;           // Set to zero and the Locker text does not display
            }
            else
            {
                labelFont = 12;
            }

            // Change the positions for the Standing Locker
            if (prefab.name == "Locker(Clone)")
            {
                iconPos   = 93;
                textPos   = 120;
                buttonPos = -120;
            }

            // Position the locker icon
            autosortTarget.icon = LockerPrefabShared.CreateIcon(autosortTarget.background.transform, autosortTarget.textPrefab.color, iconPos);
            // Position the Filter lables, the first number is the horizontal position, the second number is the font size.
            autosortTarget.text = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 0, 12, "[Any] - Doesn't display", prefab.name);
            // Position the "Locker" text
            autosortTarget.label = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, textPos, labelFont, "Locker - Doesn't display", prefab.name);

            autosortTarget.background.gameObject.SetActive(false);
            autosortTarget.icon.gameObject.SetActive(false);
            autosortTarget.text.gameObject.SetActive(false);
            // The container filters ??
            autosortTarget.plus = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 0, 12, "+ - Doesn't display", prefab.name);

            // Pos of the color picker
            autosortTarget.plus.color = new Color(autosortTarget.textPrefab.color.r, autosortTarget.textPrefab.color.g, autosortTarget.textPrefab.color.g, 0);
            // Pos of the item count on the locker
            autosortTarget.quantityText = LockerPrefabShared.CreateText(autosortTarget.background.transform, autosortTarget.textPrefab, autosortTarget.textPrefab.color, 0, 12, "XX - Doesn't display", prefab.name);
            // Pos the quantity text on the locker
            if (prefab.name == "Locker(Clone)")
            {
                autosortTarget.quantityText.rectTransform.anchoredPosition += new Vector2(14, -210);
            }
            else
            {
                autosortTarget.quantityText.rectTransform.anchoredPosition += new Vector2(4, -198);
            }
            // Pos of the configure button on the locker
            autosortTarget.configureButton      = ConfigureButton.Create(autosortTarget.background.transform, autosortTarget.textPrefab.color, 45, buttonPos);
            autosortTarget.configureButtonImage = autosortTarget.configureButton.GetComponent <Image>();
            // Pos of the customize button on the locker
            autosortTarget.customizeButton      = ConfigureButton.Create(autosortTarget.background.transform, autosortTarget.textPrefab.color, 20, buttonPos);
            autosortTarget.customizeButtonImage = autosortTarget.customizeButton.GetComponent <Image>();

            gameObject.Set(prefab);
        }