chore: rename Rows to Lines in Grid as Lines are more common in tetris.
This commit is contained in:
parent
db9ec53d35
commit
190c6ad914
3 changed files with 17 additions and 17 deletions
30
game/grid.go
30
game/grid.go
|
|
@ -33,30 +33,30 @@ func (g *Grid) Set(x, y byte, c Block) {
|
||||||
(*g)[uint16(x)+(uint16(y)*GRID_WIDTH)] = c
|
(*g)[uint16(x)+(uint16(y)*GRID_WIDTH)] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Grid) ClearFullRows() byte {
|
func (g *Grid) ClearFullLines() byte {
|
||||||
completed := byte(0)
|
completed := byte(0)
|
||||||
for y := int(g.Height() - 1); y >= 0; y-- {
|
for y := int(g.Height() - 1); y >= 0; y-- {
|
||||||
if g.IsRowFull(byte(y)) {
|
if g.IsLineFull(byte(y)) {
|
||||||
completed++
|
completed++
|
||||||
g.ClearRow(byte(y))
|
g.ClearLine(byte(y))
|
||||||
} else if completed > 0 {
|
} else if completed > 0 {
|
||||||
g.MoveRowDown(byte(y), completed)
|
g.MoveLineDown(byte(y), completed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return completed
|
return completed
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Grid) FullRows() []byte {
|
func (g *Grid) FullLines() []byte {
|
||||||
rows := []byte{}
|
lines := []byte{}
|
||||||
for y := byte(0); y < byte(g.Height()); y++ {
|
for y := byte(0); y < byte(g.Height()); y++ {
|
||||||
if g.IsRowFull(y) {
|
if g.IsLineFull(y) {
|
||||||
rows = append(rows, y)
|
lines = append(lines, y)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rows
|
return lines
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Grid) IsRowFull(y byte) bool {
|
func (g *Grid) IsLineFull(y byte) bool {
|
||||||
for x := range byte(g.Width()) {
|
for x := range byte(g.Width()) {
|
||||||
if g.At(x, y) == BLOCK_EMPTY {
|
if g.At(x, y) == BLOCK_EMPTY {
|
||||||
return false
|
return false
|
||||||
|
|
@ -65,26 +65,26 @@ func (g *Grid) IsRowFull(y byte) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Grid) MoveRowsDown(rows ...byte) {
|
func (g *Grid) MoveLinesDown(rows ...byte) {
|
||||||
completed := byte(0)
|
completed := byte(0)
|
||||||
for y := int(g.Height() - 1); y >= 0; y-- {
|
for y := int(g.Height() - 1); y >= 0; y-- {
|
||||||
if slices.Contains(rows, byte(y)) {
|
if slices.Contains(rows, byte(y)) {
|
||||||
completed++
|
completed++
|
||||||
} else if completed > 0 {
|
} else if completed > 0 {
|
||||||
g.MoveRowDown(byte(y), completed)
|
g.MoveLineDown(byte(y), completed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Grid) MoveRowDown(y, num_rows byte) {
|
func (g *Grid) MoveLineDown(y, num_lines byte) {
|
||||||
w := uint16(g.Width())
|
w := uint16(g.Width())
|
||||||
src := uint16(y) * w
|
src := uint16(y) * w
|
||||||
dst := uint16(y+num_rows) * w
|
dst := uint16(y+num_lines) * w
|
||||||
copy(g[dst:dst+w], g[src:src+w])
|
copy(g[dst:dst+w], g[src:src+w])
|
||||||
clear(g[src : src+w])
|
clear(g[src : src+w])
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Grid) ClearRow(y byte) {
|
func (g *Grid) ClearLine(y byte) {
|
||||||
w := uint16(g.Width())
|
w := uint16(g.Width())
|
||||||
n := uint16(y) * w
|
n := uint16(y) * w
|
||||||
clear(g[n : n+w])
|
clear(g[n : n+w])
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ func (lca *LineClearAnimation) Update(grid *Grid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if lca.leftIndex < 0 || lca.rightIndex > GRID_WIDTH {
|
if lca.leftIndex < 0 || lca.rightIndex > GRID_WIDTH {
|
||||||
grid.MoveRowsDown(lca.lines...)
|
grid.MoveLinesDown(lca.lines...)
|
||||||
lca.Reset()
|
lca.Reset()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ func (gp *GamePlay) Update(fsm state.Transitioner, delta float32) {
|
||||||
if game.CheckShapeCollision(new_pos, &gp.shape, &gp.grid) {
|
if game.CheckShapeCollision(new_pos, &gp.shape, &gp.grid) {
|
||||||
gp.LockShape()
|
gp.LockShape()
|
||||||
gp.SpawnShape()
|
gp.SpawnShape()
|
||||||
lines := gp.grid.FullRows()
|
lines := gp.grid.FullLines()
|
||||||
if len(lines) > 0 {
|
if len(lines) > 0 {
|
||||||
gp.lineClearAnimation.SetLines(lines)
|
gp.lineClearAnimation.SetLines(lines)
|
||||||
gp.score.Lines(byte(len(lines)))
|
gp.score.Lines(byte(len(lines)))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue