zworld/plugins/system/input/mouse/statemap.go
2024-01-14 22:56:06 +08:00

35 lines
477 B
Go

package mouse
type State interface {
Handler
Down(Button) bool
Up(Button) bool
}
type state map[Button]bool
func NewState() State {
return state{}
}
func (s state) MouseEvent(e Event) {
if e.Action() == Press {
s[e.Button()] = true
}
if e.Action() == Release {
s[e.Button()] = false
}
}
func (s state) Down(key Button) bool {
if state, stored := s[key]; stored {
return state
}
return false
}
func (s state) Up(key Button) bool {
return !s.Down(key)
}