-
Notifications
You must be signed in to change notification settings - Fork 0
/
flak.go
61 lines (49 loc) · 1.21 KB
/
flak.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
54
55
56
57
58
59
60
61
/*
Flak
----
appearance: orange bullet
damage: 2 bars (1 bar in training mode)
projectile speed: slow
The basic enemy weapon. Probably their version of your Twin Reaver Machine Guns
except way worse. Good thing too, otherwise you wouldn't be able to dodge it so
easily. Their bullets are much slower, and also bigger and easier to see.
*/
package main
var (
FlakDamage float64 = 2
FlakRate int64 = 40
FlakVelocity = &Vector{X: 0, Y: -4.0}
FlakSurface *Surface
FlakSize int16 = 5
)
type Flak struct {
position *Vector
velocity *Vector
shape *CircleShape
DrawablesId, ActorsId int64
}
func NewFlak(pos Vector) *Flak {
position := &pos
flak := &Flak{
position: position,
shape: NewCircleShape(position, FlakSize),
}
if FlakSurface == nil {
FlakSurface = CreateImage("gfx/flak.png")
}
Register(flak)
return flak
}
func (f *Flak) Draw() { Draw(FlakSurface, f.position) }
func (f *Flak) Act() {
f.position.Replace(f.position.Minus(FlakVelocity))
if f.position.Y > float64(Height) {
Unregister(f)
return
}
if f.shape.Collides(Player.shape) {
Player.TakeDamage(FlakDamage)
Unregister(f)
return
}
}