using Content.Client.UserInterface.Controls; using Content.Shared._White.Event; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.Prototypes; using Robust.Shared.Utility; using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Content.Client._White.Event; #pragma warning disable IDE1006 // i am going to fucking lose it /// /// Hopefully i never have to touch UI ever again. /// Even if xaml thing was working for me, this would only be marginally less of a radioactive dump. /// public sealed class EventItemDispenserConfigBoundUserInterface : BoundUserInterface { [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly IEntityManager _entMan = default!; [Dependency] private readonly ILocalizationManager _loc = default!; static readonly Color Green = new Color(0, 255, 0); static readonly Color Red = new Color(255, 0, 0); static readonly Color Transparent = new Color(255, 255, 255, 69/*haha*/); //EventItemDispenserConfigWindow? window; // Trying to work with robustengine's ui system makes me want to quote AM. DefaultWindow window = default!; EventItemDispenserComponent dispenserComp; public EventItemDispenserConfigBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) { IoCManager.InjectDependencies(this); dispenserComp = _entMan.GetComponent(Owner); } #region man-made horrors beyond your comprehension #region all the controls BoxContainer baseBox = default!; BoxContainer optionBox = default!; BoxContainer buttonBox = default!; BoxContainer copypasteBox = default!; LineEdit DispensingPrototypeLineEdit = default!; bool DispensingPrototypeValid = false; CheckBox AutoDisposeCheckBox = default!; Label AutoDisposeLabel = default!; CheckBox CanManuallyDisposeCheckBox = default!; CheckBox InfiniteCheckBox = default!; LineEdit LimitLineEdit = default!; CheckBox ReplaceDisposedItemsCheckBox = default!; LineEdit DisposedReplacementPrototypeLineEdit = default!; bool DisposedReplacementPrototypeValid = false; CheckBox AutoCleanUpCheckBox = default!; Button copyButton = default!; Button pasteButton = default!; Button confirmButton = default!; //Button cancelButton = new(); // just hit the "x" 4head #endregion #region copypasta stuff static string SavedDispensingPrototype = default!; static bool SavedAutoDispose = default; static bool SavedCanManuallyDispose = default; static bool SavedInfinite = default; static string SavedLimit = default!; static bool SavedReplaceDisposedItems = default; static string SavedDisposedReplacementPrototype = default!; static bool SavedAutoCleanUp = default; static bool saved = false; private void CopySettings(EventArgs whatever) { saved = true; SavedDispensingPrototype = DispensingPrototypeLineEdit.Text; SavedAutoDispose = AutoDisposeCheckBox.Pressed; SavedCanManuallyDispose = CanManuallyDisposeCheckBox.Pressed; SavedInfinite = InfiniteCheckBox.Pressed; SavedLimit = LimitLineEdit.Text; SavedReplaceDisposedItems = ReplaceDisposedItemsCheckBox.Pressed; SavedDisposedReplacementPrototype = DisposedReplacementPrototypeLineEdit.Text; SavedAutoCleanUp = AutoCleanUpCheckBox.Pressed; pasteButton.Disabled = false; } private void PasteSettings(EventArgs whatever) { DebugTools.Assert(saved); DispensingPrototypeLineEdit.Text = SavedDispensingPrototype; AutoDisposeCheckBox.Pressed = SavedAutoDispose; CanManuallyDisposeCheckBox.Pressed = SavedCanManuallyDispose; InfiniteCheckBox.Pressed = SavedInfinite; LimitLineEdit.Text = SavedLimit; ReplaceDisposedItemsCheckBox.Pressed = SavedReplaceDisposedItems; DisposedReplacementPrototypeLineEdit.Text = SavedDisposedReplacementPrototype; AutoCleanUpCheckBox.Pressed = SavedAutoCleanUp; } #endregion private void InitializeControls(DefaultWindow window) // windows forms ahh method { baseBox = this.CreateDisposableControl(); baseBox.Orientation = BoxContainer.LayoutOrientation.Vertical; baseBox.SeparationOverride = 4; baseBox.Margin = new Thickness(4, 0); baseBox.MinWidth = 450; window.Contents.AddChild(baseBox); optionBox = this.CreateDisposableControl(); optionBox.Orientation = BoxContainer.LayoutOrientation.Vertical; baseBox.AddChild(optionBox); buttonBox = this.CreateDisposableControl(); buttonBox.Orientation = BoxContainer.LayoutOrientation.Horizontal; //buttonBox.Align = BoxContainer.AlignMode.End; baseBox.AddChild(buttonBox); copypasteBox = this.CreateDisposableControl(); //copypasteBox.HorizontalAlignment = Control.HAlignment.Left; copypasteBox.HorizontalExpand = true; copyButton = this.CreateDisposableControl