Example #1
0
        public override void Initialize()
        {
            base.Initialize();
            new PositionLayout(this, new UniScalar(1.0f, -50), 40, HorizontalAlignment.Center, VerticalAlignment.Top)
                .Create(_name = new Label(Context, "province_name", new UniRectangle(), ""));
            IconButton closeButton;
            new PositionLayout(this, 20, 20, HorizontalAlignment.Right, VerticalAlignment.Top, new Padding(3))
                .Create(closeButton = new IconButton(Context, "close_button"));

            new PositionLayout(this, 150, 20, HorizontalAlignment.Center, VerticalAlignment.Bottom, new Padding(30))
                .Create(_buildButton = new Button(Context, "build_button", new UniRectangle(), "Build"));
            _buildButton.Clicked +=
                (b) =>
                    Context.RegisterCommand(
                        new NewConstructionCommand(BuildingTypes.AvailableFor(_settlement).First(), _settlement));

            _resourceScrollableContainer =
                new ScrollableContainer<ResourceScrollableItem, Resource>(Context, "settlements", 3,
                    c => new ResourceScrollableItem(c));
            new PositionLayout(this, _resourceScrollableContainer.Size.X, _resourceScrollableContainer.Size.Y,
                               HorizontalAlignment.Center, VerticalAlignment.Middle)
                              .Create(_resourceScrollableContainer);

            closeButton.Clicked += () => Visible = false;
        }
Example #2
0
        public override void Initialize()
        {
            base.Initialize();

            TabContainer container   = Register(new TabContainer(Context, "province_tabs", new UniRectangle(0, 150, 1.0f, new UniScalar(1, -150))));
            Tab          overiewTab  = container.RegisterTab(new Tab(Context, "province_overview_tab", "Overview"));
            Tab          economyTab  = container.RegisterTab(new Tab(Context, "province_economy_tab", "Economy"));
            Tab          politicsTab = container.RegisterTab(new Tab(Context, "province_politics_tab", "Politics"));

            container.SetOffset(256 - container.TabTitleSpacing);

            new PositionLayout(this, 250, 150 + container.TabHeight - 6, HorizontalAlignment.Left, VerticalAlignment.Top, new Padding(3))
            .Create(_provinceMap = new ProvinceMap(Context, ShowProvinceFromMap))
            .Right(40, VerticalAlignment.Top, new Padding(3))
            .Create(_provinceName = new Label(Context, "province_name"));

            _settlementScrollableContainer =
                new ScrollableContainer <SettlementScrollableItem, Settlement>(Context, "settlements", 4,
                                                                               c => new SettlementScrollableItem(c, _settlementDetailPanel));
            new PositionLayout(overiewTab, _settlementScrollableContainer.Size.X, _settlementScrollableContainer.Size.Y,
                               HorizontalAlignment.Center, VerticalAlignment.Bottom)
            .Create(_settlementScrollableContainer);

            new PositionLayout(this, 20, 20, HorizontalAlignment.Right, VerticalAlignment.Top, new Padding(3))
            .Create(new IconButton(Context, "close_button", () => Visible = false));
        }
