예제 #1
0
        public PlayerListTab(string uniqueName, Vector2i size, IResourceCache resourceCache)
            : base(uniqueName, size, resourceCache)
        {
            DrawBorder = false;

            _scPlayerList          = new ScrollableContainer("scplayerlist", new Vector2i(784, 346), resourceCache);
            _scPlayerList.Position = new Vector2i(5, 10);
            components.Add(_scPlayerList);
        }
예제 #2
0
        public PlayerListTab(Vector2i size)
            : base(size)
        {
            //PlayerList = new ScrollableContainer(new Vector2i(784, 346));
            //PlayerList.Position = new Vector2i(5, 10);
            //Components.Add(PlayerList);

            PlayerList = new ListPanel();
            Container.AddControl(PlayerList);
        }
예제 #3
0
        /// <summary>
        ///     Handles MouseMove event. Sent to all visible Components.
        /// </summary>
        public virtual void MouseMove(MouseMoveEventArgs e)
        {
            MousePos = new Vector2i(e.X, e.Y);

            if (_console.Visible)
            {
                _console.MouseMove(e);
            }

            foreach (var current in _components)
            {
                current.MouseMove(e);
            }
        }
예제 #4
0
        public PropEditWindow(Vector2i size, IResourceCache resourceCache, Object obj)
            : base("Object Properties : " + obj, size)
        {
            Position = new Vector2i((int)(CluwneLib.CurrentRenderTarget.Size.X / 2f) - (int)(ClientArea.Width / 2f),
                                    (int)(CluwneLib.CurrentRenderTarget.Size.Y / 2f) - (int)(ClientArea.Height / 2f));

            search                    = new Textbox(150);
            search.Position           = new Vector2i(5, 5);
            search.OnSubmit          += search_OnSubmit;
            search.ClearOnSubmit      = true;
            search.ClearFocusOnSubmit = false;
            Components.Add(search);

            assigned = obj;
            BuildPropList();

            Update(0);
        }
예제 #5
0
        public TileSpawnPanel(Vector2i size, IResourceCache resourceCache, IPlacementManager placementManager)
            : base("Tile Spawn Panel", size, resourceCache)
        {
            _placementManager = placementManager;

            _tileList = new ScrollableContainer("tilespawnlist", new Vector2i(200, 400), _resourceCache)
            {
                Position = new Vector2i(5, 5)
            };
            components.Add(_tileList);

            var searchLabel = new Label("Tile Search:", "CALIBRI", _resourceCache)
            {
                Position = new Vector2i(210, 0)
            };

            components.Add(searchLabel);

            _tileSearchTextbox = new Textbox(125, _resourceCache)
            {
                Position = new Vector2i(210, 20)
            };
            _tileSearchTextbox.OnSubmit += tileSearchTextbox_OnSubmit;
            components.Add(_tileSearchTextbox);

            _clearLabel = new Label("[Clear Filter]", "CALIBRI", _resourceCache)
            {
                DrawBackground = true,
                DrawBorder     = true,
                Position       = new Vector2i(210, 55)
            };

            _clearLabel.Clicked        += ClearLabelClicked;
            _clearLabel.BackgroundColor = Color4.Gray;
            components.Add(_clearLabel);

            BuildTileList();

            Position = new Vector2i((int)(CluwneLib.CurrentRenderTarget.Size.X / 2f) - (int)(ClientArea.Width / 2f),
                                    (int)(CluwneLib.CurrentRenderTarget.Size.Y / 2f) - (int)(ClientArea.Height / 2f));
            _placementManager.PlacementCanceled += PlacementManagerPlacementCanceled;
        }
예제 #6
0
        //The game states have to feed the UI Input!!! This is to allow more flexibility.
        //Maybe this should be handled in the main methods for input. But then the state wouldnt have power over
        //this and things like the chat might get difficult.
        //Other Notes: When a component returns true to an input event the loop stops and so only that control recieves the input.
        //             That way we don't have all Components reacting to one event.

        /// <summary>
        ///     Handles MouseDown event. Returns true if a component accepted and handled the event.
        /// </summary>
        public virtual bool MouseDown(MouseButtonEventArgs e)
        {
            if (_console.Visible && _console.MouseDown(e))
            {
                return(true);
            }

            if (moveMode)
            {
                foreach (var comp in _components)
                {
                    if (comp.ClientArea.Translated(comp.Position).Contains(e.X, e.Y))
                    {
                        movingComp = comp;
                        dragOffset = new Vector2i(e.X, e.Y) -
                                     new Vector2i(comp.ClientArea.Left, comp.ClientArea.Top);
                        break;
                    }
                }
                return(true);
            }

            return(_components.Any(current => current.MouseDown(e)));
        }
예제 #7
0
 public virtual bool Update(Vector2i mouseScreen, IMapManager currentMap) //Return valid position?
 {
     return(false);
 }
예제 #8
0
        public EntitySpawnPanel(Vector2i size, IResourceCache resourceCache, IPlacementManager placementManager)
            : base("Entity Spawn Panel", size, resourceCache)
        {
            _placementManager = placementManager;

            _entityList = new ScrollableContainer("entspawnlist", new Vector2i(200, 400), _resourceCache)
            {
                Position = new Vector2i(5, 5)
            };
            components.Add(_entityList);

            var searchLabel = new Label("Entity Search:", "CALIBRI", _resourceCache)
            {
                Position = new Vector2i(210, 0)
            };

            components.Add(searchLabel);

            _entSearchTextbox = new Textbox(125, _resourceCache)
            {
                Position = new Vector2i(210, 20)
            };
            _entSearchTextbox.OnSubmit += entSearchTextbox_OnSubmit;
            components.Add(_entSearchTextbox);

            _clearLabel = new Label("[Clear Filter]", "CALIBRI", _resourceCache)
            {
                DrawBackground = true,
                DrawBorder     = true,
                Position       = new Vector2i(210, 55)
            };

            _overLabel = new Label("Override Placement:", "CALIBRI", _resourceCache)
            {
                Position = _clearLabel.Position + new Vector2i(0, _clearLabel.ClientArea.Height + 15)
            };

            components.Add(_overLabel);

            var initOpts = new List <string>();

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

            _lstOverride = new Listbox(140, 125, resourceCache, initOpts);
            _lstOverride.SelectItem("PlaceFree");
            _lstOverride.ItemSelected += _lstOverride_ItemSelected;
            _lstOverride.Position      = _overLabel.Position + new Vector2i(0, _overLabel.ClientArea.Height);
            components.Add(_lstOverride);

            _clearLabel.Clicked        += ClearLabelClicked;
            _clearLabel.BackgroundColor = Color4.Gray;
            components.Add(_clearLabel);

            _eraserButton = new ImageButton
            {
                ImageNormal = "erasericon",
                Position    =
                    new Vector2i(_clearLabel.Position.X + _clearLabel.ClientArea.Width + 5,
                                 _clearLabel.Position.Y)
            };

            //eraserButton.Position = new Vector2i(clearLabel.ClientArea.Right + 5, clearLabel.ClientArea.Top); Clientarea not updating properly. FIX THIS
            _eraserButton.Clicked += EraserButtonClicked;
            components.Add(_eraserButton);

            BuildEntityList();

            Position = new Vector2i((int)(CluwneLib.CurrentRenderTarget.Size.X / 2f) - (int)(ClientArea.Width / 2f),
                                    (int)(CluwneLib.CurrentRenderTarget.Size.Y / 2f) - (int)(ClientArea.Height / 2f));
            _placementManager.PlacementCanceled += PlacementManagerPlacementCanceled;
        }
예제 #9
0
 public TabContainer(string uniqueName, Vector2i size, IResourceCache resourceCache)
     : base(uniqueName, size, resourceCache)
 {
     DrawBorder = false;
 }