Skip to content

Commit 4d626a1

Browse files
committed
Add login window
1 parent e395466 commit 4d626a1

File tree

4 files changed

+53
-13
lines changed

4 files changed

+53
-13
lines changed

Diff for: client/src/events.lisp

+3
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,6 @@
4343

4444
(defevent trigger-pulled ()
4545
(player))
46+
47+
48+
(defevent exit-requested () ())

Diff for: client/src/main.lisp

+24-13
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,17 @@
7777

7878

7979
(defun scenegraph-flow ()
80-
(scenegraph
81-
(transform-node
82-
((projection-node :aspect (/ 800 600))
83-
((player-camera :name :camera)
84-
(room-model)
85-
((scene-node :name :ball-group))
86-
((scene-node :name :dude-group)))))))
80+
(>> (resource-flow (font-resource-name "NotoSansUI-Regular.ttf"))
81+
(->> (font)
82+
(scenegraph
83+
(transform-node
84+
((scene-node :name :arena)
85+
((projection-node :aspect (/ 800 600))
86+
((player-camera :name :camera)
87+
(room-model)
88+
((scene-node :name :ball-group))
89+
((scene-node :name :dude-group)))))
90+
((interactive-board-node :width 800 :height 600 :font font :name :ui)))))))
8791

8892

8993
(defmethod dispatch ((this mortar-combat) (task function) invariant &key)
@@ -112,7 +116,9 @@
112116
'game-state-updated
113117
'camera-rotated
114118
'movement-changed
115-
'trigger-pulled)
119+
'trigger-pulled
120+
'button-click-event
121+
'exit-requested)
116122
(setf keymap (make-instance 'keymap)
117123
task-queue (make-task-queue))
118124
(let ((prev-x nil)
@@ -168,7 +174,6 @@
168174
(enable-keymap keymap)
169175

170176
(run (>> (-> ((host)) ()
171-
(lock-cursor)
172177
(setf (viewport-title) "Mortar Combat")
173178
(setf (viewport-size) (vec2 800 600)))
174179
(-> ((physics)) ()
@@ -179,8 +184,9 @@
179184
(instantly (scenegraph-root)
180185
(setf scene (make-scene (make-pass-chain (make-simulation-pass)
181186
(make-rendering-pass))
182-
scenegraph-root)))
183-
(concurrently ()
187+
scenegraph-root))
188+
(let ((board (find-node (root-of scene) :ui)))
189+
(make-ui this board))
184190
(let ((accumulated-time 0)
185191
start looped-flow)
186192
(setf looped-flow
@@ -220,10 +226,15 @@
220226

221227

222228
(defun stop ()
223-
(shutdown))
229+
(shutdown)
230+
(mt:open-latch *main-latch* ))
224231

225232

226-
(define-event-handler on-exit viewport-hiding-event (ev)
233+
(define-event-handler on-close viewport-hiding-event (ev)
234+
(post (make-exit-requested) (events)))
235+
236+
237+
(define-event-handler on-exit exit-requested (ev)
227238
(in-new-thread "exit-thread"
228239
(stop)))
229240

Diff for: client/src/ui.lisp

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
(in-package :mortar-combat)
2+
3+
4+
(defun make-ui (context board)
5+
(enable-mouse-input board)
6+
(enable-character-input board)
7+
(enable-cursor-input board)
8+
(enable-keyboard-input board)
9+
(let ((login (make-board-window board 300 200 200 145
10+
:title "Enter your name:"
11+
:headerless nil)))
12+
(adopt-layout-by (login)
13+
((dynamic-row-layout 32)
14+
((text-edit :name :nickname)))
15+
((static-row-layout 16 1))
16+
((dynamic-row-layout 32)
17+
((label-button "Quit" :name :quit))
18+
((spacing))
19+
((label-button "Log in" :name :login))))
20+
21+
(let ((nickname-edit (find-element login :nickname)))
22+
(subscribe-body-to (button-click-event (poiu-button)) (events)
23+
(case (name-of poiu-button)
24+
(:login (connect (text-of nickname-edit)))
25+
(:quit (post (make-exit-requested) (events))))))))

Diff for: mortar-combat.asd

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
(:file "connector")
4444
(:file "game-server")
4545
(:file "game-client")
46+
(:file "ui")
4647
(:file "main")))
4748

4849

0 commit comments

Comments
 (0)