///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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); }
/////////////////////////////////////////////////////////////////////////////////////////////////////// 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); }
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); }
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); }
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); }
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); }
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; }
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); }