Created a Tiled pattern

This commit is contained in:
Sasha Koshka
2023-01-24 14:08:47 -05:00
parent 269c70ebb1
commit 3949f2af9e
2 changed files with 35 additions and 2 deletions

View File

@@ -26,8 +26,26 @@ func (pattern Checkered) AtWhen (x, y, width, height int) (c color.RGBA) {
y %= pattern.CellHeight
if n % 2 == 0 {
return pattern.First.AtWhen(x, y, pattern.CellWidth, pattern.CellHeight)
return pattern.First.AtWhen (
x, y, pattern.CellWidth, pattern.CellHeight)
} else {
return pattern.Second.AtWhen(x, y, pattern.CellWidth, pattern.CellHeight)
return pattern.Second.AtWhen (
x, y, pattern.CellWidth, pattern.CellHeight)
}
}
// Tiled is a pattern that tiles another pattern accross a grid.
type Tiled struct {
Pattern
CellWidth, CellHeight int
}
// AtWhen satisfies the Pattern interface.
func (pattern Tiled) AtWhen (x, y, width, height int) (c color.RGBA) {
x %= pattern.CellWidth
y %= pattern.CellHeight
if x < 0 { x += pattern.CellWidth }
if y < 0 { y += pattern.CellHeight }
return pattern.Pattern.AtWhen (
x, y, pattern.CellWidth, pattern.CellHeight)
}