diff options
Diffstat (limited to 'events/events.go')
| -rw-r--r-- | events/events.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/events/events.go b/events/events.go new file mode 100644 index 0000000..6783703 --- /dev/null +++ b/events/events.go @@ -0,0 +1,43 @@ +package events + +type DeviceID int + +type MouseMotion struct { + Which DeviceID + Dx, Dy float32 + Delta uint64 +} + +type MousePress struct { + Delta uint64 + Key uint8 + Which DeviceID + JustPressed, JustReleased, IsPressed bool +} + +type WindowChange struct { + Height, Width int32 +} + +type KeyPress struct { + Delta uint64 + Key string + Which DeviceID + JustPressed, JustReleased, IsPressed bool +} + +type Event interface { + KeyPress | WindowChange | MousePress | MouseMotion +} + +type Events []any + +func OfType[T Event](events ...any) []T { + var result []T + for _, e := range events { + if eT, ok := e.(T); ok { + result = append(result, eT) + } + } + return result +} |
