diff --git a/game/grid.go b/game/grid.go index d59e7ea..d951d2a 100644 --- a/game/grid.go +++ b/game/grid.go @@ -31,6 +31,19 @@ func (g *Grid) Set(x, y byte, c Block) { (*g)[uint16(x)+(uint16(y)*GRID_WIDTH)] = c } +func (g *Grid) ClearFullRows() byte { + completed := byte(0) + for y := int(g.Height() - 1); y >= 0; y-- { + if g.IsRowFull(byte(y)) { + completed++ + g.ClearRow(byte(y)) + } else if completed > 0 { + g.MoveRowDown(byte(y), completed) + } + } + return completed +} + func (g *Grid) IsRowFull(y byte) bool { for x := range byte(g.Width()) { if g.At(x, y) == BLOCK_EMPTY {