world --> network
This commit is contained in:
parent
2fa90c59b6
commit
1ab7475869
|
@ -11,7 +11,7 @@
|
|||
update-scene
|
||||
update-sprites
|
||||
spawn-keyboard-integrator
|
||||
2d-world)
|
||||
2d-network)
|
||||
|
||||
(require data/order)
|
||||
(require data/splay-tree)
|
||||
|
@ -30,13 +30,13 @@
|
|||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; Shared state maintained by world. Describes current window dimensions.
|
||||
;; Shared state maintained by network. Describes current window dimensions.
|
||||
(struct window (width height) #:transparent)
|
||||
|
||||
;; Message sent by world. Describes frame about to be rendered.
|
||||
;; Message sent by network. Describes frame about to be rendered.
|
||||
(struct frame-event (counter timestamp elapsed-ms target-frame-rate) #:transparent)
|
||||
|
||||
;; Message sent by world. Describes a key event. Key is a sealed
|
||||
;; Message sent by network. Describes a key event. Key is a sealed
|
||||
;; key-event%. `press?` is #t when the key is pressed (or
|
||||
;; autorepeated!), and #f when it is released.
|
||||
(struct key-event (code press? key) #:transparent)
|
||||
|
@ -214,7 +214,7 @@
|
|||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define world-canvas%
|
||||
(define network-canvas%
|
||||
(class canvas%
|
||||
(inherit refresh with-gl-context swap-gl-buffers)
|
||||
|
||||
|
@ -236,7 +236,7 @@
|
|||
(define postlude empty-instructions)
|
||||
(define fullscreen? #f)
|
||||
|
||||
(define world (make-world boot-actions))
|
||||
(define network (make-network boot-actions))
|
||||
(define event-queue (make-queue))
|
||||
|
||||
(define target-frame-rate 60)
|
||||
|
@ -259,7 +259,7 @@
|
|||
(enqueue! event-queue e))
|
||||
|
||||
(define (deliver-event e)
|
||||
(clean-transition (world-handle-event e world)))
|
||||
(clean-transition (network-handle-event e network)))
|
||||
|
||||
(define (quiesce!)
|
||||
(let loop ((txn #f) (need-poll? #t))
|
||||
|
@ -268,8 +268,8 @@
|
|||
(if (queue-empty? event-queue)
|
||||
(when need-poll? (loop (deliver-event #f) #f))
|
||||
(loop (deliver-event (dequeue! event-queue)) #t))]
|
||||
[(transition new-world actions)
|
||||
(set! world new-world)
|
||||
[(transition new-network actions)
|
||||
(set! network new-network)
|
||||
(for-each process-action! actions)
|
||||
(loop #f #t)])))
|
||||
|
||||
|
@ -370,19 +370,19 @@
|
|||
|
||||
(super-new (style '(gl no-autoclear)))))
|
||||
|
||||
(define (2d-world #:width [width #f]
|
||||
#:height [height #f]
|
||||
. boot-actions)
|
||||
(define (2d-network #:width [width #f]
|
||||
#:height [height #f]
|
||||
. boot-actions)
|
||||
(define frame (new frame%
|
||||
[style '(fullscreen-button)]
|
||||
[label "prospect-gl"]
|
||||
[width (or width 640)]
|
||||
[height (or height 480)]))
|
||||
(define c (new world-canvas%
|
||||
(define c (new network-canvas%
|
||||
[parent frame]
|
||||
[boot-actions boot-actions]))
|
||||
(unless (send (send (send c get-dc) get-gl-context) ok?)
|
||||
(error '2d-world "OpenGL context failed to initialize"))
|
||||
(error '2d-network "OpenGL context failed to initialize"))
|
||||
(send c focus)
|
||||
(send frame show #t)
|
||||
(yield 'wait))
|
||||
|
|
|
@ -77,20 +77,20 @@
|
|||
(void)
|
||||
(sub (frame-event ? ? ? ?) #:meta-level 1)))
|
||||
|
||||
(2d-world (spawn-keyboard-integrator)
|
||||
(spawn-background)
|
||||
;; (spawn-frame-counter)
|
||||
(spawn-player-avatar)
|
||||
(spawn (lambda (e s) #f)
|
||||
(void)
|
||||
(update-sprites (simple-sprite 0 50 50 50 50 (circle 50 "solid" "orange"))
|
||||
(simple-sprite -1 60 60 50 50 (circle 50 "solid" "green"))))
|
||||
(spawn (lambda (e s)
|
||||
(match e
|
||||
[(message _)
|
||||
(transition s (assert 'stop #:meta-level 1))]
|
||||
[_ #f]))
|
||||
(void)
|
||||
(sub (key-event #\q #t ?) #:meta-level 1))
|
||||
)
|
||||
(2d-network (spawn-keyboard-integrator)
|
||||
(spawn-background)
|
||||
;; (spawn-frame-counter)
|
||||
(spawn-player-avatar)
|
||||
(spawn (lambda (e s) #f)
|
||||
(void)
|
||||
(update-sprites (simple-sprite 0 50 50 50 50 (circle 50 "solid" "orange"))
|
||||
(simple-sprite -1 60 60 50 50 (circle 50 "solid" "green"))))
|
||||
(spawn (lambda (e s)
|
||||
(match e
|
||||
[(message _)
|
||||
(transition s (assert 'stop #:meta-level 1))]
|
||||
[_ #f]))
|
||||
(void)
|
||||
(sub (key-event #\q #t ?) #:meta-level 1))
|
||||
)
|
||||
(exit 0)
|
||||
|
|
Loading…
Reference in New Issue