pieces.go
1961 bytes
1package elements
2
3import (
4 "github.com/gen2brain/raylib-go/raylib"
5)
6
7type Piece struct {
8 Blocks []*Block
9}
10
11var Pieces = []Piece{
12 {
13 Blocks: []*Block{
14 {rl.NewVector2(-1, 0), Cyan, false},
15 {rl.NewVector2(0, 0), Cyan, false},
16 {rl.NewVector2(1, 0), Cyan, true},
17 {rl.NewVector2(2, 0), Cyan, false},
18 },
19 },
20 {
21 Blocks: []*Block{
22 {rl.NewVector2(-1, 0), Blue, false},
23 {rl.NewVector2(-1, -1), Blue, false},
24 {rl.NewVector2(0, 0), Blue, false},
25 {rl.NewVector2(1, 0), Blue, false},
26 },
27 },
28 {
29 Blocks: []*Block{
30 {rl.NewVector2(-1, 0), Orange, false},
31 {rl.NewVector2(0, 0), Orange, false},
32 {rl.NewVector2(1, 0), Orange, false},
33 {rl.NewVector2(1, -1), Orange, false},
34 },
35 },
36 {
37 Blocks: []*Block{
38 {rl.NewVector2(-1, 0), Purple, false},
39 {rl.NewVector2(0, 0), Purple, false},
40 {rl.NewVector2(1, 0), Purple, false},
41 {rl.NewVector2(0, -1), Purple, false},
42 },
43 },
44 {
45 Blocks: []*Block{
46 {rl.NewVector2(-1, -1), Red, false},
47 {rl.NewVector2(0, -1), Red, false},
48 {rl.NewVector2(0, 0), Red, false},
49 {rl.NewVector2(1, 0), Red, false},
50 },
51 },
52 {
53 Blocks: []*Block{
54 {rl.NewVector2(-1, 0), Green, false},
55 {rl.NewVector2(0, 0), Green, false},
56 {rl.NewVector2(0, -1), Green, false},
57 {rl.NewVector2(1, -1), Green, false},
58 },
59 },
60 {
61 Blocks: []*Block{
62 {rl.NewVector2(0, -1), Yellow, false},
63 {rl.NewVector2(1, -1), Yellow, false},
64 {rl.NewVector2(0, 0), Yellow, false},
65 {rl.NewVector2(1, 0), Yellow, false},
66 },
67 },
68}
69
70func (p Piece) Draw(pos rl.Vector2, scale rl.Vector2, offset rl.Vector2) {
71 for _, block := range p.Blocks {
72 block.Draw(pos, scale, offset)
73 }
74}
75
76func GetRandomPiece() *Piece {
77 base := Pieces[rl.GetRandomValue(0, int32(len(Pieces)-1))]
78 newPiece := &Piece{
79 Blocks: make([]*Block, 4),
80 }
81 for i, block := range base.Blocks {
82 newPiece.Blocks[i] = &Block{
83 Position: block.Position,
84 Color: block.Color,
85 LongBoi: block.LongBoi,
86 }
87 }
88
89 return newPiece
90}