Example #3
0
        public void Startup()
        {
            UserInterfaceManager.DisposeAllComponents();

            NetworkManager.MessageArrived += NetworkManagerMessageArrived;

            _lobbyChat = new Chatbox(ResourceManager, UserInterfaceManager, KeyBindingManager);
            _lobbyChat.TextSubmitted += LobbyChatTextSubmitted;

            _lobbyChat.Update(0);

            UserInterfaceManager.AddComponent(_lobbyChat);

            _lobbyText = new TextSprite("lobbyText", "", ResourceManager.GetFont("CALIBRI"))
            {
                Color        = Color.Black,
                ShadowColor  = Color.DimGray,
                Shadowed     = true,
                ShadowOffset = new Vector2D(1, 1)
            };

            NetOutgoingMessage message = NetworkManager.CreateMessage();

            message.Write((byte)NetMessage.WelcomeMessage);  //Request Welcome msg.
            NetworkManager.SendMessage(message, NetDeliveryMethod.ReliableOrdered);

            NetworkManager.SendClientName(ConfigurationManager.GetPlayerName()); //Send name.

            NetOutgoingMessage playerListMsg = NetworkManager.CreateMessage();

            playerListMsg.Write((byte)NetMessage.PlayerList);  //Request Playerlist.
            NetworkManager.SendMessage(playerListMsg, NetDeliveryMethod.ReliableOrdered);

            _playerListTime = DateTime.Now.AddSeconds(PlayerListRefreshDelaySec);

            NetOutgoingMessage jobListMsg = NetworkManager.CreateMessage();

            jobListMsg.Write((byte)NetMessage.JobList);  //Request Joblist.
            NetworkManager.SendMessage(jobListMsg, NetDeliveryMethod.ReliableOrdered);

            var joinButton = new Button("Join Game", ResourceManager)
            {
                mouseOverColor = Color.LightSteelBlue
            };

            joinButton.Position = new Point(605 - joinButton.ClientArea.Width - 5,
                                            200 - joinButton.ClientArea.Height - 5);
            joinButton.Clicked += JoinButtonClicked;

            UserInterfaceManager.AddComponent(joinButton);

            _jobButtonContainer = new ScrollableContainer("LobbyJobCont", new Size(375, 400), ResourceManager)
            {
                Position = new Point(630, 10)
            };

            UserInterfaceManager.AddComponent(_jobButtonContainer);

            Gorgon.CurrentRenderTarget.Clear();
        }
Example #4
0
        public override void Initialize()
        {
            base.Initialize();

            TabContainer container = Register(new TabContainer(Context, "province_tabs", new UniRectangle(0,150,1.0f, new UniScalar(1,-150))));
            Tab overiewTab = container.RegisterTab(new Tab(Context, "province_overview_tab", "Overview"));
            Tab economyTab = container.RegisterTab(new Tab(Context, "province_economy_tab", "Economy"));
            Tab politicsTab = container.RegisterTab(new Tab(Context, "province_politics_tab", "Politics"));
            container.SetOffset(256-container.TabTitleSpacing);

            new PositionLayout(this, 250, 150 + container.TabHeight - 6, HorizontalAlignment.Left, VerticalAlignment.Top, new Padding(3))
                .Create(_provinceMap = new ProvinceMap(Context, ShowProvinceFromMap))
                .Right(40, VerticalAlignment.Top, new Padding(3))
                .Create(_provinceName = new Label(Context, "province_name"));

            _settlementScrollableContainer =
                new ScrollableContainer<SettlementScrollableItem, Settlement>(Context, "settlements", 4,
                    c => new SettlementScrollableItem(c, _settlementDetailPanel));
            new PositionLayout(overiewTab, _settlementScrollableContainer.Size.X, _settlementScrollableContainer.Size.Y,
                               HorizontalAlignment.Center, VerticalAlignment.Bottom)
                              .Create(_settlementScrollableContainer);

            new PositionLayout(this, 20, 20, HorizontalAlignment.Right, VerticalAlignment.Top, new Padding(3))
                .Create(new IconButton(Context, "close_button", () => Visible = false));
        }
Example #5
0
        public TileSpawnWindow(Vector2i size)
            : base("Tile Spawn Panel", size)
        {
            _placementManager = IoCManager.Resolve <IPlacementManager>();

            _tileList = new ScrollableContainer(new Vector2i(200, 400));
            _tileList.LocalPosition   = new Vector2i(5, 5);
            _tileList.BorderColor     = Color4.Black;
            _tileList.BackgroundColor = Color4.White;
            Container.AddControl(_tileList);

            var searchLabel = new Label("Tile Search:", "CALIBRI");

            searchLabel.LocalPosition = new Vector2i(210, 0);
            Container.AddControl(searchLabel);

            var tileSearchTextbox = new Textbox(125);

            tileSearchTextbox.LocalPosition = new Vector2i(210, 20);
            tileSearchTextbox.OnSubmit     += tileSearchTextbox_OnSubmit;
            Container.AddControl(tileSearchTextbox);

            //TODO: This needs to be a button.
            _clearLabel = new Label("[Clear Filter]", "CALIBRI");
            _clearLabel.BackgroundColor = Color4.Gray;
            _clearLabel.DrawBackground  = true;
            _clearLabel.DrawBorder      = true;
            _clearLabel.LocalPosition   = new Vector2i(210, 55);
            _clearLabel.Clicked        += ClearLabelClicked;
            Container.AddControl(_clearLabel);

            BuildTileList();

            _placementManager.PlacementCanceled += PlacementManagerPlacementCanceled;
        }
