/
input.go
43 lines (38 loc) · 816 Bytes
/
input.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
package tank
import (
"github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/inpututil"
)
type Input struct {
keyPress map[ebiten.Key]func()
keyNotPress map[ebiten.Key]func()
keyRelease map[ebiten.Key]func()
}
func NewInput() *Input {
return &Input{
keyPress: map[ebiten.Key]func(){},
//keyNotPress: map[ebiten.Key]func(){},
keyRelease: map[ebiten.Key]func(){},
}
}
func (i *Input) Register(key ebiten.Key, press func(), release func()) { //, neg func()) {
if press != nil {
i.keyPress[key] = press
}
if release != nil {
i.keyRelease[key] = release
}
//i.keyNotPress[key] = neg
}
func (i *Input) Update() {
for k, f := range i.keyPress {
if ebiten.IsKeyPressed(k) {
f()
}
}
for k, f := range i.keyRelease {
if inpututil.IsKeyJustReleased(k) {
f()
}
}
}