Example #1
0
        /*__________________________________________________________________________________________________________*/

        protected static void Create(Transform parent, Picker colorGrid, int buttonCount, 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    = ScreenContentColor;

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

            var rt = colorGrid.rectTransform;
            // The first Vector2 positions the colorGrid on the locker horz / vert.
            RectTransformExtensions.SetParams(rt, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.6f), parent);
            RectTransformExtensions.SetSize(rt, width, height);

            colorGrid.background        = colorGrid.gameObject.AddComponent <Image>();
            colorGrid.background.sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("Background.png"));
            colorGrid.background.color  = new Color(1, 1, 1);

            for (int i = 0; i < buttonCount; ++i)
            {
                var colorButton = ColorPickerButton.Create(colorGrid.transform, colorGrid.ButtonSize, colorGrid.ButtonSize * 0.7f);
                colorGrid.buttons.Add(colorButton);
            }
        }
        private void Initialize()
        {
            background.gameObject.SetActive(true);
            icon.gameObject.SetActive(true);
            text.gameObject.SetActive(true);

            background.sprite           = ImageUtils.LoadSprite(Mod.GetAssetPath("LockerScreen.png"));
            icon.sprite                 = ImageUtils.LoadSprite(Mod.GetAssetPath("Receptacle.png"));
            configureButtonImage.sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("Configure.png"));
            customizeButtonImage.sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("Edit.png"));

            configureButton.onClick = ShowConfigureMenu;
            customizeButton.onClick = ShowCustomizeMenu;

            saveData = GetSaveData();
            InitializeFromSaveData();

            InitializeFilters();

            UpdateText();

            CreatePicker();
            CreateCustomizeScreen();

            initialized = true;
        }
Example #3
0
        public static PickerButton Create(Transform parent, Text textPrefab, Action <AutosorterFilter> action, int width = 100, int height = 18)
        {
            var button = new GameObject("PickerButton", typeof(RectTransform)).AddComponent <PickerButton>();

            button.transform.SetParent(parent, false);

            button.background = new GameObject("Background", typeof(RectTransform)).AddComponent <Image>();
            RectTransformExtensions.SetParams(button.background.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), button.transform);
            RectTransformExtensions.SetSize(button.background.rectTransform, width * 10, height * 10);
            button.background.rectTransform.localScale = new Vector3(0.1f, 0.1f, 1);
            button.background.sprite = ImageUtils.Load9SliceSprite(Mod.GetAssetPath("MainMenuStandardSprite.png"), new RectOffset(Slice, Slice, Slice, Slice));
            button.background.color  = upColor;
            button.background.type   = Image.Type.Sliced;

            button.text = new GameObject("Text", typeof(RectTransform)).AddComponent <Text>();
            RectTransformExtensions.SetParams(button.text.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), button.transform);
            RectTransformExtensions.SetSize(button.text.rectTransform, width, height);
            button.text.color     = new Color(1, 1, 1);
            button.text.font      = textPrefab.font;
            button.text.fontSize  = 10;
            button.text.alignment = TextAnchor.MiddleCenter;

            button.onClick += action;

            return(button);
        }
Example #4
0
 private void SetBackgroundSprite(bool category)
 {
     if (background != null)
     {
         var spriteName = category ? "MainMenuPressedSprite.png" : "MainMenuStandardSprite.png";
         background.sprite = ImageUtils.Load9SliceSprite(Mod.GetAssetPath(spriteName), new RectOffset(Slice, Slice, Slice, Slice));
     }
 }
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////
        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);
        }
        public void Initialize(AutosortTarget locker)
        {
            this.locker        = locker;
            closeButton.target = locker;
            background.sprite  = Common.Utility.ImageUtils.LoadSprite(Mod.GetAssetPath("Background.png"));
            background.color   = new Color(1, 1, 1);

            RefreshCurrentFilters();
            UpdateAvailableTypes();
        }
        private static Image CreateUnderline(Transform parent, int x)
        {
            var underline = new GameObject("Underline", typeof(RectTransform)).AddComponent <Image>();

            RectTransformExtensions.SetParams(underline.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), parent);
            RectTransformExtensions.SetSize(underline.rectTransform, 272 / 3, 78 / 3);
            underline.sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("TitleUnderline.png"));
            underline.rectTransform.anchoredPosition = new Vector2(x, 90);

            return(underline);
        }