Example #6
0
 public ScreenshotDrawer() : base()
 {
     _column1 = GUILayout.Width(128);
     _history = new ScreenshotHistory();
     _history.Load();
     _scrolls = new ScrollableContainer();
 }
Example #7
0
        public override void Initialize()
        {
            base.Initialize();
            new PositionLayout(this, new UniScalar(1.0f, -50), 40, HorizontalAlignment.Center, VerticalAlignment.Top)
            .Create(_name = new Label(Context, "province_name", new UniRectangle(), ""));
            IconButton closeButton;

            new PositionLayout(this, 20, 20, HorizontalAlignment.Right, VerticalAlignment.Top, new Padding(3))
            .Create(closeButton = new IconButton(Context, "close_button"));

            new PositionLayout(this, 150, 20, HorizontalAlignment.Center, VerticalAlignment.Bottom, new Padding(30))
            .Create(_buildButton  = new Button(Context, "build_button", new UniRectangle(), "Build"));
            _buildButton.Clicked +=
                (b) =>
                Context.RegisterCommand(
                    new NewConstructionCommand(BuildingTypes.AvailableFor(_settlement).First(), _settlement));

            _resourceScrollableContainer =
                new ScrollableContainer <ResourceScrollableItem, Resource>(Context, "settlements", 3,
                                                                           c => new ResourceScrollableItem(c));
            new PositionLayout(this, _resourceScrollableContainer.Size.X, _resourceScrollableContainer.Size.Y,
                               HorizontalAlignment.Center, VerticalAlignment.Middle)
            .Create(_resourceScrollableContainer);

            closeButton.Clicked += () => Visible = false;
        }
        public ProjectEditorWindow(
            IAssetManager assetManager,
            IProjectManager projectManager)
        {
            _assetManager   = assetManager;
            _projectManager = projectManager;

            Title = "Project";
            Icon  = _assetManager.Get <TextureAsset>("texture.IconFolder");

            _projectListView    = new ListView();
            _projectContentView = new ListView();

            var scrollableProjectContainer = new ScrollableContainer();
            var scrollableContentContainer = new ScrollableContainer();

            scrollableProjectContainer.SetChild(_projectListView);
            scrollableContentContainer.SetChild(_projectContentView);

            var horizontalContainer = new HorizontalSpacedContainer();

            horizontalContainer.AddChild(scrollableProjectContainer, "350");
            horizontalContainer.AddChild(scrollableContentContainer, "*");

            var toolbarContainer = new ToolbarContainer();

            toolbarContainer.SetChild(horizontalContainer);

            SetChild(toolbarContainer);
        }
 public ScreenshotDrawer()
     : base()
 {
     _column1 = GUILayout.Width (128);
     _history = new ScreenshotHistory ();
     _history.Load ();
     _scrolls = new ScrollableContainer ();
 }
 /// <summary>
 /// Checks the components.
 /// </summary>
 protected override void CheckComponents()
 {
     if (_drawer == null)
         _drawer = new SceneEntityDrawer (PANEL_TITLE);
     if (_screenshotDrawer == null)
         _screenshotDrawer = new ScreenshotDrawer ();
     if (_database == null)
         _database = SceneDatabaseProvider.GetDatabase(this);
     if (_scrolls == null)
         _scrolls = new ScrollableContainer (PANEL_TITLE, true);
 }
