public override void OnLoadData() { byte[] bytes = serializableDataManager.LoadData(PropPainterDataContainer.DataId); if (bytes != null) { using (var stream = new MemoryStream(bytes)) { _data = DataSerializer.Deserialize <PropPainterDataContainer>(stream, DataSerializer.Mode.Memory); } Db.l("Data loaded (Size in bytes: { " + bytes.Length + "})"); } else { _data = new PropPainterDataContainer(); Db.w("Data created"); } }
private static void Postfix() { List <ushort> t = PropPainterManager.instance.ExtractPropsFromMoveItSelection(); for (int i = 0; i < t.Count; i++) { Db.w((i + 1) + ": " + t[i]); } Color?r = PropPainterManager.instance.ParseAggregateColor(t); Color trueColor = new Color32(255, 255, 255, 255); if (r != null) { trueColor = (Color)r; } PropPainterInstallationPatch.doNotUpdateColors = true; PropPainterManager.instance.colorField.selectedColor = trueColor; PropPainterManager.instance.propPainterButton.color = trueColor; }
// Updated code thanks to TPB- @TODO implement! private static void CreateUI(UIComponent parent, string name) { UIColorField field = UITemplateManager.Get <UIPanel>("LineTemplate").Find <UIColorField>("LineColor"); field = UnityEngine.Object.Instantiate <UIColorField>(field); field.isVisible = false; field.name = "PropPickerColorField"; UIColorPicker picker = UnityEngine.Object.Instantiate <UIColorPicker>(field.colorPicker); picker.eventColorUpdated += ChangeSelectionColors; picker.color = Color.white; picker.component.color = Color.white; picker.name = name; UIPanel pickerPanel = picker.component as UIPanel; pickerPanel.backgroundSprite = "InfoPanelBack"; pickerPanel.isVisible = false; picker.component.size = new Vector2(254f, 226f); // ?/ parent.AttachUIComponent(picker.gameObject); pickerPanel.absolutePosition = UIToolOptionPanel.instance.m_viewOptions.absolutePosition - new Vector3(329, 147); Db.l("Prop Picker color picker instantiated"); FieldInfo f = typeof(UIToolOptionPanel).GetField("m_alignTools", BindingFlags.Instance | BindingFlags.NonPublic); UIButton AlignTools = f.GetValue(UIToolOptionPanel.instance) as UIButton; UIPanel AlignToolsPanel = UIToolOptionPanel.instance.m_alignToolsPanel; FieldInfo fa = typeof(UIToolOptionPanel).GetField("m_single", BindingFlags.Instance | BindingFlags.NonPublic); UIButton Single = fa.GetValue(UIToolOptionPanel.instance) as UIButton; FieldInfo fb = typeof(UIToolOptionPanel).GetField("m_marquee", BindingFlags.Instance | BindingFlags.NonPublic); UIButton Marquee = fb.GetValue(UIToolOptionPanel.instance) as UIButton; Single.zOrder = 7; Marquee.zOrder = 7; UIToolOptionPanel.instance.m_filtersPanelList.height = 240f; // @TODO - Make this modular, please! I need to put more buttons here later and I need to make a single singleton manager for all of my mods. UIPanel extraToolBackground = AlignToolsPanel.AddUIComponent <UIPanel>(); extraToolBackground.size = new Vector2(26, 70); extraToolBackground.clipChildren = true; extraToolBackground.relativePosition = new Vector3(5, -37); extraToolBackground.backgroundSprite = "InfoPanelBack"; extraToolBackground.name = "ElektrixModsMenu"; extraToolBackground.zOrder = 0; AlignTools.tooltip = "More Tools"; UIToolOptionPanel.instance.clipChildren = false; UIComponent[] t = UIToolOptionPanel.instance.GetComponentsInChildren <UIPanel>(); for (int i = 0; i < t.Length; i++) { t[i].clipChildren = false; } UIMultiStateButton propPickerButton = AlignToolsPanel.AddUIComponent <UIMultiStateButton>(); propPickerButton.name = "PropPickerButton"; propPickerButton.tooltip = "Prop Painter"; propPickerButton.spritePadding = new RectOffset(2, 2, 2, 2); propPickerButton.playAudioEvents = true; propPickerButton.relativePosition = new Vector3(0, -45); var GetIconsAtlas = typeof(UIToolOptionPanel).GetMethod("GetIconsAtlas", BindingFlags.Instance | BindingFlags.NonPublic); propPickerButton.atlas = GetIconsAtlas.Invoke(UIToolOptionPanel.instance, new object[] { }) as UITextureAtlas; propPickerButton.backgroundSprites.AddState(); propPickerButton.foregroundSprites.AddState(); propPickerButton.backgroundSprites[0].normal = "OptionBase"; propPickerButton.backgroundSprites[0].focused = "OptionBase"; propPickerButton.backgroundSprites[0].hovered = "OptionBaseHovered"; propPickerButton.backgroundSprites[0].pressed = "OptionBasePressed"; propPickerButton.backgroundSprites[0].disabled = "OptionBaseDisabled"; propPickerButton.foregroundSprites[0].normal = "EyeDropper"; propPickerButton.backgroundSprites[1].normal = "OptionBaseFocused"; propPickerButton.backgroundSprites[1].focused = "OptionBaseFocused"; propPickerButton.backgroundSprites[1].hovered = "OptionBaseHovered"; propPickerButton.backgroundSprites[1].pressed = "OptionBasePressed"; propPickerButton.backgroundSprites[1].disabled = "OptionBaseDisabled"; propPickerButton.foregroundSprites[1].normal = "EyeDropper"; propPickerButton.size = new Vector2(36, 36); propPickerButton.activeStateIndex = 0; propPickerButton.eventClicked += (component, eventParam) => { Db.l("Button state " + propPickerButton.activeStateIndex); pickerPanel.isVisible = propPickerButton.activeStateIndex == 1; UIToolOptionPanel.instance.m_filtersPanelList.height = 240f; Db.w("Tried to make color picker visible/invisible"); }; Db.l("Prop Picker button instantiated"); PropPainterManager.instance.colorField = field; PropPainterManager.instance.colorPicker = picker; PropPainterManager.instance.propPainterButton = propPickerButton; PropPainterManager.instance.colorPanel = pickerPanel; }