Ejemplo n.º 1
0
        public bool IsEntityHovered(Transform2DComponent transform2D, Interaction2DComponent interaction2D, MouseState mouseState)
        {
            var bounds = RectangleExtension.Transform(interaction2D.Bounds, transform2D.WorldMatrix);

            var mousePosition =
                _viewportAdapter == null ?
                mouseState.Position : _viewportAdapter.PointToScreen(mouseState.Position);

            return(bounds.Intersects(mousePosition));

            //return mouseState.Position.X >= bounds.X &&
            //       mouseState.Position.X <= bounds.X + bounds.Width &&
            //       mouseState.Position.Y >= bounds.Y &&
            //       mouseState.Position.Y <= bounds.Y + bounds.Height;
        }
Ejemplo n.º 2
0
        //TODO: Make this base class so we don't have to pass in specifics for each ship type
        public Ship(String name, Texture2D texture, Planet startingPlanet, int width, int height, double speed, int fuelCapacity, Color color)
        {
            this.name    = name;
            this.texture = texture;
            this.dest    = startingPlanet;

            this.x      = startingPlanet.getDrawingRectangle().Center.X;
            this.y      = startingPlanet.getDrawingRectangle().Center.Y;
            this.width  = width;
            this.height = height;
            this.rect   = new RectangleExtension((int)x, (int)y, width, height);

            this.speed = speed;
            this.color = color;

            this.fuelCapacity  = fuelCapacity;
            this.fuelRemaining = fuelCapacity;
            cargo = new List <Item>();
            this.marketStepComplete = true;
            this.isDocked           = true;
        }
Ejemplo n.º 3
0
 private IEnumerable <Rectangle> GetSuitableRectangles(Point nextPoint, Size rectangleSize)
 {
     return(RectangleExtension
            .CreateRectangles(nextPoint, rectangleSize)
            .Where(CanPut));
 }
Ejemplo n.º 4
0
        public void move()
        {
            bool xArrived = false;
            bool yArrived = false;

            rect = new RectangleExtension((int)x, (int)y, width, height);
            //TODO: Set once
            double destX = dest.getDrawingRectangle().Center.X;
            double destY = dest.getDrawingRectangle().Center.Y;

            double centerX = rect.getDrawingRectangle().Center.X;
            double centerY = rect.getDrawingRectangle().Center.Y;

            double xTraveled = 0, yTraveled = 0;

            if (centerX != destX)
            {
                double normalSpeed      = speed * Math.Sin(angle);
                double leftoverDistance = (destX - centerX);

                if (Math.Abs(normalSpeed) < Math.Abs(leftoverDistance))
                {
                    x        -= normalSpeed;
                    xTraveled = normalSpeed;
                }
                else
                {
                    x        += leftoverDistance;
                    xTraveled = leftoverDistance;
                }
            }
            else
            {
                xArrived = true;
            }

            if (centerY != destY)
            {
                double normalSpeedY      = speed * Math.Cos(angle);
                double leftoverDistanceY = (destY - centerY);

                if (Math.Abs(normalSpeedY) < Math.Abs(leftoverDistanceY))
                {
                    y        += normalSpeedY;
                    yTraveled = normalSpeedY;
                }
                else
                {
                    y        += leftoverDistanceY;
                    yTraveled = leftoverDistanceY;
                }
            }
            else
            {
                yArrived = true;
            }

            //General assumption that could be slightly off, but nothing to be overly concerned about
            double fuelSpent = Math.Sqrt(Math.Pow(xTraveled, 2) + Math.Pow(yTraveled, 2));

            fuelRemaining -= fuelSpent;

            //NOTE: Enable to auto-get new destination
            needNewDest = xArrived && yArrived;

            if (xArrived && yArrived && !isDocked)
            {
                isDocked           = true;
                marketStepComplete = false;
                dest.timesVisited++;
                angle = 0;
            }
        }
Ejemplo n.º 5
0
        public Rectangle GetBoundingRectangle(Transform2DComponent transform2D)
        {
            var rectBody = new Rectangle(Offset.ToPoint(), Size.ToPoint());

            return(RectangleExtension.Transform(rectBody, transform2D.WorldMatrix));
        }