Example #11
0
        public InventoryViewer(InventoryComponent assignedCompo, IUserInterfaceManager userInterfaceManager,
                               IResourceManager resourceManager)
        {
            _userInterfaceManager = userInterfaceManager;
            _resourceManager      = resourceManager;

            _inventoryContainer = new ScrollableContainer(assignedCompo.Owner.Uid + "InvViewer", new Size(270, 125),
                                                          _resourceManager);
            _inventoryComponent          = assignedCompo;
            _inventoryComponent.Changed += ComponentChanged;
            RebuildInventoryView(_inventoryComponent.MaxSlots, _inventoryComponent.ContainedEntities);
        }
Example #12
0
        public InventoryViewer(InventoryComponent assignedCompo, IUserInterfaceManager userInterfaceManager,
                               IResourceManager resourceManager)
        {
            _userInterfaceManager = userInterfaceManager;
            _resourceManager      = resourceManager;

            _inventoryContainer = new ScrollableContainer(assignedCompo.Owner.Uid + "InvViewer", new Size(270, 125),
                                                          _resourceManager);
            _inventoryComponent                 = assignedCompo;
            _inventoryComponent.Changed        += ComponentChanged;
            _inventoryComponent.UpdateRequired += ComponentUpdateRequired;
            _inventoryComponent.SendRequestListing();
        }
        public ConsoleEditorWindow(
            IAssetManager assetManager,
            IConsole console)
        {
            _console = console;

            Title = "Console";
            Icon  = assetManager.Get <TextureAsset>("texture.IconTerminal");

            var consoleContainer = new ConsoleContainer {
                Console = console as EditorConsole
            };

            _scrollableContainer = new ScrollableContainer();
            _scrollableContainer.SetChild(consoleContainer);

            SetChild(_scrollableContainer);
        }
Example #14
0
        public HierarchyEditorWindow(
            IAssetManager assetManager,
            IProjectManager projectManager)
        {
            _assetManager   = assetManager;
            _projectManager = projectManager;

            Title = "Hierarchy";
            Icon  = _assetManager.Get <TextureAsset>("texture.IconHierarchy");

            _hierarchyTreeView = new TreeView();

            var scrollableHierarchyContainer = new ScrollableContainer();

            scrollableHierarchyContainer.SetChild(_hierarchyTreeView);

            var toolbarContainer = new ToolbarContainer();

            toolbarContainer.SetChild(scrollableHierarchyContainer);

            SetChild(toolbarContainer);
        }
