Exemplo n.º 1
0
        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
            oldKeyboardState = new KeyboardState();

            mouseElement = new Element();
            mouseElement.exists = true;

            images = new ImageHandler();
        }
Exemplo n.º 2
0
 /// <summary>
 /// Tests for a collision on the top and bottom of element1 with element2. The double 
 /// returned is in radians.
 /// </summary>
 /// <param name="element1">The element that wil have its top and bottom tested.</param>
 /// <param name="element2">The element that will be tested.</param>
 /// <returns></returns>
 public static double TestVertical(Element element1, Element element2)
 {
     if ((element1.roomX >= element2.roomX && element1.roomX <= element2.roomX + element2.sprite.Width - 1) ||
         (element1.roomX + element1.sprite.Width >= element2.roomX + 1 && element1.roomX + element1.sprite.Width <=
         element2.roomX + element2.sprite.Width))
     {
         if (element1.roomY <= element2.roomY + element2.sprite.Height && element1.roomY >= element2.roomY)
         { return 0; }
         if (element1.roomY + element1.sprite.Height >= element2.roomY && element1.roomY + element1.sprite.Height <=
             element2.roomY + element2.sprite.Height)
         { return Math.PI; }
     }
     return 10;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Tests for a collision on the left and right of element1 with element2. The 
 /// double returned is in radians.
 /// </summary>
 /// <param name="element1">The element that wil have its left and right tested.</param>
 /// <param name="element2">The element that will be tested.</param>
 /// <returns></returns>
 public static double TestHorizontal(Element element1, Element element2)
 {
     if ((element1.roomY >= element2.roomY && element1.roomY <= element2.roomY + element2.sprite.Height - 1) ||
         (element1.roomY + element1.sprite.Height >= element2.roomY + 1 && element1.roomY + element1.sprite.Height <=
         element2.roomY + element2.sprite.Height))
     {
         if (element1.roomX <= element2.roomX + element2.sprite.Width && element1.roomX >= element2.roomX)
         { return -Math.PI / 2; }
         if (element1.roomX + element1.sprite.Width >= element2.roomX && element1.roomX + element1.sprite.Width <=
             element2.roomX)
         { return Math.PI / 2; }
     }
     return 10;
 }
Exemplo n.º 4
0
 /// <summary>
 /// Tests if a coordinate is inside the corners of an element.
 /// </summary>
 /// <param name="argX">The x-coordinate that will be tested.</param>
 /// <param name="argY">The y-coordinate that will be tested.</param>
 /// <param name="element">The element that will be tested.</param>
 /// <returns></returns>
 public static bool TestCoordinate(int argX, int argY, Element element)
 {
     if (argX >= element.roomX && argX <= element.roomX + element.sprite.Width)
     {
         if (argY >= element.roomY && argY <= element.roomY + element.sprite.Height)
         { return true; }
     }
     return false;
 }
Exemplo n.º 5
0
        public static bool TestCompletelyInsideForAll(Element insideElement, List<Box> surroundingElements)
        {
            bool topLeft, topRight, bottomLeft, bottomRight;
            topLeft = topRight = bottomLeft = bottomRight = false;

            for (int i = 0; i < surroundingElements.Count; i++)
            {
                if (!topLeft)
                {
                    if (TestCoordinate(insideElement.roomX, insideElement.roomY, surroundingElements[i]))
                    { topLeft = true; }
                }
                if (!topRight)
                {
                    if (TestCoordinate(insideElement.roomX + insideElement.sprite.Width, insideElement.roomY,
                        surroundingElements[i]))
                    { topRight = true; }
                }
                if (!bottomLeft)
                {
                    if (TestCoordinate(insideElement.roomX, insideElement.roomY + insideElement.sprite.Height,
                        surroundingElements[i]))
                    { bottomLeft = true; }
                }
                if (!bottomRight)
                {
                    if (TestCoordinate(insideElement.roomX + insideElement.sprite.Width, insideElement.roomY +
                        insideElement.sprite.Height, surroundingElements[i]))
                    { bottomRight = true; }
                }

                if (topLeft && topRight && bottomLeft && bottomRight)
                { return true; }
            }

            return false;
        }
Exemplo n.º 6
0
 /// <summary>
 /// Tests the corners of the inside element inside the surrounding element. It will 
 /// only return true if all the corners are inside the surrounding element.
 /// </summary>
 /// <param name="insideElement">The element that will be tested if inside the 
 /// surrounding element.</param>
 /// <param name="surroundingElement">The element that will be tested if surrounding 
 /// the inside element.</param>
 /// <returns></returns>
 public static bool TestCompletelyInside(Element insideElement, Element surroundingElement)
 {
     if (insideElement.roomX >= surroundingElement.roomX && insideElement.roomX + insideElement.sprite.Width <=
         surroundingElement.roomX + surroundingElement.sprite.Width)
     {
         if (insideElement.roomY >= surroundingElement.roomY && insideElement.roomY + insideElement.sprite.Height <=
             surroundingElement.roomY + surroundingElement.sprite.Height)
         { return true; }
     }
     return false;
 }
Exemplo n.º 7
0
        /// <summary>
        /// Tests the corners of the first element insideElement the corners of the second element,
        /// then switches the elements and does the same thing.
        /// </summary>
        /// <param name="element1">An element that is or could be colliding.</param>
        /// <param name="element2">An element that is or could be colliding.</param>
        /// <returns></returns>
        public static bool Test(Element element1, Element element2)
        {
            if (element1.roomX >= element2.roomX && element1.roomX <= element2.roomX + element2.sprite.Width)
            {
                if (element1.roomY >= element2.roomY && element1.roomY <= element2.roomY + element2.sprite.Height)
                { return true; }
                if (element1.roomY + element1.sprite.Height >= element2.roomY && element1.roomY + element1.sprite.Height <=
                    element2.roomY + element2.sprite.Height)
                { return true; }
            }
            if (element1.roomX + element1.sprite.Width >= element2.roomX && element1.roomX + element1.sprite.Width <=
                element2.roomX + element2.sprite.Width)
            {
                if (element1.roomY >= element2.roomY && element1.roomY <= element2.roomY + element2.sprite.Height)
                { return true; }
                if (element1.roomY + element1.sprite.Height >= element2.roomY && element1.roomY + element1.sprite.Height <=
                    element2.roomY + element2.sprite.Height)
                { return true; }
            }

            Element tempElement = element1;
            element1 = element2;
            element2 = tempElement;

            if (element1.roomX >= element2.roomX && element1.roomX <= element2.roomX + element2.sprite.Width)
            {
                if (element1.roomY >= element2.roomY && element1.roomY <= element2.roomY + element2.sprite.Height)
                { return true; }
                if (element1.roomY + element1.sprite.Height >= element2.roomY && element1.roomY + element1.sprite.Height <=
                    element2.roomY + element2.sprite.Height)
                { return true; }
            }
            if (element1.roomX + element1.sprite.Width >= element2.roomX && element1.roomX + element1.sprite.Width <=
                element2.roomX + element2.sprite.Width)
            {
                if (element1.roomY >= element2.roomY && element1.roomY <= element2.roomY + element2.sprite.Height)
                { return true; }
                if (element1.roomY + element1.sprite.Height >= element2.roomY && element1.roomY + element1.sprite.Height <=
                    element2.roomY + element2.sprite.Height)
                { return true; }
            }

            return false;
        }