]> gitweb.factorcode.org Git - factor.git/blob - extra/raylib/demo/demo.factor
classes.struct: moving to new/boa instead of <struct>/<struct-boa>
[factor.git] / extra / raylib / demo / demo.factor
1 ! Copyright (C) 2019 Jack Lucas
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien.enums classes.struct combinators kernel
4 math namespaces raylib ;
5 IN: raylib.demo
6
7 : say-hello ( -- )
8     "Hello, Factor!" 200 400 60 MAGENTA draw-text ;
9
10 : make-window ( -- )
11     640 480 "Hello, Factor!" init-window
12     60 set-target-fps ;
13
14 : clear-window ( -- )
15     RAYWHITE clear-background  ;
16
17 ! Save our players position in a dynamic var
18 SYMBOL: player
19
20 : show-player-circle ( -- )
21     player get
22     25.0 RED draw-circle-v ;
23
24 : setup-game-vars ( -- )
25     get-screen-width 2 /
26     get-screen-height 2 /
27     Vector2 boa player set ;
28
29 ! Make this cleaner
30 : change-player-position ( -- )
31     player get {
32         { [ KEY_RIGHT is-key-down ] [ [  2.0 + ] change-x ] }
33         { [ KEY_LEFT  is-key-down ] [ [ -2.0 + ] change-x ] }
34         { [ KEY_DOWN  is-key-down ] [ [  2.0 + ] change-y ] }
35         { [ KEY_UP    is-key-down ] [ [ -2.0 + ] change-y ] }
36         [ ]
37     } cond drop ;
38
39 : render-loop ( -- )
40     begin-drawing
41     clear-window show-player-circle say-hello
42     end-drawing ;
43
44 : main ( -- )
45     make-window clear-window setup-game-vars
46     [
47         change-player-position
48         render-loop
49         window-should-close not
50     ] loop close-window ;
51
52 MAIN: main