diff --git a/examples/blocks/blocks/input.go b/examples/blocks/blocks/input.go index 8a5e1721e..e83e202bd 100644 --- a/examples/blocks/blocks/input.go +++ b/examples/blocks/blocks/input.go @@ -27,13 +27,16 @@ var gamepadAbstractButtons = []abstractButton{ } type Input struct { - keyStates [256]int + keyStates map[ebiten.Key]int gamepadButtonStates map[ebiten.GamepadButton]int gamepadAbstractButtonStates map[abstractButton]int gamepadConfig gamepadConfig } func (i *Input) StateForKey(key ebiten.Key) int { + if i.keyStates == nil { + return 0 + } return i.keyStates[key] } @@ -52,7 +55,10 @@ func (i *Input) stateForGamepadAbstractButton(b abstractButton) int { } func (i *Input) Update() { - for key := range i.keyStates { + if i.keyStates == nil { + i.keyStates = map[ebiten.Key]int{} + } + for key := ebiten.Key(0); key <= ebiten.KeyMax; key++ { if !ebiten.IsKeyPressed(ebiten.Key(key)) { i.keyStates[key] = 0 continue diff --git a/genkeys.go b/genkeys.go index 25569d17c..a2dbc1b16 100644 --- a/genkeys.go +++ b/genkeys.go @@ -88,7 +88,7 @@ type Key int // Keys const ( {{range $index, $name := .KeyNames}}Key{{$name}} = Key(ui.Key{{$name}}) -{{end}} +{{end}} KeyMax = Key{{.LastKeyName}} ) ` @@ -279,6 +279,7 @@ func main() { "KeyCodeToName": keyCodeToName, "Codes": codes, "KeyNames": names, + "LastKeyName": names[len(names)-1], "KeyNamesWithoutMods": namesWithoutMods, }); err != nil { log.Fatal(err) diff --git a/keys.go b/keys.go index 6af318954..1be69375a 100644 --- a/keys.go +++ b/keys.go @@ -94,4 +94,5 @@ const ( KeySpace = Key(ui.KeySpace) KeyTab = Key(ui.KeyTab) KeyUp = Key(ui.KeyUp) + KeyMax = KeyUp )