Example #15
0
        private void SetupCodeTab()
        {
            Log.Verbose("Debugger", "Setup debugger code tab...");

            float totalHPadding     = tabContainerPadding.left + tabContainerPadding.right;
            float buttonWidth       = 120;
            float buttonPadding     = 10;
            float buttonExtraMargin = 40;
            float buttonWidthPlace  = buttonWidth + buttonPadding;

            ct_runBtn = new Button("RunBtn", "Run");
            tabPageCode.AttachControl(disposingManager.R(ct_runBtn));
            ct_runBtn.Anchor           = UI.Anchor.Bottom | UI.Anchor.Right;
            ct_runBtn.Width            = buttonWidth;
            ct_runBtn.RelativePosition = new Vector2(tabContainer.Width - (2 * buttonWidthPlace + buttonExtraMargin), tabContainer.Height - (ct_runBtn.Height + tabContainerPadding.bottom));
            ct_runBtn.Click           += ct_runBtn_Click;

            ct_clearBtn = new Button("ClearBtn", "Clear");
            tabPageCode.AttachControl(disposingManager.R(ct_clearBtn));
            ct_clearBtn.Anchor           = UI.Anchor.Bottom | UI.Anchor.Right;
            ct_clearBtn.Width            = buttonWidth;
            ct_clearBtn.RelativePosition = new Vector2(tabContainer.Width - (buttonWidthPlace + buttonExtraMargin), tabContainer.Height - (ct_clearBtn.Height + tabContainerPadding.bottom));
            ct_clearBtn.Click           += ct_clearBtn_Click;

            ct_container = new ScrollableContainer("CodeContainer");
            tabPageCode.AttachContainer(disposingManager.R(ct_container));
            ct_container.Position         = Vector3.zero;
            ct_container.Size             = tabContainer.Size - new Vector2(totalHPadding, ct_runBtn.Height + tabContainerPadding.bottom + 5);
            ct_container.RelativePosition = new Vector3(tabContainerPadding.left, tabContainerPadding.top);

            ct_text = new TextArea("Code");
            ct_container.Panel.AttachControl(disposingManager.R(ct_text));
            ct_text.Anchor           = UI.Anchor.All;
            ct_text.RelativePosition = new Vector3(1, 1);                           // Small offset to prevent scrollbar flickering
            ct_text.Size             = ct_container.Panel.Size - new Vector2(2, 2); // Small offset to prevent scrollbar flickering
        }
        protected virtual void InitTable()
        {
            MainContainer            = Controls.AddChild(new ScrollableContainer("main", Docking.Fill, new SilverPanelWidgetStyle()));
            MainContainer.AutoScroll = true;
            MainContainer.ScrollBars = ScrollBars.Vertical;

            Table = MainContainer.AddChild(new TableLayoutContainer("table"));

            // this should do the same:
            Table.Padding                 = new Padding(12, 6);
            Table.CellPadding             = new SizeF(12, 6);
            Table.CollapsibleColumnsWidth = 420;

            int row = 0;

            /***
             * Table.AddChild (new TextLabel ("lblGender", "Gender"), row, 0, 1, 2);
             * row++;
             * Table.AddChild (new ComboListBox ("Gender"), row, 0, 1, 2).CastTo<ComboListBox>().Do (cbo => {
             *      cbo.Items.Add("Male", 1);
             *      cbo.Items.Add("Female", 2);
             *      cbo.Items.Add("Not sure", 0);
             *      cbo.SelectedIndex = 0;
             * });
             * row++;
             ***/

            Table.AddChild(new TextLabel("lblFirstName", "First Name"), row, 0, 1, 2);
            Table.AddChild(new TextBox("FirstName"), row + 1, 0, 1, 2);

            Table.AddChild(new TextLabel("lblLastName", "Last Name"), row, 2);
            Table.AddChild(new TextBox("LastName"), row + 1, 2);

            row++;
            row++;
            Table.AddChild(new TextLabel("lblCompany", "Company"), row, 0, 1, 3);
            row++;
            Table.AddChild(new TextBox("Company"), row, 0, 1, 3);

            row++;
            Table.AddChild(new TextLabel("lblZip", "Zip"), row, 0);
            Table.AddChild(new TextBox("Zip"), row + 1, 0);

            Table.AddChild(new TextLabel("lblCity", "City"), row, 1);
            Table.AddChild(new TextBox("City"), row + 1, 1);

            Table.AddChild(new TextLabel("lblAddress", "Street Address"), row, 2);
            Table.AddChild(new TextBox("Address"), row + 1, 2);

            row++;
            row++;

            Table.AddChild(new TextLabel("lblPhone", "Phone"), row, 0, 1, 2);
            Table.AddChild(new ButtonTextBox("Phone", (char)FontAwesomeIcons.fa_phone, null, ColorContexts.Success), row + 1, 0, 1, 2);

            Table.AddChild(new TextLabel("lblEmail", "Email"), row, 2);
            Table.AddChild(new ButtonTextBox("Email", (char)FontAwesomeIcons.fa_envelope_o, null, ColorContexts.Success), row + 1, 2);

            row++;
            row++;
            Table.AddChild(new TextLabel("lblWeb", "Web"), row, 0, 1, 3);
            row++;
            Table.AddChild(new ButtonTextBox("Web", (char)FontAwesomeIcons.fa_chain, null, ColorContexts.Default), row, 0, 1, 3);

            LayoutDirtyFlag    = true;
            Table.AfterLayout += (sender, e) => UpdateTableSize();
        }
