Parent directory

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}