public TileGrid(int tileWidth, int tileHeight, int numXTiles, int numYTiles, Vector2 wrldOffset, Vector2 camOffset, SpriteSheet tileSheet, Rectangle viewport) { sheet = tileSheet; width = numXTiles; height = numYTiles; cellWidth = tileWidth; cellHeight = tileHeight; originalWorldOffset = wrldOffset; worldOffset = wrldOffset; visibleTiles = new Rectangle(0, 0, width, height); grid = new int[width][]; for (int i = 0; i < width; i++) { grid[i] = new int[height]; for (int j = 0; j < height; j++) { grid[i][j] = 0; } } scaleValue = 1f; CameraPosition = camOffset; displaySize.X = viewport.Width; displaySize.Y = viewport.Height; visibilityChanged = true; }
public static TileGrid Create(Rectangle viewport, Texture2D texture, int numTilesX, int numTilesY, float heightScale, Vector2? worldOffset, Vector2 cameraOffset) { var tileWidth = texture.Width; var tileHeight = texture.Height; var spriteSheet = new SpriteSheet(texture); spriteSheet.AddSourceSprite(1, new Rectangle(0, 0, tileWidth, tileHeight)); if (worldOffset == null) { var worldOffsetX = -viewport.Width / 2; var worldOffsetY = -viewport.Height / 2; worldOffset = new Vector2(worldOffsetX, worldOffsetY); } var tileGrid = new TileGrid(tileWidth, tileHeight, numTilesX, numTilesY, worldOffset.Value, cameraOffset, spriteSheet, viewport) { TileScale = heightScale }; for (int i = 0; i < numTilesX; i++) { for (int j = 0; j < numTilesY; j++) { tileGrid.SetTile(i, j, 1); } } return tileGrid; }
public Button (Vector2 position, Vector2 size, Texture2D texture) { _position = position; _size = size; _center = position + size / 2f; _spriteSheet = new SpriteSheet (texture); var columns = 3; var padding = 1; var spriteSizeY = texture.Height; var spriteSizeX = (texture.Width - padding * (columns - 1)) / columns; for (int x = 0; x < columns; x++) { int left = (int)(x * (spriteSizeX + padding)); int top = 0; _spriteSheet.AddSourceSprite(x, new Rectangle(left, top, spriteSizeX, spriteSizeY)); } _textureScale = _size.X / SourceRectangle.Width; }