-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathevent.fs
50 lines (42 loc) · 1.09 KB
/
event.fs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
\ RilouwShell 0.1.0
\ Copyright (c) 2019 Jerome Martin
\ Released under the terms of the GNU GPL version 3
\ http://rilouw.eu/project/rilouwshell
0 value quit?
create tmp-event sdl-event% %allot drop
: update-mouse ( -- )
mouse-x mouse-y sdl-get-mouse-state mouse-buttons !
;
: update-clicked ( mouse-down? -- )
if
hovered-element to clicked-element
else
clicked-element hovered-element =
if clicked-element click-element then
reset-clicked
then
;
: process-input ( machine -- )
machine-state @ state-page @ >r
begin
tmp-event sdl-poll-event \ while there is an event
while
tmp-event sdl-event-type c@
case
SDL_KEYDOWN of
tmp-event sdl-event-key sdl-keysym-sym uw@
case
SDLK_ESCAPE of true to quit? endof
SDLK_q of true to quit? endof
endcase
endof
SDL_MOUSEMOTION of
update-mouse
r@ update-focus
endof
SDL_MOUSEBUTTONUP of update-mouse false update-clicked endof
SDL_MOUSEBUTTONDOWN of update-mouse true update-clicked endof
endcase
repeat
r> drop
;