-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathentity.go
53 lines (45 loc) · 981 Bytes
/
entity.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main
import (
"image/color"
"github.com/faiface/pixel"
"golang.org/x/image/colornames"
)
type Entity struct {
Sprite *pixel.Sprite
Pos pixel.Vec
ScaleXY pixel.Vec
Angle float64
Color color.RGBA
Collider *pixel.Rect
Active bool // whether it should be updated
Visible bool // whether it should be drawn
}
func (e *Entity) AbsCollider() pixel.Rect {
return e.Collider.Moved(e.Pos)
}
func NewEntity(sprite *pixel.Sprite, pos pixel.Vec) *Entity {
e := &Entity{
Sprite: sprite,
Pos: pos,
ScaleXY: pixel.V(1, 1),
Angle: 0,
Color: colornames.White,
Active: true,
Visible: true,
}
return e
}
func (e *Entity) Draw(t pixel.Target) {
if e.Visible {
m := pixel.IM.ScaledXY(pixel.ZV, e.ScaleXY).Rotated(pixel.ZV, e.Angle).Moved(e.Pos)
e.Sprite.DrawColorMask(t, m, e.Color)
}
}
func (e *Entity) Deactivate() {
e.Active = false
e.Visible = false
}
func (e *Entity) Activate() {
e.Active = true
e.Visible = true
}