91 lines
1.9 KiB
Go
91 lines
1.9 KiB
Go
package elements
|
|
|
|
import (
|
|
"github.com/gen2brain/raylib-go/raylib"
|
|
)
|
|
|
|
type Piece struct {
|
|
Blocks []*Block
|
|
}
|
|
|
|
var Pieces = []Piece{
|
|
{
|
|
Blocks: []*Block{
|
|
{rl.NewVector2(-1, 0), Cyan, false},
|
|
{rl.NewVector2(0, 0), Cyan, false},
|
|
{rl.NewVector2(1, 0), Cyan, true},
|
|
{rl.NewVector2(2, 0), Cyan, false},
|
|
},
|
|
},
|
|
{
|
|
Blocks: []*Block{
|
|
{rl.NewVector2(-1, 0), Blue, false},
|
|
{rl.NewVector2(-1, -1), Blue, false},
|
|
{rl.NewVector2(0, 0), Blue, false},
|
|
{rl.NewVector2(1, 0), Blue, false},
|
|
},
|
|
},
|
|
{
|
|
Blocks: []*Block{
|
|
{rl.NewVector2(-1, 0), Orange, false},
|
|
{rl.NewVector2(0, 0), Orange, false},
|
|
{rl.NewVector2(1, 0), Orange, false},
|
|
{rl.NewVector2(1, -1), Orange, false},
|
|
},
|
|
},
|
|
{
|
|
Blocks: []*Block{
|
|
{rl.NewVector2(-1, 0), Purple, false},
|
|
{rl.NewVector2(0, 0), Purple, false},
|
|
{rl.NewVector2(1, 0), Purple, false},
|
|
{rl.NewVector2(0, -1), Purple, false},
|
|
},
|
|
},
|
|
{
|
|
Blocks: []*Block{
|
|
{rl.NewVector2(-1, -1), Red, false},
|
|
{rl.NewVector2(0, -1), Red, false},
|
|
{rl.NewVector2(0, 0), Red, false},
|
|
{rl.NewVector2(1, 0), Red, false},
|
|
},
|
|
},
|
|
{
|
|
Blocks: []*Block{
|
|
{rl.NewVector2(-1, 0), Green, false},
|
|
{rl.NewVector2(0, 0), Green, false},
|
|
{rl.NewVector2(0, -1), Green, false},
|
|
{rl.NewVector2(1, -1), Green, false},
|
|
},
|
|
},
|
|
{
|
|
Blocks: []*Block{
|
|
{rl.NewVector2(0, -1), Yellow, false},
|
|
{rl.NewVector2(1, -1), Yellow, false},
|
|
{rl.NewVector2(0, 0), Yellow, false},
|
|
{rl.NewVector2(1, 0), Yellow, false},
|
|
},
|
|
},
|
|
}
|
|
|
|
func (p Piece) Draw(pos rl.Vector2, scale rl.Vector2, offset rl.Vector2) {
|
|
for _, block := range p.Blocks {
|
|
block.Draw(pos, scale, offset)
|
|
}
|
|
}
|
|
|
|
func GetRandomPiece() *Piece {
|
|
base := Pieces[rl.GetRandomValue(0, int32(len(Pieces)-1))]
|
|
newPiece := &Piece{
|
|
Blocks: make([]*Block, 4),
|
|
}
|
|
for i, block := range base.Blocks {
|
|
newPiece.Blocks[i] = &Block{
|
|
Position: block.Position,
|
|
Color: block.Color,
|
|
LongBoi: block.LongBoi,
|
|
}
|
|
}
|
|
|
|
return newPiece
|
|
}
|