-
Notifications
You must be signed in to change notification settings - Fork 5
/
brick_shard.go
39 lines (31 loc) · 876 Bytes
/
brick_shard.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package main
import (
"github.com/quasilyte/ge"
"github.com/quasilyte/gmath"
)
type brickShard struct {
pos gmath.Vec
velocity gmath.Vec
sprite *ge.Sprite
}
func newBrickShard(pos gmath.Vec) *brickShard {
return &brickShard{pos: pos}
}
func (shard *brickShard) Init(scene *ge.Scene) {
angle := scene.Rand().Rad()
shard.velocity = gmath.RadToVec(angle).Mulf(100)
shard.sprite = scene.NewSprite(ImageBrickShard)
shard.sprite.Pos.Base = &shard.pos
scene.AddGraphics(shard.sprite)
}
func (shard *brickShard) IsDisposed() bool { return shard.sprite.IsDisposed() }
func (shard *brickShard) Dispose() {
shard.sprite.Dispose()
}
func (shard *brickShard) Update(delta float64) {
shard.pos = shard.pos.Add(shard.velocity.Mulf(delta))
shard.sprite.SetAlpha(shard.sprite.GetAlpha() - float32(delta))
if shard.sprite.GetAlpha() < 0.2 {
shard.Dispose()
}
}