Example #17
0
        public HumanComboGui(IPlayerManager playerManager, INetworkManager networkManager,
                             IResourceManager resourceManager, IUserInterfaceManager userInterfaceManager)
        {
            _networkManager       = networkManager;
            _playerManager        = playerManager;
            _resourceManager      = resourceManager;
            _userInterfaceManager = userInterfaceManager;

            ComponentClass = GuiComponentType.ComboGui;

            #region Status UI

            _ResBlunt  = new ArmorInfoLabel(DamageType.Bludgeoning, resourceManager);
            _ResBurn   = new ArmorInfoLabel(DamageType.Burn, resourceManager);
            _ResFreeze = new ArmorInfoLabel(DamageType.Freeze, resourceManager);
            _ResPierce = new ArmorInfoLabel(DamageType.Piercing, resourceManager);
            _ResShock  = new ArmorInfoLabel(DamageType.Shock, resourceManager);
            _ResSlash  = new ArmorInfoLabel(DamageType.Slashing, resourceManager);
            _ResTox    = new ArmorInfoLabel(DamageType.Toxin, resourceManager);

            #endregion

            _equipBg = _resourceManager.GetSprite("outline");

            _comboBg = _resourceManager.GetSprite("combo_bg");

            _comboClose = new ImageButton
            {
                ImageNormal = "button_closecombo",
            };

            _tabEquip = new ImageButton
            {
                ImageNormal = "tab_equip",
            };
            _tabEquip.Clicked += TabClicked;

            _tabHealth = new ImageButton
            {
                ImageNormal = "tab_health",
            };
            _tabHealth.Clicked += TabClicked;

            _tabCraft = new ImageButton
            {
                ImageNormal = "tab_craft",
            };
            _tabCraft.Clicked += TabClicked;

            _comboClose.Clicked += ComboCloseClicked;

            //Left Side - head, eyes, outer, hands, feet
            _slotHead          = new EquipmentSlotUi(EquipmentSlot.Head, _playerManager, _resourceManager, _userInterfaceManager);
            _slotHead.Dropped += SlotDropped;

            _slotEyes          = new EquipmentSlotUi(EquipmentSlot.Eyes, _playerManager, _resourceManager, _userInterfaceManager);
            _slotEyes.Dropped += SlotDropped;

            _slotOuter = new EquipmentSlotUi(EquipmentSlot.Outer, _playerManager, _resourceManager,
                                             _userInterfaceManager);
            _slotOuter.Dropped += SlotDropped;

            _slotHands = new EquipmentSlotUi(EquipmentSlot.Hands, _playerManager, _resourceManager,
                                             _userInterfaceManager);
            _slotHands.Dropped += SlotDropped;

            _slotFeet          = new EquipmentSlotUi(EquipmentSlot.Feet, _playerManager, _resourceManager, _userInterfaceManager);
            _slotFeet.Dropped += SlotDropped;

            //Right Side - mask, ears, inner, belt, back
            _slotMask          = new EquipmentSlotUi(EquipmentSlot.Mask, _playerManager, _resourceManager, _userInterfaceManager);
            _slotMask.Dropped += SlotDropped;

            _slotEars          = new EquipmentSlotUi(EquipmentSlot.Ears, _playerManager, _resourceManager, _userInterfaceManager);
            _slotEars.Dropped += SlotDropped;

            _slotInner = new EquipmentSlotUi(EquipmentSlot.Inner, _playerManager, _resourceManager,
                                             _userInterfaceManager);
            _slotInner.Dropped += SlotDropped;

            _slotBelt          = new EquipmentSlotUi(EquipmentSlot.Belt, _playerManager, _resourceManager, _userInterfaceManager);
            _slotBelt.Dropped += SlotDropped;

            _slotBack          = new EquipmentSlotUi(EquipmentSlot.Back, _playerManager, _resourceManager, _userInterfaceManager);
            _slotBack.Dropped += SlotDropped;

            _txtDbg = new TextSprite("comboDlgDbg", "Combo Debug", _resourceManager.GetFont("CALIBRI"));

            _craftSlot1 = new CraftSlotUi(_resourceManager, _userInterfaceManager);
            _craftSlot2 = new CraftSlotUi(_resourceManager, _userInterfaceManager);

            _craftButton = new ImageButton
            {
                ImageNormal = "wrenchbutt"
            };
            _craftButton.Clicked += CraftButtonClicked;

            _craftStatus = new TextSprite("craftText", "Status", _resourceManager.GetFont("CALIBRI"))
            {
                ShadowColor  = Color.DimGray,
                ShadowOffset = new Vector2D(1, 1),
                Shadowed     = true
            };

            _blueprints = new ScrollableContainer("blueprintCont", new Size(210, 100), _resourceManager);
        }
        /// <summary>
        /// Checks the components.
        /// </summary>
        protected override void CheckComponents()
        {
            if (_sceneDrawer == null)
                _sceneDrawer = new SceneEntityDrawer (PANEL_TITLE);
            if (_favSceneDrawer == null)
                _favSceneDrawer = new SceneEntityDrawer (PANEL_TITLE);
            if (_gameplayDrawer == null)
                _gameplayDrawer = new GameplayControlsDrawer ();
            if (_screenshotDrawer == null)
                _screenshotDrawer = new ScreenshotDrawer ();
            if (_historyDrawer == null)
                _historyDrawer = new SceneHistoryDrawer ();

            if (_database == null)
                _database = SceneDatabaseProvider.GetDatabase (this);
            if (_scrolls == null)
                _scrolls = new ScrollableContainer (PANEL_TITLE, true);
            if (_folders == null)
                _folders = new FolderContainer (PANEL_TITLE, true);
        }
