Beispiel #1
0
        public virtual void Draw(GameTime gameTime)
        {
            spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);

            float maxdepth = ((squaresWideToDraw + 1) + ((squaresTallToDraw + 1) * Tile.TileWidth)) * 10;

            //converts pixels to steps
            int leftX = Numerical.intDivide(Camera.Location.X, Tile.TileStepX);
            int topY  = Numerical.intDivide(Camera.Location.Y, Tile.TileStepY);

            //if the sum is now odd, we will get weird errors, so just move over a little
            //we will fix the inelegance with more offset
            if (Numerical.Mod(leftX + topY, 2) == 1)
            {
                leftX--;
            }

            int firstX = (leftX + topY) / 2 - 1;
            int firstY = (leftX - topY) / 2;

            int offsetX = Camera.Location.X - (firstX + firstY) * Tile.TileStepX;
            int offsetY = Camera.Location.Y - (firstX - firstY) * Tile.TileStepY;

            drawTileMapCells(maxdepth, firstX, firstY, offsetX, offsetY);
            drawInGameObjects(maxdepth, firstX, firstY, offsetX, offsetY);

            spriteBatch.End();
        }
Beispiel #2
0
        /// <summary>
        /// Matrix transforms!  Turning mouse screen coordinates into
        /// in-game pixel coordinates, then scaling down to square coordinates.
        /// </summary>
        /// <param name="mouseX"></param>
        /// <param name="mouseY"></param>
        private void updateMousePosition(int mouseX, int mouseY)
        {
            this.mouseScreenX = mouseX;
            this.mouseScreenY = mouseY;

            int translatedMouseX = mouseX + Camera.Location.X;
            int translatedMouseY = mouseY + Camera.Location.Y;

            int wxTsx = Numerical.intDivide(Tile.TileInGameWidth * translatedMouseX, Tile.TileStepX);
            int wyTsy = Numerical.intDivide(Tile.TileInGameWidth * translatedMouseY, Tile.TileStepY);
            int hxTsx = Numerical.intDivide(Tile.TileInGameHeight * translatedMouseX, Tile.TileStepX);
            int hyTsy = Numerical.intDivide(Tile.TileInGameHeight * translatedMouseY, Tile.TileStepY);

            MouseWorldX = Numerical.intDivide(wxTsx + wyTsy, 2);
            MouseWorldY = Numerical.intDivide(hxTsx - hyTsy, 2);
        }
 /// <summary>
 /// Calculates the Y-Square coordinate from a given (in-game pixel) point
 /// </summary>
 /// <param name="xPos"></param>
 /// <param name="yPos"></param>
 /// <returns></returns>
 protected int FindYSquare(int xPos, int yPos)
 {
     return(Numerical.intDivide(yPos, Tile.TileInGameHeight));
 }
 /// <summary>
 /// Calculates the X-Square coordinate from a given (in-game pixel) point
 /// </summary>
 /// <param name="xPos"></param>
 /// <param name="yPos"></param>
 /// <returns></returns>
 protected int FindXSquare(int xPos, int yPos)
 {
     return(Numerical.intDivide(xPos, Tile.TileInGameWidth));
 }