35 lines
477 B
Go
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)
|
|
}
|