Files
survive/touch/touch.go
2024-11-13 07:44:56 -05:00

52 lines
1.5 KiB
Go

package touch
import (
"github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/inpututil"
"golang.org/x/exp/maps"
)
var (
allTouchIDs []ebiten.TouchID
currentTouchIDs map[ebiten.TouchID]bool
justPressedTouchIDs map[ebiten.TouchID]bool
justReleasedTouchIDs map[ebiten.TouchID]bool
)
func UpdateTouchIDs() {
newPressedTouchIDs := []ebiten.TouchID{}
newPressedTouchIDs = inpututil.AppendJustPressedTouchIDs(newPressedTouchIDs)
justPressedTouchIDs = map[ebiten.TouchID]bool{}
for i := 0; i < len(newPressedTouchIDs); i++ {
justPressedTouchIDs[newPressedTouchIDs[i]] = true
currentTouchIDs[newPressedTouchIDs[i]] = true
}
justReleasedTouchIDs = map[ebiten.TouchID]bool{}
allTouchIDs = maps.Keys(currentTouchIDs)
newReleasedTouchIDs := []ebiten.TouchID{}
newReleasedTouchIDs = inpututil.AppendJustReleasedTouchIDs(newReleasedTouchIDs)
for i := 0; i < len(newReleasedTouchIDs); i++ {
justReleasedTouchIDs[newReleasedTouchIDs[i]] = true
delete(currentTouchIDs, newReleasedTouchIDs[i])
}
}
func GetTouchIDs() []ebiten.TouchID {
return allTouchIDs
}
func IsTouchJustPressed(touchID ebiten.TouchID) bool {
return justPressedTouchIDs[touchID]
}
func IsTouchJustReleased(touchID ebiten.TouchID) bool {
return justReleasedTouchIDs[touchID]
}
func init() {
allTouchIDs = []ebiten.TouchID{}
currentTouchIDs = map[ebiten.TouchID]bool{}
justPressedTouchIDs = map[ebiten.TouchID]bool{}
justReleasedTouchIDs = map[ebiten.TouchID]bool{}
}