private static void PatchSmallLocker(uGUI_SignInput __instance) { __instance.inputField.lineType = InputField.LineType.MultiLineNewline; //__instance.inputField.lineType = TMPro.TMP_InputField.LineType.MultiLineNewline; //The Multiline Feature seems to be broken. It was switched to the TextMeshPro Libary and after this it worked agein. //For now waiting for the experimental Branch to get Stable to see if this can be fixed on SN too like BZ. __instance.inputField.characterLimit = Mod.Config.SmallLockerTextLimit; var rt = __instance.inputField.transform as RectTransform; RectTransformExtensions.SetSize(rt, rt.rect.width, TextFieldHeight); GameObject.Destroy(__instance.inputField.textComponent.GetComponent <ContentSizeFitter>()); rt = __instance.inputField.textComponent.transform as RectTransform; RectTransformExtensions.SetSize(rt, rt.rect.width, TextFieldHeight); __instance.inputField.textComponent.alignment = TextAnchor.MiddleCenter; //__instance.inputField.textComponent.alignment = TMPro.TextAlignmentOptions.Center; //The TextAnchor Feature seems to be broken. It was switched to the TextMeshPro Libary and after this it worked agein. //For now waiting for the experimental Branch to get Stable to see if this can be fixed on SN too like BZ. if (Mod.Config.ColorPickerOnLockers) { var currentButton = __instance.transform.GetChild(1).GetComponent <Button>(); var height = Mod.Config.ExtraColorsOnLockers ? 1200 : 210; AddColorPickerSystem(__instance, currentButton, "LOCKER", -20, height); } }
static void uGUISignInput_OnDeselect_Postfix(uGUI_SignInput __instance) { if (prevLabel == __instance.text) { return; } using var _ = Debug.profiler("uGUISignInput_OnDeselect_Postfix"); var storage = StorageLabels.allLabels.FirstOrDefault(l => l.label.signInput == __instance)?.owner; if (!storage) { return; } bool shouldManage = __instance.text == ""; string storageID = storage.storageRoot.Id; manageStorage(storageID, shouldManage); if (shouldManage) { storage.GetComponent <StorageAutoname>()?.onContentsChanged(); } }
public static void Postfix(uGUI_SignInput __instance) { GameObject gameObject = __instance.gameObject.FindAncestor <PrefabIdentifier>().gameObject; NitroxId id = NitroxEntity.GetId(gameObject); TechTag tag = gameObject.GetComponent <TechTag>(); switch (tag.type) { case TechType.SmallStorage: // In the water EntitySignMetadata entitySignMetadata = new(__instance.text, __instance.colorIndex, __instance.scaleIndex, __instance.elementsState, __instance.IsBackground()); Resolve <Entities>().BroadcastMetadataUpdate(id, entitySignMetadata); break; case TechType.SmallLocker: // On wall SignMetadata signMetadata = new(__instance.text, __instance.colorIndex, __instance.scaleIndex, __instance.elementsState, __instance.IsBackground()); Resolve <Building>().MetadataChanged(id, signMetadata); break; default: Log.Warn($"[{nameof(uGUI_SignInput_OnDeselect_Patch)}] no case planned for tech type {tag.type}"); break; } }
private static void AddColorPickerSystem(uGUI_SignInput __instance, Button currentButton, string label, int xOffset, int pickerHeight) { if (currentButton != null) { if (buttonPrefab == null) { CreateButtonPrefab(); } var picker = AddColorPicker(__instance, label, xOffset, pickerHeight); var go = currentButton.gameObject; GameObject.DestroyImmediate(currentButton); currentButton = go.AddComponent <Button>(); currentButton.transition = buttonPrefab.transition; currentButton.targetGraphic = go.GetComponentInChildren <Image>(); currentButton.colors = buttonPrefab.colors; currentButton.onClick.RemoveAllListeners(); var instance = __instance; currentButton.onClick.AddListener(() => { picker.SetActive(!picker.activeSelf); }); __instance.colorizedElements = __instance.colorizedElements.Add(picker.GetComponentInChildren <Text>()).ToArray(); } }
public void Changed(uGUI_SignInput sign) { string guid = sign.gameObject.FindAncestor <PrefabIdentifier>().Id; SignChanged signChanged = new SignChanged(guid, sign.text, sign.colorIndex, sign.scaleIndex, sign.elementsState, sign.IsBackground()); packetSender.Send(signChanged); }
public static void Postfix(uGUI_SignInput __instance) { GameObject gameObject = __instance.gameObject.FindAncestor <PrefabIdentifier>().gameObject; NitroxId id = NitroxEntity.GetId(gameObject); SignMetadata signMetadata = new SignMetadata(__instance.text, __instance.colorIndex, __instance.scaleIndex, __instance.elementsState, __instance.IsBackground()); NitroxServiceLocator.LocateService <Building>().MetadataChanged(id, signMetadata); }
private static void Postfix(uGUI_SignInput __instance) { foreach (Transform child in __instance.transform) { if (child.gameObject.name == "ColorPicker") { child.gameObject.SetActive(false); } } }
public void Changed(uGUI_SignInput sign) { GameObject gameObject = sign.gameObject.FindAncestor <PrefabIdentifier>().gameObject; NitroxId id = NitroxIdentifier.GetId(gameObject); SignMetadata signMetadata = new SignMetadata(id, sign.text, sign.colorIndex, sign.scaleIndex, sign.elementsState, sign.IsBackground()); SignChanged signChanged = new SignChanged(signMetadata); packetSender.Send(signChanged); }
private static void PatchSign(uGUI_SignInput __instance) { __instance.inputField.characterLimit = Mod.config.SignTextLimit; if (Mod.config.ColorPickerOnSigns) { var currentButton = __instance.transform.GetChild(0).GetChild(8).GetComponent <Button>(); var height = Mod.config.ExtraColorsOnSigns ? 1200 : 210 + 55; AddColorPickerSystem(__instance, currentButton, "SIGN", -100, height); } }
public override void UpdateMetadata(NitroxId id, SignMetadata metadata) { GameObject gameObject = NitroxIdentifier.RequireObjectFrom(id); uGUI_SignInput sign = gameObject.GetComponentInChildren <uGUI_SignInput>(); sign.text = metadata.Text; sign.colorIndex = metadata.ColorIndex; sign.elementsState = metadata.Elements; sign.scaleIndex = metadata.ScaleIndex; sign.SetBackground(metadata.Background); }
public override void Process(SignChanged packet) { GameObject gameObject = GuidHelper.RequireObjectFrom(packet.Guid); uGUI_SignInput sign = gameObject.GetComponentInChildren <uGUI_SignInput>(); sign.text = packet.NewText; sign.colorIndex = packet.ColorIndex; sign.elementsState = packet.Elements; sign.scaleIndex = packet.ScaleIndex; sign.SetBackground(packet.Background); }
private static void Postfix(uGUI_SignInput __instance) { if (IsOnSmallLocker(__instance)) { AddColors(__instance); PatchSmallLocker(__instance); } else if (IsOnSign(__instance)) { AddColors(__instance); PatchSign(__instance); } }
public override void ProcessMetadata(GameObject gameObject, EntitySignMetadata metadata) { uGUI_SignInput sign = gameObject.GetComponentInChildren <uGUI_SignInput>(true); if (sign) { sign.text = metadata.Text; sign.colorIndex = metadata.ColorIndex; sign.elementsState = metadata.Elements; sign.scaleIndex = metadata.ScaleIndex; sign.SetBackground(metadata.Background); } }
/// <summary> /// This function is patched into the game using Harmony. /// </summary> /// <param name="__instance">The <see cref="uGUI_SignInput"/> instance that owns the method.</param> public static void DECOUpdateScale_Postfix(uGUI_SignInput __instance) { // If this uGUI_SignInput is enabled and attached to a game object. if (__instance.enabled && __instance.gameObject != null && __instance.gameObject.GetComponent <DECOSignFixerComponent>() == null) { if (__instance.transform != null && __instance.transform.parent != null) // If this uGUI_SignInput has a valid parent. { // Get Sign component from this uGUI_SignInput parent. Sign sign = __instance.transform.parent.GetComponent <Sign>(); // If we were able to get the Sign component for this uGUI_SignInput. if (sign != null) { __instance.gameObject.AddComponent <DECOSignFixerComponent>(); // Add our fixer comonent to the game object. } } } }
private static void Postfix(uGUI_SignInput __instance) { Mod.PrintObject(__instance.gameObject, "asdf"); // /* if (IsOnSmallLocker(__instance)) { AddColors(__instance); PatchSmallLocker(__instance); } else if (IsOnSign(__instance)) { AddColors(__instance); PatchSign(__instance); } // */ }
public override void UpdateMetadata(NitroxId id, SignMetadata metadata) { GameObject gameObject = NitroxEntity.RequireObjectFrom(id); uGUI_SignInput sign = gameObject.GetComponentInChildren <uGUI_SignInput>(true); if (sign.AliveOrNull() != null) { sign.text = metadata.Text; sign.colorIndex = metadata.ColorIndex; sign.elementsState = metadata.Elements; sign.scaleIndex = metadata.ScaleIndex; sign.SetBackground(metadata.Background); } else { Log.Error($"SignMetaData Processing failed for {gameObject.name}({gameObject.transform.position}). No sign component found on object."); } }
private static void Postfix(uGUI_SignInput __instance) { /* * try * { * GameObject DevSmalllocker = GameObject.Find("/SmallLocker"); * Mod.PrintObject(DevSmalllocker, "DevSmalllocker"); * } * catch * { * QModManager.Utility.Logger.Log(QModManager.Utility.Logger.Level.Warn, "Smallocker DEV 01"); * } * * try * { * foreach (GameObject go in Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[]) * { * Mod.PrintObject(go, "AllObjectFinder"); * } * } * catch * { * QModManager.Utility.Logger.Log(QModManager.Utility.Logger.Level.Warn, "Smallocker DEV 02"); * } * * Mod.PrintObject(__instance.gameObject,"asdf"); */ // /* if (IsOnSmallLocker(__instance)) { AddColors(__instance); PatchSmallLocker(__instance); } else if (IsOnSign(__instance)) { AddColors(__instance); PatchSign(__instance); } // */ }
private static void PatchSmallLocker(uGUI_SignInput __instance) { __instance.inputField.lineType = InputField.LineType.MultiLineNewline; __instance.inputField.characterLimit = Mod.config.SmallLockerTextLimit; var rt = __instance.inputField.transform as RectTransform; RectTransformExtensions.SetSize(rt, rt.rect.width, TextFieldHeight); GameObject.Destroy(__instance.inputField.textComponent.GetComponent <ContentSizeFitter>()); rt = __instance.inputField.textComponent.transform as RectTransform; RectTransformExtensions.SetSize(rt, rt.rect.width, TextFieldHeight); __instance.inputField.textComponent.alignment = TextAnchor.MiddleCenter; if (Mod.config.ColorPickerOnLockers) { var currentButton = __instance.transform.GetChild(1).GetComponent <Button>(); var height = Mod.config.ExtraColorsOnLockers ? 1200 : 210; AddColorPickerSystem(__instance, currentButton, "LOCKER", -20, height); } }
private static bool IsOnSign(uGUI_SignInput __instance) { var root = __instance.gameObject.GetComponentInParent <Constructable>(); return(root.gameObject.name.Contains("Sign")); }
public static void Postfix(uGUI_SignInput __instance) { NitroxServiceLocator.LocateService <Signs>().Changed(__instance); }
private static void AddColors(uGUI_SignInput __instance) { var originalColorCount = __instance.colors.Length; if (originalColorCount == 7 && !Mod.config.ExtraColorsOnLockers) { return; } if (originalColorCount == 8 && !Mod.config.ExtraColorsOnSigns) { return; } var newColors = new Color[] { rgb(205, 92, 92), rgb(240, 128, 128), rgb(250, 128, 114), rgb(233, 150, 122), rgb(255, 160, 122), rgb(220, 20, 60), rgb(255, 0, 0), rgb(178, 34, 34), rgb(139, 0, 0), rgb(255, 192, 203), rgb(255, 182, 193), rgb(255, 105, 180), rgb(255, 20, 147), rgb(199, 21, 133), rgb(219, 112, 147), rgb(255, 160, 122), rgb(255, 127, 80), rgb(255, 99, 71), rgb(255, 69, 0), rgb(255, 140, 0), rgb(255, 165, 0), rgb(255, 215, 0), rgb(255, 255, 0), rgb(255, 255, 224), rgb(255, 250, 205), rgb(250, 250, 210), rgb(255, 239, 213), rgb(255, 228, 181), rgb(255, 218, 185), rgb(238, 232, 170), rgb(240, 230, 140), rgb(189, 183, 107), rgb(230, 230, 250), rgb(216, 191, 216), rgb(221, 160, 221), rgb(238, 130, 238), rgb(218, 112, 214), rgb(255, 0, 255), rgb(255, 0, 255), rgb(186, 85, 211), rgb(147, 112, 219), rgb(102, 51, 153), rgb(138, 43, 226), rgb(148, 0, 211), rgb(153, 50, 204), rgb(139, 0, 139), rgb(128, 0, 128), rgb(75, 0, 130), rgb(106, 90, 205), rgb(72, 61, 139), rgb(123, 104, 238), rgb(173, 255, 47), rgb(127, 255, 0), rgb(124, 252, 0), rgb(0, 255, 0), rgb(50, 205, 50), rgb(152, 251, 152), rgb(144, 238, 144), rgb(0, 250, 154), rgb(0, 255, 127), rgb(60, 179, 113), rgb(46, 139, 87), rgb(34, 139, 34), rgb(0, 128, 0), rgb(0, 100, 0), rgb(154, 205, 50), rgb(107, 142, 35), rgb(128, 128, 0), rgb(85, 107, 47), rgb(102, 205, 170), rgb(143, 188, 139), rgb(32, 178, 170), rgb(0, 139, 139), rgb(0, 128, 128), rgb(0, 255, 255), rgb(0, 255, 255), rgb(224, 255, 255), rgb(175, 238, 238), rgb(127, 255, 212), rgb(64, 224, 208), rgb(72, 209, 204), rgb(0, 206, 209), rgb(95, 158, 160), rgb(70, 130, 180), rgb(176, 196, 222), rgb(176, 224, 230), rgb(173, 216, 230), rgb(135, 206, 235), rgb(135, 206, 250), rgb(0, 191, 255), rgb(30, 144, 255), rgb(100, 149, 237), rgb(123, 104, 238), rgb(65, 105, 225), rgb(0, 0, 255), rgb(0, 0, 205), rgb(0, 0, 139), rgb(0, 0, 128), rgb(25, 25, 112), rgb(255, 248, 220), rgb(255, 235, 205), rgb(255, 228, 196), rgb(255, 222, 173), rgb(245, 222, 179), rgb(222, 184, 135), rgb(210, 180, 140), rgb(188, 143, 143), rgb(244, 164, 96), rgb(218, 165, 32), rgb(184, 134, 11), rgb(205, 133, 63), rgb(210, 105, 30), rgb(139, 69, 19), rgb(160, 82, 45), rgb(165, 42, 42), rgb(128, 0, 0), rgb(255, 255, 255), rgb(255, 250, 250), rgb(240, 255, 240), rgb(192, 192, 192), rgb(169, 169, 169), rgb(128, 128, 128), rgb(105, 105, 105), rgb(119, 136, 153), rgb(112, 128, 144) }; if (originalColorCount == 7) { newColors = newColors.Add(rgb(47, 79, 79)).ToArray(); } __instance.colors = __instance.colors.Concat(newColors).ToArray(); }
static void uGUISignInput_OnSelect_Prefix(uGUI_SignInput __instance) { prevLabel = __instance.text; }
private static GameObject AddColorPicker(uGUI_SignInput __instance, string label, int xOffset, int pickerHeight) { var picker = new GameObject("ColorPicker", typeof(RectTransform)); picker.SetActive(false); var rt = picker.transform as RectTransform; RectTransformExtensions.SetParams(rt, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), __instance.transform); RectTransformExtensions.SetSize(rt, 430, pickerHeight); rt.anchoredPosition += new Vector2(xOffset, 0); var image = picker.gameObject.AddComponent <Image>(); image.color = new Color(0, 0, 0, 1f); var layout = picker.gameObject.AddComponent <GridLayoutGroup>(); layout.cellSize = new Vector2(60, 60); layout.padding = new RectOffset(20, 20, 130, 20); layout.spacing = new Vector2(-5, -5); var text = new GameObject("ExampleText", typeof(RectTransform)).AddComponent <Text>(); text.text = label; text.font = __instance.inputField.textComponent.font; text.fontSize = __instance.inputField.textComponent.fontSize + 12; text.fontStyle = __instance.inputField.textComponent.fontStyle; text.color = __instance.inputField.textComponent.color; text.alignment = TextAnchor.MiddleCenter; var l = text.gameObject.AddComponent <LayoutElement>(); l.ignoreLayout = true; RectTransformExtensions.SetParams(text.rectTransform, new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), picker.transform); RectTransformExtensions.SetSize(text.rectTransform, 430, 130); text.rectTransform.anchoredPosition = new Vector2(0, 0); for (int i = 0; i < __instance.colors.Length; ++i) { var color = __instance.colors[i]; var colorButton = new GameObject("ColorPickerButton", typeof(RectTransform)); colorButton.gameObject.SetActive(true); rt = colorButton.transform as RectTransform; RectTransformExtensions.SetParams(rt, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), picker.transform); image = colorButton.AddComponent <Image>(); image.color = color; image.sprite = buttonPrefab.GetComponentInChildren <Image>().sprite; var le = colorButton.AddComponent <LayoutElement>(); le.minWidth = le.minHeight = 60; var button = colorButton.AddComponent <Button>(); button.transition = buttonPrefab.transition; button.colors = buttonPrefab.colors; var instance = __instance; var colorIndex = i; button.onClick.AddListener(() => { var old = instance.colorIndex; instance.colorIndex = colorIndex; }); } return(picker); }