diff --git a/game/shape.go b/game/shape.go index cf0df6f..7543e39 100644 --- a/game/shape.go +++ b/game/shape.go @@ -56,3 +56,29 @@ func (s Shape) Coordinates() [4]core.Vec2i8 { s.coordinates[2], } } + +func (s Shape) RotateCW() Shape { + rotated := [3]core.Vec2i8{} + + for i, block := range s.coordinates { + block.X, block.Y = -1*block.Y, block.X + rotated[i] = block + } + return Shape{ + typ: s.typ, + coordinates: rotated, + } +} + +func (s Shape) RotateCCW() Shape { + rotated := [3]core.Vec2i8{} + + for i, block := range s.coordinates { + block.X, block.Y = block.Y, -1*block.X + rotated[i] = block + } + return Shape{ + typ: s.typ, + coordinates: rotated, + } +}