Пример #1
0
        public override void Draw(SpriteBatch spriteBatch, GameTime gameTime)
        {
            if (SelectedGameObjects.Count > 0)
            {
                foreach (var selectedGameObject in SelectedGameObjects)
                {
                    if (SimulationGame.VisibleArea.Contains(selectedGameObject.Position))
                    {
                        var worldDrawPosition = Rectangle.Empty;

                        if (selectedGameObject is AmbientObject)
                        {
                            var gameObject = (AmbientObject)selectedGameObject;

                            worldDrawPosition = new Rectangle((int)(gameObject.Position.X - gameObject.GetObjectType().SpriteOrigin.X), (int)(gameObject.Position.Y - gameObject.GetObjectType().SpriteOrigin.Y), gameObject.GetObjectType().SpriteBounds.X, gameObject.GetObjectType().SpriteBounds.Y);
                        }
                        else if (selectedGameObject is AmbientHitableObject)
                        {
                            var gameObject = (AmbientHitableObject)selectedGameObject;

                            worldDrawPosition = new Rectangle((int)(gameObject.Position.X - gameObject.GetObjectType().SpriteOrigin.X), (int)(gameObject.Position.Y - gameObject.GetObjectType().SpriteOrigin.Y), gameObject.GetObjectType().SpriteBounds.X, gameObject.GetObjectType().SpriteBounds.Y);
                        }
                        else if (selectedGameObject is LivingEntity)
                        {
                            var gameObject = (LivingEntity)selectedGameObject;

                            worldDrawPosition = new Rectangle((int)(gameObject.Position.X - gameObject.GetObjectType().SpriteOrigin.X), (int)(gameObject.Position.Y - gameObject.GetObjectType().SpriteOrigin.Y), gameObject.GetObjectType().SpriteBounds.X, gameObject.GetObjectType().SpriteBounds.Y);
                        }

                        var uiPosition = SimulationGame.ConvertWorldPositionToUIPosition(worldDrawPosition.X, worldDrawPosition.Y);
                        SimulationGame.PrimitiveDrawer.Rectangle(new Rectangle((int)uiPosition.X, (int)uiPosition.Y, worldDrawPosition.Width, worldDrawPosition.Height), Color.Yellow);
                    }
                }
            }
            else if (SelectedBlockType != null)
            {
                var uiPosition = SimulationGame.ConvertWorldPositionToUIPosition(SelectedBlockPosition.X * WorldGrid.BlockSize.X, SelectedBlockPosition.Y * WorldGrid.BlockSize.Y);

                SimulationGame.PrimitiveDrawer.Rectangle(new Rectangle((int)uiPosition.X, (int)uiPosition.Y, WorldGrid.BlockSize.X, WorldGrid.BlockSize.Y), Color.Blue);
            }
            else if (SelectedWorldLink != null)
            {
                var uiPosition = SimulationGame.ConvertWorldPositionToUIPosition(SelectedWorldLink.FromBlock.X * WorldGrid.BlockSize.X, SelectedWorldLink.FromBlock.Y * WorldGrid.BlockSize.Y);

                SimulationGame.PrimitiveDrawer.Rectangle(new Rectangle((int)uiPosition.X, (int)uiPosition.Y, WorldGrid.BlockSize.X, WorldGrid.BlockSize.Y), Color.Orange);
            }

            if (startDragPosition != null)
            {
                var _startDragPosition  = startDragPosition ?? Point.Zero;
                var uiStartDragPosition = SimulationGame.ConvertWorldPositionToUIPosition(_startDragPosition.X, _startDragPosition.Y).ToPoint();
                var selectionRect       = ShapeCollision.ConvertLineToRect(uiStartDragPosition, SimulationGame.MouseState.Position);

                if (selectionRect.Width > 20 || selectionRect.Height > 20)
                {
                    SimulationGame.PrimitiveDrawer.Rectangle(selectionRect.ToXnaRectangle(), Color.White);
                }
            }
        }
Пример #2
0
        private void handleOnMouseMove(MouseMoveEvent mouseMoveEvent)
        {
            if (mouseMoveEvent.LeftButtonDown && startDragPosition == null)
            {
                startDragPosition = SimulationGame.RealWorldMousePosition.ToPoint();
            }

            if (mouseMoveEvent.LeftButtonDown == false && startDragPosition != null)
            {
                selectGameObjects(ShapeCollision.ConvertLineToRect(startDragPosition ?? Point.Zero, SimulationGame.RealWorldMousePosition.ToPoint()));
                startDragPosition = null;
            }
        }