1
0
Fork 0
tetris-go/game/draw/grid/grid.go

52 lines
1.2 KiB
Go

package grid
import (
"image/color"
"tetris/engine/graphics"
"tetris/engine/render"
rl "github.com/gen2brain/raylib-go/raylib"
)
const (
// How many pixels wide and tall each cell is.
CELL_SIZE = 32
// Number of pixels between each cell
CELL_SPACING = 1
)
type Grid interface {
Width() int32
Height() int32
Tile(x, y byte) graphics.Tile
}
func DrawBackground(pos rl.Vector2, grid Grid, col color.RGBA, border_size int32, border_col color.RGBA) {
render.DrawRectBorder(rl.RectangleInt32{
X: int32(pos.X),
Y: int32(pos.Y),
Width: (grid.Width() * (CELL_SIZE + CELL_SPACING)) + CELL_SPACING,
Height: (grid.Height() * (CELL_SIZE + CELL_SPACING)) + CELL_SPACING,
}, col, border_size, border_col)
}
func DrawBlock(pos rl.Vector2, x, y byte, tile graphics.Tile) {
dest := rl.Rectangle{
X: float32(int32(pos.X) + (int32(x) * (CELL_SIZE + CELL_SPACING)) + CELL_SPACING),
Y: float32(int32(pos.Y) + (int32(y) * (CELL_SIZE + CELL_SPACING)) + CELL_SPACING),
Width: float32(CELL_SIZE),
Height: float32(CELL_SIZE),
}
render.DrawTextureRec(tile.GetTexRect(), dest)
}
func Draw(pos rl.Vector2, grid Grid) {
for y := range byte(grid.Height()) {
for x := range byte(grid.Width()) {
DrawBlock(pos, x, y, grid.Tile(x, y))
}
}
}