private QuickActionHudSpace() : base(HudMain.Root) { DrawBoundingBox = false; targetGrid = new TerminalGrid(); tempGrid = new TerminalGrid(); targetBuffer = new List <IMySlimBlock>(); Target = new PropertyBlock(); quickActionMenu = new QuickActionMenu(this); boundingBox = new BoundingBoard(); hudNotification = MyAPIGateway.Utilities.CreateNotification("", 1000, MyFontEnum.Red); frameTimer = new Stopwatch(); frameTimer.Start(); RichHudCore.LateMessageEntered += MessageHandler; }
public PropertyWheelMenu(QuickActionMenu parent) : base(null) { Register(parent, true); this.quickActionMenu = parent; wheelBody = new PropertyWheelMenuBody(this) { }; // Selection wheel for block properties propertyWheel = new RadialSelectionBox <PropertyWheelEntryBase, Label>() { Visible = false, BackgroundColor = bodyColor, HighlightColor = highlightColor, SelectionColor = highlightFocusColor, ZOffset = -1, }; propertyWheel.Register(wheelBody, true); // Selection wheel for dupe shortcuts dupeWheel = new RadialSelectionBox <PropertyWheelEntryBase, Label>() { Visible = false, BackgroundColor = bodyColor, HighlightColor = highlightColor, SelectionColor = highlightFocusColor, ZOffset = -1, CollectionContainer = { new PropertyWheelShortcutEntry() { Text = "Back", ShortcutAction = quickActionMenu.StopPropertyDuplication, }, new PropertyWheelShortcutEntry() { Text = "Open List", ShortcutAction = quickActionMenu.OpenDupeList, }, new PropertyWheelShortcutEntry() { Text = "Open List and Select All", ShortcutAction = quickActionMenu.OpenDupeListAndSelectAll, }, new PropertyWheelShortcutEntry() { Text = "Clear Selection", ShortcutAction = quickActionMenu.ClearSelection, }, new PropertyWheelShortcutEntry() { Text = "Copy Selected", ShortcutAction = quickActionMenu.CopySelectedProperties, }, new PropertyWheelShortcutEntry() { Text = "Copy All but Name", ShortcutAction = () => quickActionMenu.CopyAllProperties(false), }, new PropertyWheelShortcutEntry() { Text = "Copy All", ShortcutAction = () => quickActionMenu.CopyAllProperties(true), }, new PropertyWheelShortcutEntry() { Text = "Paste", ShortcutAction = quickActionMenu.PasteCopiedProperties, }, new PropertyWheelShortcutEntry() { Text = "Undo", ShortcutAction = quickActionMenu.UndoPropertyPaste, }, } }; dupeWheel.Register(wheelBody, true); // Shortcuts to be added to the property wheel later shortcutEntries = new List <PropertyWheelShortcutEntry>() { new PropertyWheelShortcutEntry() { Text = "Copy Settings", ShortcutAction = () => { MenuState = QuickActionMenuState.WheelMenuControl; quickActionMenu.StartPropertyDuplication(); }, } }; // I'm using a generic pool because I'm using two types of entry in the same list, but only // one is pooled, and I can't be arsed to do this more neatly. propertyEntryPool = new ObjectPool <object>( () => new PropertyWheelEntry(), x => (x as PropertyWheelEntry).Reset() ); debugText = new Label(this) { Visible = false, BuilderMode = TextBuilderModes.Lined, ParentAlignment = ParentAlignments.Right }; }
public PropertyListMenu(QuickActionMenu parent) : base(parent) { quickActionMenu = parent; header = new LabelBox() { Format = listHeaderFormat, Text = "Build Vision", AutoResize = false, Size = new Vector2(300f, 34f), Color = headerColor, }; listBody = new ScrollBox <PropertyListEntry, PropertyListEntryElement>(true) { MemberMinSize = new Vector2(300f, 0f), SizingMode = HudChainSizingModes.ClampChainOffAxis | HudChainSizingModes.FitChainAlignAxis, Padding = new Vector2(30f, 16f), Color = bodyColor, EnableScrolling = false, UseSmoothScrolling = false, MinVisibleCount = 10, Visible = false, }; listBody.ScrollBar.Padding = new Vector2(12f, 16f); listBody.ScrollBar.Width = 4f; peekBody = new LabelBox() { AutoResize = false, VertCenterText = false, Color = bodyColor, TextPadding = new Vector2(48f, 16f), BuilderMode = TextBuilderModes.Lined, }; var border = new BorderBox(listBody) { DimAlignment = DimAlignments.Both, Color = new Color(58, 68, 77), Thickness = 1f, }; highlightBox = new HighlightBox(listBody.Background) { Padding = new Vector2(16f, 0f) }; footer = new DoubleLabelBox() { AutoResize = false, TextPadding = new Vector2(48f, 0f), Size = new Vector2(300f, 24f), Color = headerColor, }; layout = new HudChain(true, this) { MemberMinSize = new Vector2(300f, 0f), SizingMode = HudChainSizingModes.FitMembersOffAxis | HudChainSizingModes.FitChainBoth, CollectionContainer = { header, { listBody,true }, { peekBody,true }, footer } }; debugText = new Label(layout) { ParentAlignment = ParentAlignments.Right, BuilderMode = TextBuilderModes.Lined }; peekBuilder = new RichText(); entryPool = new ObjectPool <PropertyListEntry>(() => new PropertyListEntry(), x => x.Reset()); notificationTimer = new Stopwatch(); listWrapTimer = new Stopwatch(); }