/*__________________________________________________________________________________________________________*/ 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; }
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); }
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); }
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); }
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(); }
/*_____________________________________________________________________________________________________*/ 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); }
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; }
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; }
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; }
/////////////////////////////////////////////////////////////////////////////////////////// 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 } } }); }
/////////////////////////////////////////////////////////////////////////////////////////// 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 } } }); }
protected override Sprite GetItemSprite() { return(SMLHelper.V2.Utility.ImageUtils.LoadSpriteFromFile(Mod.GetAssetPath("AutosortLocker.png"))); }
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; }
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"))); }