84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
package modes
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
"github.com/hajimehoshi/ebiten/v2/inpututil"
|
|
)
|
|
|
|
func justPressedKeys() []ebiten.Key {
|
|
var keys []ebiten.Key
|
|
keys = inpututil.AppendJustPressedKeys(keys)
|
|
return keys
|
|
}
|
|
|
|
func childKey(key ebiten.Key) bool {
|
|
switch key {
|
|
case ebiten.KeyControl, ebiten.KeyControlLeft, ebiten.KeyControlRight,
|
|
ebiten.KeyShift, ebiten.KeyShiftLeft, ebiten.KeyShiftRight,
|
|
ebiten.KeyAlt, ebiten.KeyAltLeft, ebiten.KeyAltRight,
|
|
ebiten.KeyMeta, ebiten.KeyEscape,
|
|
ebiten.KeyF1, ebiten.KeyF2, ebiten.KeyF3, ebiten.KeyF4,
|
|
ebiten.KeyF5, ebiten.KeyF6, ebiten.KeyF7, ebiten.KeyF8,
|
|
ebiten.KeyF9, ebiten.KeyF10, ebiten.KeyF11, ebiten.KeyF12:
|
|
return false
|
|
default:
|
|
return true
|
|
}
|
|
}
|
|
|
|
func keyLabel(key ebiten.Key) string {
|
|
if r, ok := keyRune(key); ok {
|
|
return string(r)
|
|
}
|
|
switch key {
|
|
case ebiten.KeySpace:
|
|
return "SPACE"
|
|
case ebiten.KeyEnter, ebiten.KeyNumpadEnter:
|
|
return "ENTER"
|
|
case ebiten.KeyBackspace:
|
|
return "BKSP"
|
|
case ebiten.KeyDelete:
|
|
return "DEL"
|
|
case ebiten.KeyTab:
|
|
return "TAB"
|
|
case ebiten.KeyArrowLeft:
|
|
return "LEFT"
|
|
case ebiten.KeyArrowRight:
|
|
return "RIGHT"
|
|
case ebiten.KeyArrowUp:
|
|
return "UP"
|
|
case ebiten.KeyArrowDown:
|
|
return "DOWN"
|
|
default:
|
|
return key.String()
|
|
}
|
|
}
|
|
|
|
func keyRune(key ebiten.Key) (rune, bool) {
|
|
if key >= ebiten.KeyA && key <= ebiten.KeyZ {
|
|
return rune('A' + int(key-ebiten.KeyA)), true
|
|
}
|
|
if key >= ebiten.KeyDigit0 && key <= ebiten.KeyDigit9 {
|
|
return rune('0' + int(key-ebiten.KeyDigit0)), true
|
|
}
|
|
if key >= ebiten.KeyNumpad0 && key <= ebiten.KeyNumpad9 {
|
|
return rune('0' + int(key-ebiten.KeyNumpad0)), true
|
|
}
|
|
return 0, false
|
|
}
|
|
|
|
func digitValue(key ebiten.Key) (string, bool) {
|
|
r, ok := keyRune(key)
|
|
if !ok || r < '0' || r > '9' {
|
|
return "", false
|
|
}
|
|
return string(r), true
|
|
}
|
|
|
|
func parseDigit(s string) int {
|
|
v, _ := strconv.Atoi(s)
|
|
return v
|
|
}
|