using System; using System.Collections.Generic; using Robust.Client.GameObjects; using Robust.Client.Interfaces.Graphics; using Robust.Client.Interfaces.Placement; using Robust.Client.Interfaces.ResourceManagement; using Robust.Client.UserInterface.Controls; using Robust.Shared.Enums; using Robust.Shared.GameObjects; using Robust.Shared.Maths; using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Robust.Client.UserInterface.CustomControls { internal class EntitySpawnWindow : SS14Window { protected override ResourcePath ScenePath => new ResourcePath("/Scenes/Placement/EntitySpawnPanel.tscn"); private readonly IPlacementManager placementManager; private readonly IPrototypeManager prototypeManager; private readonly IResourceCache resourceCache; private Control HSplitContainer; private Control PrototypeList; private LineEdit SearchBar; private OptionButton OverrideMenu; private Button ClearButton; private Button EraseButton; protected override Vector2 ContentsMinimumSize => HSplitContainer?.CombinedMinimumSize ?? Vector2.Zero; private static readonly string[] initOpts = new string[] { "Default", "PlaceFree", "PlaceNearby", "SnapgridCenter", "SnapgridBorder", "AlignSimilar", "AlignTileAny", "AlignTileEmpty", "AlignTileNonDense", "AlignTileDense", "AlignWall", }; private const int TARGET_ICON_HEIGHT = 32; private EntitySpawnButton SelectedButton; public EntitySpawnWindow(IDisplayManager displayManager, IPlacementManager placementManager, IPrototypeManager prototypeManager, IResourceCache resourceCache) : base(displayManager) { this.placementManager = placementManager; this.prototypeManager = prototypeManager; this.resourceCache = resourceCache; PerformLayout(); } protected override void Initialize() { base.Initialize(); // Get all the controls. HSplitContainer = Contents.GetChild("HSplitContainer"); PrototypeList = HSplitContainer.GetChild("PrototypeListScrollContainer").GetChild("PrototypeList"); var options = HSplitContainer.GetChild("Options"); SearchBar = options.GetChild("SearchBar"); SearchBar.OnTextChanged += OnSearchBarTextChanged; OverrideMenu = options.GetChild("OverrideMenu"); OverrideMenu.OnItemSelected += OnOverrideMenuItemSelected; for (var i = 0; i < initOpts.Length; i++) { OverrideMenu.AddItem(initOpts[i], i); } var buttons = options.GetChild("Buttons!"); ClearButton = buttons.GetChild