Example #19
0
        public EntitySpawnWindow(Vector2i size)
            : base("Entity Spawn Panel", size)
        {
            _placementManager = IoCManager.Resolve <IPlacementManager>();

            _entityList = new ScrollableContainer(new Vector2i(200, 400));
            _entityList.LocalPosition = new Vector2i(5, 5);
            Container.AddControl(_entityList);

            var searchLabel = new Label("Entity Search:", "CALIBRI");

            searchLabel.LocalPosition = new Vector2i(210, 0);
            Container.AddControl(searchLabel);

            var entSearchTextbox = new Textbox(125);

            entSearchTextbox.LocalPosition = new Vector2i(210, 20);
            entSearchTextbox.OnSubmit     += entSearchTextbox_OnSubmit;
            Container.AddControl(entSearchTextbox);

            _clearLabel = new Label("[Clear Filter]", "CALIBRI");
            _clearLabel.DrawBackground  = true;
            _clearLabel.DrawBorder      = true;
            _clearLabel.LocalPosition   = new Vector2i(210, 55);
            _clearLabel.Clicked        += ClearLabelClicked;
            _clearLabel.BackgroundColor = Color.Gray;
            Container.AddControl(_clearLabel);

            var overLabel = new Label("Override Placement:", "CALIBRI");

            overLabel.LocalPosition = new Vector2i(0, 15);
            overLabel.Alignment     = ControlAlignments.Bottom;
            _clearLabel.AddControl(overLabel);

            var initOpts = new List <string>();

            initOpts.AddRange(new[]
            {
                "PlaceFree",
                "PlaceNearby",
                "SnapgridCenter",
                "SnapgridBorder",
                "AlignSimilar",
                "AlignTileAny",
                "AlignTileEmpty",
                "AlignTileNonSolid",
                "AlignTileSolid",
                "AlignWall",
            });

            _lstOverride = new Listbox(140, 125, initOpts);
            _lstOverride.ItemSelected += _lstOverride_ItemSelected;
            _lstOverride.SelectItem("PlaceFree");
            _lstOverride.LocalPosition = new Vector2i(0, 0);
            _lstOverride.Alignment     = ControlAlignments.Bottom;
            overLabel.AddControl(_lstOverride);

            _eraserButton               = new ImageButton();
            _eraserButton.ImageNormal   = "erasericon";
            _eraserButton.LocalPosition = new Vector2i(5, 0);
            _eraserButton.Alignment     = ControlAlignments.Right;
            _clearLabel.AddControl(_eraserButton);
            _eraserButton.Clicked += EraserButtonClicked;

            BuildEntityList();

            _placementManager.PlacementCanceled += PlacementManagerPlacementCanceled;
        }