Example #8
0
        private void Initialize()
        {
            background.gameObject.SetActive(true);
            icon.gameObject.SetActive(true);
            text.gameObject.SetActive(true);
            sortingText.gameObject.SetActive(true);

            background.sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("LockerScreen.png"));
            icon.sprite       = ImageUtils.LoadSprite(Mod.GetAssetPath("Sorter.png"));

            initialized = true;
        }
        public static PickerCloseButton AddCloseButton(Transform parent)
        {
            var closeImage = new GameObject("CloseButton", typeof(RectTransform)).AddComponent <Image>();

            RectTransformExtensions.SetParams(closeImage.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), parent);
            RectTransformExtensions.SetSize(closeImage.rectTransform, 20, 20);
            closeImage.sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("Close.png"));
            closeImage.rectTransform.anchoredPosition = new Vector2(0, -90);

            var closeButton = closeImage.gameObject.AddComponent <PickerCloseButton>();

            return(closeButton);
        }
Example #10
0
        public virtual void Initialize()
        {
            bool firstInitialize = false;

            if (background.sprite == null)
            {
                background.sprite = ImageUtils.Load9SliceSprite(Mod.GetAssetPath("PickerBackground.png"), new RectOffset(100, 100, 100, 100));
                firstInitialize   = true;
            }

            int pages = GetPageCount();

            int   rows   = Mathf.CeilToInt(ButtonsPerPage / (float)ButtonsPerRow);
            float StartX = -(Spacing * (ButtonsPerRow - 1) / 2.0f);
            float StartY = (Spacing * ((rows - 0.5f) / 2.0f)) + 10;

            for (int i = 0; i < this.buttons.Count; ++i)
            {
                var button = this.buttons[i];
                int page   = i / ButtonsPerPage;
                int row    = (i / ButtonsPerRow) % (ButtonsPerPage / ButtonsPerRow);
                int col    = i % ButtonsPerRow;
                button.rectTransform.anchoredPosition = new Vector2(StartX + (Spacing * col), StartY - (row * Spacing));
                button.onClick += OnClick;
                button.gameObject.SetActive(page == 0);
                button.toggled = false;
            }

            prevPageButton.Initialize("Left.png", Color.white);
            nextPageButton.Initialize("Right.png", Color.white);

            var paginationY = -Spacing * rows / 2.0f;

            (prevPageButton.transform as RectTransform).anchoredPosition = new Vector2(-20, paginationY);
            (nextPageButton.transform as RectTransform).anchoredPosition = new Vector2(20, paginationY);
            pageText.rectTransform.anchoredPosition = new Vector2(0, paginationY);

            if (firstInitialize)
            {
                prevPageButton.onClick += OnPrevPage;
                nextPageButton.onClick += OnNextPage;
            }

            page = 0;
            //prevPageButton.gameObject.SetActive(pages > 1);
            //nextPageButton.gameObject.SetActive(pages > 1);
            //pageText.gameObject.SetActive(pages > 1);

            UpdateText();
        }
Example #11
0
        /*_____________________________________________________________________________________________________*/

        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;
            // The color picker settings
            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"));
            // 1st = 2nd = 3rd = horizontal 4th = vertical positon of the color settings
            RectTransformExtensions.SetParams(screen.background.rectTransform, new Vector2(0.5f, 0.5f), new Vector2(0.41f, 0.4f), screen.transform);
            RectTransformExtensions.SetSize(screen.background.rectTransform, 114, 220);

            screen.label = LabelController.Create(data, screen.background.transform, lockerPrefab);
            // The position of the LOCKER label
            screen.label.rectTransform.anchoredPosition = new Vector2(0, 70);
            // The position of the close (X) button on the color settings
            screen.exitButton = ConfigureButton.Create(screen.background.transform, Color.white, 0, -85);

            var startX = 0;
            var startY = 30;
            screen.lockerColorSetting = ColorSetting.Create(screen.background.transform, "Locker Color", lockerPrefab);
            screen.lockerColorSetting.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.labelColorSetting = ColorSetting.Create(screen.background.transform, "Label Color", lockerPrefab);
            screen.labelColorSetting.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);
        }
        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);
        }
