Пример #1
0
        public void Draw(Point pos, Camera camera, SpriteBatch spriteBatch, Renderer renderer)
        {
            int destX = (int)(pos.X * Tile.Width - camera.getPos().X);
            int destY = (int)(pos.Y * Tile.Height - camera.getPos().Y);
            int destW = Tile.Width;
            int destH = Tile.Height;

            int srcX = SpriteXIndex * TileSpriteSheet.SpriteWidth;
            int srcY = SpriteYIndex * TileSpriteSheet.SpriteHeight;
            int srcW = TileSpriteSheet.SpriteWidth;
            int srcH = TileSpriteSheet.SpriteHeight;

            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, null, renderer.spriteScale);
            spriteBatch.Draw(Images.GetImage(tileSheetKey), new Rectangle(destX, destY, destW, destH), new Rectangle(srcX, srcY, srcW, srcH), Color.White);
            spriteBatch.End();
        }
Пример #2
0
        public void Draw(Camera camera, SpriteBatch spriteBatch, Renderer renderer)
        {
            if (SpriteSheet == null)
            {
                return;
            }
            if (SpriteSheet.Invisible == true)
            {
                return;
            }
            int destX  = (int)(Pos.X - camera.getPos().X);
            int destY  = (int)(Pos.Y - camera.getPos().Y);
            var sprite = SpriteSheet;
            int destW  = sprite.SpriteWidth;
            int destH  = sprite.SpriteHeight;

            int srcX = sprite.ClipXIndex * sprite.SpriteWidth;
            int srcY = sprite.ClipYIndex * sprite.SpriteHeight;
            int srcW = sprite.SpriteWidth;
            int srcH = sprite.SpriteHeight;

            // Clear stencil buffer
            renderer.graphicsDevice.Clear(ClearOptions.Stencil, Color.Black, 0f, 0);

            // Draw your sprites using the structures above
            Color tintColour = SpriteSheet.IsFlashTint ? SpriteSheet.FlashColor : Color.White;

            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, renderer.beforeDepthStencilState, RasterizerState.CullCounterClockwise, renderer.alphaTestEffect, renderer.spriteScale);
            spriteBatch.Draw(sprite.SpriteSheet, new Rectangle(destX + SpriteOffset.X, destY + SpriteOffset.Y, destW, destH), new Rectangle(srcX, srcY, srcW, srcH), Color.Black);
            spriteBatch.End();

            // Draw a full screen white quad with the structure above
            if (sprite.IsFlashed && !sprite.IsFlashTint)
            {
                spriteBatch.Begin(SpriteSortMode.Deferred, null, null, renderer.afterDepthStencilState, null);
                spriteBatch.Draw(renderer.pixel, renderer.graphicsDevice.Viewport.Bounds, sprite.FlashColor);
                spriteBatch.End();
            }

            if (Consts.DEBUG_MODE)
            {
                spriteBatch.Begin();
                spriteBatch.Draw(Images.DebugRect, new Rectangle(destX, destY, Dims.Width, Dims.Height), null, Color.Red);
                spriteBatch.End();
            }
        }
Пример #3
0
        public void Draw(Camera camera, SpriteBatch spriteBatch)
        {
            if (SpriteSheet == null)
            {
                return;
            }

            int srcX = 0;
            int srcY = 0;
            int srcW = SpriteSheet.Width;
            int srcH = SpriteSheet.Height;

            int destX  = (int)(Pos.X - camera.getPos().X);
            int destY  = (int)(Pos.Y - camera.getPos().Y);
            var sprite = SpriteSheet;
            int destW  = (int)(srcW * Scale);
            int destH  = (int)(srcH * Scale);

            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, RasterizerState.CullCounterClockwise, null);
            spriteBatch.Draw(SpriteSheet, null, new Rectangle(destX, destY, destW, destH), new Rectangle(srcX, srcY, srcW, srcH), new Vector2(srcW / 2, srcH / 2), Rotation, null, Colour);
            spriteBatch.End();
        }
Пример #4
0
        public void Draw(SpriteBatch spriteBatch, Camera camera)
        {
            int xoffset = (int)(camera.getPos().X *xrate + xInitOff * image.Width) % Consts.GameWidth;
            int yoffset = (int)(camera.getPos().Y *yrate + yInitOff * image.Height) % Consts.GameHeight;
            int xoff2   = xoffset > 0 ? xoffset - image.Width : image.Width + xoffset;
            int yoff2   = yoffset > 0 ? yoffset - image.Height : image.Height + yoffset;

            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, null, null);
            spriteBatch.Draw(image, new Rectangle(xoffset, yoffset, image.Width, image.Height), Color.White);
            if (xoff2 != 0 && xloops)
            {
                spriteBatch.Draw(image, new Rectangle(xoff2, yoffset, image.Width, image.Height), Color.White);
            }
            if (yoff2 != 0 && yloops)
            {
                spriteBatch.Draw(image, new Rectangle(xoffset, yoff2, image.Width, image.Height), Color.White);
                if (xoff2 != 0 && xloops)
                {
                    spriteBatch.Draw(image, new Rectangle(xoff2, yoff2, image.Width, image.Height), Color.White);
                }
            }
            spriteBatch.End();
        }