Example #13
0
        public void Initialize(Color initialColor)
        {
            base.Initialize();

            var sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("Circle.png"), new Vector2(0.5f, 0.5f));

            for (int i = 0; i < buttons.Count; ++i)
            {
                var button = buttons[i];
                var color  = Mod.colors[i];
                button.Initialize(i, color, color == initialColor, sprite);
            }

            onSelect = OnSelect;
        }
Example #14
0
        private void Initialize()
        {
            background.gameObject.SetActive(true);
            icon.gameObject.SetActive(true);
            text.gameObject.SetActive(true);

            background.sprite           = ImageUtils.LoadSprite(Mod.GetAssetPath("LockerScreen.png"));
            icon.sprite                 = ImageUtils.LoadSprite(Mod.GetAssetPath("Receptacle.png"));
            configureButtonImage.sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("Configure.png"));

            InitializeFilters();

            UpdateText();

            CreatePicker();

            initialized = true;
        }
Example #15
0
        private static void InitializeFilters()
        {
            var path = Mod.GetAssetPath("filters.json");
            var file = JsonConvert.DeserializeObject <List <AutosorterFilter> >(File.ReadAllText(path));

            Filters = file.Where((f) => f.IsCategory()).ToList();

            if (Mod.config.ShowAllItems)
            {
                var typeRefPath = Mod.GetAssetPath("type_reference.json");
                List <TypeReference> typeReferences =
                    JsonConvert.DeserializeObject <List <TypeReference> >(File.ReadAllText(typeRefPath));
                typeReferences.Sort((TypeReference a, TypeReference b) =>
                {
                    string aName = Language.main.Get(a.Value);
                    string bName = Language.main.Get(b.Value);
                    return(String.Compare(aName.ToLowerInvariant(), bName.ToLowerInvariant(), StringComparison.Ordinal));
                });

                foreach (var typeRef in typeReferences)
                {
                    Filters.Add(new AutosorterFilter()
                    {
                        Category = "", Types = new List <TechType> {
                            typeRef.Value
                        }
                    });
                }
                return;
            }
            var sorted = file.Where(f => !f.IsCategory()).ToList();

            sorted.Sort((x, y) =>
            {
                string xName = Language.main.Get(x.Types.First());
                string yName = Language.main.Get(y.Types.First());
                return(string.Compare(xName.ToLowerInvariant(), yName.ToLowerInvariant(), StringComparison.Ordinal));
            });
            foreach (var filter in sorted)
            {
                Filters.Add(filter);
            }
        }
        public void Initialize(int id, Color color, bool toggled, Atlas.Sprite imageSprite)
        {
            this.id      = id;
            this.toggled = toggled;

            if (hoverSprite == null)
            {
                hoverSprite = ImageUtils.LoadSprite(Mod.GetAssetPath("SelectorHover.png"), new Vector2(0.5f, 0.5f));
            }
            if (selectedSprite == null)
            {
                selectedSprite = ImageUtils.LoadSprite(Mod.GetAssetPath("SelectorSelected.png"), new Vector2(0.5f, 0.5f));
            }

            highlight.sprite = hoverSprite;

            image.sprite = imageSprite;
            image.color  = color;
        }
Example #17
0
 ///////////////////////////////////////////////////////////////////////////////////////////
 public static void AddBuildable()
 {
     BuilderUtils.AddBuildable(new CustomTechInfo()
     {
         getPrefab     = AutosortLocker.GetPrefab,
         techType      = Mod.GetTechType(CustomTechType.AutosortLocker),
         techGroup     = TechGroup.InteriorModules,
         techCategory  = TechCategory.InteriorModule,
         knownAtStart  = true,
         assetPath     = "Submarine/Build/AutosortLocker",
         displayString = "Autosorter",
         tooltip       = "Small, wall-mounted smart-locker that automatically transfers items into linked Autosort Receptacles.",
         techTypeKey   = CustomTechType.AutosortLocker.ToString(),
         sprite        = new Atlas.Sprite(ImageUtils.LoadTexture(Mod.GetAssetPath("AutosortLocker.png"))),
         recipe        = Mod.config.EasyBuild
                         ? new List <CustomIngredient> {
             new CustomIngredient()
             {
                 techType = TechType.Titanium,
                 amount   = 2
             }
         }
                         : new List <CustomIngredient>
         {
             new CustomIngredient()
             {
                 techType = TechType.Titanium,
                 amount   = 2
             },
             new CustomIngredient()
             {
                 techType = TechType.ComputerChip,
                 amount   = 1
             },
             new CustomIngredient()
             {
                 techType = TechType.AluminumOxide,
                 amount   = 2
             }
         }
     });
 }
Example #18
0
 ///////////////////////////////////////////////////////////////////////////////////////////
 public static void AddBuildable()
 {
     BuilderUtils.AddBuildable(new CustomTechInfo()
     {
         getPrefab     = AutosortTarget.GetPrefab,
         techType      = Mod.GetTechType(CustomTechType.AutosortTarget),
         techGroup     = TechGroup.InteriorModules,
         techCategory  = TechCategory.InteriorModule,
         knownAtStart  = true,
         assetPath     = "Submarine/Build/AutosortTarget",
         displayString = "Autosort Receptacle",
         tooltip       = "Wall locker linked to an Autosorter that receives sorted items.",
         techTypeKey   = CustomTechType.AutosortTarget.ToString(),
         sprite        = new Atlas.Sprite(ImageUtils.LoadTexture(Mod.GetAssetPath("AutosortTarget.png"))),
         recipe        = Mod.config.EasyBuild
                         ? new List <CustomIngredient> {
             new CustomIngredient()
             {
                 techType = TechType.Titanium,
                 amount   = 2
             }
         }
                         : new List <CustomIngredient>
         {
             new CustomIngredient()
             {
                 techType = TechType.Titanium,
                 amount   = 2
             },
             new CustomIngredient()
             {
                 techType = TechType.UraniniteCrystal,
                 amount   = 1
             },
             new CustomIngredient()
             {
                 techType = TechType.Magnetite,
                 amount   = 1
             }
         }
     });
 }
Example #19
0
 protected override Sprite GetItemSprite()
 {
     return(SMLHelper.V2.Utility.ImageUtils.LoadSpriteFromFile(Mod.GetAssetPath("AutosortLocker.png")));
 }
Example #20
0
        internal void Initialize(SaveDataEntry saveData)
        {
            target = saveData;

            exitButton.GetComponentInChildren <Image>().sprite = ImageUtils.LoadSprite(Mod.GetAssetPath("Close.png"));

            label.text.color = saveData.LabelColor.ToColor();

            label.onModified   += OnLabelChanged;
            exitButton.onClick += OnExitButtonClicked;

            labelColorSetting.SetInitialValue(saveData.LabelColor.ToColor());
            labelColorSetting.onClick += OnLabelColorSettingClicked;

            iconColorSetting.SetInitialValue(saveData.IconColor.ToColor());
            iconColorSetting.onClick += OnIconColorSettingClicked;

            textColorSetting.SetInitialValue(saveData.OtherTextColor.ToColor());
            textColorSetting.onClick += OnTextColorSettingClicked;

            buttonsColorSetting.SetInitialValue(saveData.ButtonsColor.ToColor());
            buttonsColorSetting.onClick += OnButtonsColorSettingClicked;

            lockerColorSetting.SetInitialValue(saveData.LockerColor.ToColor());
            lockerColorSetting.onClick += OnLockerColorSettingClicked;
        }
Example #21
0
        public void Initialize(string spriteName, Color color)
        {
            var sprite = ImageUtils.LoadSprite(Mod.GetAssetPath(spriteName), new Vector2(0.5f, 0.5f));

            Initialize(sprite, color);
        }
 protected override Atlas.Sprite GetItemSprite()
 {
     return(SMLHelper.V2.Utility.ImageUtils.LoadSpriteFromFile(Mod.GetAssetPath("AutosortTargetStanding.png")));
 }