Show More
@@ -1,6 +1,7 b'' | |||||
1 |
|
1 | |||
2 | * Special locations |
|
2 | * Special locations | |
3 | * Special variables |
|
3 | * Special variables | |
|
4 | * IMG | |||
4 | * CLI build for Linux |
|
5 | * CLI build for Linux | |
5 | * CLI build for Windows |
|
6 | * CLI build for Windows | |
6 |
|
7 |
@@ -21,3 +21,6 b'' | |||||
21 | <div id="qsp-image-container" class="center-on-screen"> |
|
21 | <div id="qsp-image-container" class="center-on-screen"> | |
22 | <img id="qsp-image"> |
|
22 | <img id="qsp-image"> | |
23 | </div> |
|
23 | </div> | |
|
24 | ||||
|
25 | <style id="qsp-style"> | |||
|
26 | </style> |
@@ -35,6 +35,9 b'' | |||||
35 |
|
35 | |||
36 | #qsp-main { |
|
36 | #qsp-main { | |
37 | flex: 6 6 60px; |
|
37 | flex: 6 6 60px; | |
|
38 | background-repeat: no-repeat; | |||
|
39 | background-position: right top; | |||
|
40 | background-attachment: fixed; | |||
38 | } |
|
41 | } | |
39 |
|
42 | |||
40 | #qsp-acts { |
|
43 | #qsp-acts { |
@@ -14,8 +14,11 b'' | |||||
14 | ,@body |
|
14 | ,@body | |
15 | (pop-local-frame)))) |
|
15 | (pop-local-frame)))) | |
16 |
|
16 | |||
|
17 | (defpsmacro href-call (func &rest args) | |||
|
18 | `(+ "javascript:" (inline-call ,func ,@args))) | |||
|
19 | ||||
17 | (defpsmacro inline-call (func &rest args) |
|
20 | (defpsmacro inline-call (func &rest args) | |
18 |
`(+ |
|
21 | `(+ ,func | |
19 | "(\"" |
|
22 | "(\"" | |
20 | ,(first args) |
|
23 | ,(first args) | |
21 | ,@(loop :for arg :in (cdr args) |
|
24 | ,@(loop :for arg :in (cdr args) | |
@@ -32,3 +35,12 b'' | |||||
32 | (resolve))))) |
|
35 | (resolve))))) | |
33 | ,@body)))) |
|
36 | ,@body)))) | |
34 |
|
37 | |||
|
38 | (defvar serv-vars (create)) | |||
|
39 | ||||
|
40 | (defpsmacro define-serv-var (name (slot value &optional index) &body body) | |||
|
41 | (setf name (string-upcase (symbol-name name))) | |||
|
42 | `(setf (getprop serv-vars name) | |||
|
43 | (create :name ,name | |||
|
44 | :slot ,slot | |||
|
45 | :body (lambda (,value ,@(when index (list index))) | |||
|
46 | ,@body)))) |
@@ -9,17 +9,25 b'' | |||||
9 | ;;; Utils |
|
9 | ;;; Utils | |
10 |
|
10 | |||
11 | (defun make-act-html (title img) |
|
11 | (defun make-act-html (title img) | |
12 |
(+ "<a class='qsp-act' href='" (inline-call |
|
12 | (+ "<a class='qsp-act' href='" (href-call call-act title) "' onmouseover='" (inline-call select-act title) "'>" | |
13 | (if img (+ "<img src='" img "'>") "") |
|
13 | (if img (+ "<img src='" img "'>") "") | |
14 | title |
|
14 | title | |
15 | "</a>")) |
|
15 | "</a>")) | |
16 |
|
16 | |||
17 | (defun make-menu-item-html (num title img loc) |
|
17 | (defun make-menu-item-html (num title img loc) | |
18 |
(+ "<a href='" ( |
|
18 | (+ "<a href='" (href-call finish-menu loc) "'>" | |
19 | (if img (+ "<img src='" img "'>") "") |
|
19 | (if img (+ "<img src='" img "'>") "") | |
20 | title |
|
20 | title | |
21 | "</a>")) |
|
21 | "</a>")) | |
22 |
|
22 | |||
|
23 | (defun make-obj (title img selected) | |||
|
24 | (+ "<li>" | |||
|
25 | "<a href='" (href-call select-obj title img) "'" | |||
|
26 | "class='qsp-obj" (if selected " qsp-obj-selected" "") "'>" | |||
|
27 | (if img (+ "<img src='" img "'>") "") | |||
|
28 | obj | |||
|
29 | "</a>")) | |||
|
30 | ||||
23 | (defun make-menu-delimiter () |
|
31 | (defun make-menu-delimiter () | |
24 | "<hr>") |
|
32 | "<hr>") | |
25 |
|
33 | |||
@@ -46,7 +54,9 b'' | |||||
46 | (setf (@ btn href) "#")) |
|
54 | (setf (@ btn href) "#")) | |
47 | ;; Close image on click |
|
55 | ;; Close image on click | |
48 | (setf (@ (by-id "qsp-image-container") onclick) |
|
56 | (setf (@ (by-id "qsp-image-container") onclick) | |
49 |
|
|
57 | show-image) | |
|
58 | (setf (@ (get-frame :input) onkeyup) | |||
|
59 | on-input-key) | |||
50 | ;; Close the dropdown on any click |
|
60 | ;; Close the dropdown on any click | |
51 | (setf (@ window onclick) |
|
61 | (setf (@ window onclick) | |
52 | (lambda (event) |
|
62 | (lambda (event) | |
@@ -60,7 +70,7 b'' | |||||
60 | (when loc-name |
|
70 | (when loc-name | |
61 | (let ((loc (getprop (root locs) loc-name))) |
|
71 | (let ((loc (getprop (root locs) loc-name))) | |
62 | (when loc |
|
72 | (when loc | |
63 |
( |
|
73 | (call-loc loc-name args)))))) | |
64 |
|
74 | |||
65 | (defun filename-game (filename) |
|
75 | (defun filename-game (filename) | |
66 | (let ((game-name (chain filename (match "(.*/)?([^.]+)(\\.[a-zA-Z]+)?") 2)))) |
|
76 | (let ((game-name (chain filename (match "(.*/)?([^.]+)(\\.[a-zA-Z]+)?") 2)))) | |
@@ -102,6 +112,11 b'' | |||||
102 | (when contents |
|
112 | (when contents | |
103 | (incf (inner-html (by-id id)) (prepare-contents contents force-html)))) |
|
113 | (incf (inner-html (by-id id)) (prepare-contents contents force-html)))) | |
104 |
|
114 | |||
|
115 | (defun on-input-key (ev) | |||
|
116 | (when (= 13 (@ ev key-code)) | |||
|
117 | (chain ev (prevent-default)) | |||
|
118 | (call-serv-loc "USERCOM"))) | |||
|
119 | ||||
105 | ;;; Function calls |
|
120 | ;;; Function calls | |
106 |
|
121 | |||
107 | (defun init-args (args) |
|
122 | (defun init-args (args) | |
@@ -120,16 +135,17 b'' | |||||
120 | (setf name (chain name (to-upper-case))) |
|
135 | (setf name (chain name (to-upper-case))) | |
121 | (with-frame |
|
136 | (with-frame | |
122 | (with-call-args args |
|
137 | (with-call-args args | |
123 |
(funcall (getprop (root locs) name) |
|
138 | (funcall (getprop (root locs) name))))) | |
124 |
|
139 | |||
125 | (defun call-act (title) |
|
140 | (defun call-act (title) | |
126 | (with-frame |
|
141 | (with-frame | |
127 |
(funcall (getprop (root acts) title |
|
142 | (funcall (getprop (root acts) title :act)))) | |
128 |
|
143 | |||
129 | ;;; Text windows |
|
144 | ;;; Text windows | |
130 |
|
145 | |||
131 | (defun key-to-id (key) |
|
146 | (defun key-to-id (key) | |
132 | (case key |
|
147 | (case key | |
|
148 | (:all "qsp") | |||
133 | (:main "qsp-main") |
|
149 | (:main "qsp-main") | |
134 | (:stat "qsp-stat") |
|
150 | (:stat "qsp-stat") | |
135 | (:objs "qsp-objs") |
|
151 | (:objs "qsp-objs") | |
@@ -160,7 +176,7 b'' | |||||
160 |
|
176 | |||
161 | (defun add-act (title img act) |
|
177 | (defun add-act (title img act) | |
162 | (setf (getprop (root acts) title) |
|
178 | (setf (getprop (root acts) title) | |
163 | (create img img act act)) |
|
179 | (create :title title :img img :act act :selected nil)) | |
164 | (update-acts)) |
|
180 | (update-acts)) | |
165 |
|
181 | |||
166 | (defun del-act (title) |
|
182 | (defun del-act (title) | |
@@ -169,7 +185,7 b'' | |||||
169 |
|
185 | |||
170 | (defun clear-act () |
|
186 | (defun clear-act () | |
171 | (setf (root acts) (create)) |
|
187 | (setf (root acts) (create)) | |
172 | (clear-id "qsp-acts")) |
|
188 | (update-acts)) | |
173 |
|
189 | |||
174 | (defun update-acts () |
|
190 | (defun update-acts () | |
175 | (clear-id "qsp-acts") |
|
191 | (clear-id "qsp-acts") | |
@@ -178,6 +194,11 b'' | |||||
178 | (let ((obj (getprop (root acts) title))) |
|
194 | (let ((obj (getprop (root acts) title))) | |
179 | (incf (inner-html elt) (make-act-html title (getprop obj :img))))))) |
|
195 | (incf (inner-html elt) (make-act-html title (getprop obj :img))))))) | |
180 |
|
196 | |||
|
197 | (defun select-act (title) | |||
|
198 | (loop :for (k v) :of (root acts) | |||
|
199 | (setf (getprop v :selected) nil)) | |||
|
200 | (setf (getprop (root acts) title :selected) t) | |||
|
201 | (call-serv-loc "ONACTSEL")) | |||
181 |
|
202 | |||
182 | ;;; "Syntax" |
|
203 | ;;; "Syntax" | |
183 |
|
204 | |||
@@ -193,9 +214,9 b'' | |||||
193 |
|
214 | |||
194 | (defun *var (name) |
|
215 | (defun *var (name) | |
195 | ;; From strings to numbers |
|
216 | ;; From strings to numbers | |
196 | (setf (@ this indexes) (create)) |
|
217 | (setf (@ this :indexes) (create)) | |
197 | ;; From numbers to {num: 0, str: ""} objects |
|
218 | ;; From numbers to {num: 0, str: ""} objects | |
198 | (setf (@ this values) (list)) |
|
219 | (setf (@ this :values) (list)) | |
199 | (void)) |
|
220 | (void)) | |
200 |
|
221 | |||
201 | (defun new-value () |
|
222 | (defun new-value () | |
@@ -205,39 +226,39 b'' | |||||
205 | (lambda (index) |
|
226 | (lambda (index) | |
206 | (let ((num-index |
|
227 | (let ((num-index | |
207 | (if (stringp index) |
|
228 | (if (stringp index) | |
208 | (if (in index (@ this indexes)) |
|
229 | (if (in index (@ this :indexes)) | |
209 | (getprop (@ this indexes) index) |
|
230 | (getprop (@ this :indexes) index) | |
210 | (let ((n (length (@ this values)))) |
|
231 | (let ((n (length (@ this :values)))) | |
211 | (setf (getprop (@ this indexes) index) n) |
|
232 | (setf (getprop (@ this :indexes) index) n) | |
212 | n)) |
|
233 | n)) | |
213 | index))) |
|
234 | index))) | |
214 | (unless (in num-index (@ this values)) |
|
235 | (unless (in num-index (@ this :values)) | |
215 | (setf (elt (@ this values) num-index) (new-value))) |
|
236 | (setf (elt (@ this :values) num-index) (new-value))) | |
216 | num-index))) |
|
237 | num-index))) | |
217 |
|
238 | |||
218 | (setf (@ *var prototype get) |
|
239 | (setf (@ *var prototype get) | |
219 | (lambda (index slot) |
|
240 | (lambda (index slot) | |
220 | (unless (or index (= 0 index)) |
|
241 | (unless (or index (= 0 index)) | |
221 | (setf index (1- (length (@ this values))))) |
|
242 | (setf index (1- (length (@ this :values))))) | |
222 | (getprop (@ this values) (chain this (index-num index)) slot))) |
|
243 | (getprop (@ this :values) (chain this (index-num index)) slot))) | |
223 |
|
244 | |||
224 | (setf (@ *var prototype set) |
|
245 | (setf (@ *var prototype set) | |
225 | (lambda (index slot value) |
|
246 | (lambda (index slot value) | |
226 | (unless (or index (= 0 index)) |
|
247 | (unless (or index (= 0 index)) | |
227 | (setf index (length (@ this values)))) |
|
248 | (setf index (length (@ this :values)))) | |
228 | (case slot |
|
249 | (case slot | |
229 | (:num (setf value (chain *number (parse-int value)))) |
|
250 | (:num (setf value (chain *number (parse-int value)))) | |
230 | (:str (setf value (chain value (to-string))))) |
|
251 | (:str (setf value (chain value (to-string))))) | |
231 | (setf (getprop (@ this values) |
|
252 | (setf (getprop (@ this :values) | |
232 | (chain this (index-num index)) |
|
253 | (chain this (index-num index)) | |
233 | slot) value) |
|
254 | slot) value) | |
234 | (void))) |
|
255 | (void))) | |
235 |
|
256 | |||
236 | (setf (@ *var prototype kill) |
|
257 | (setf (@ *var prototype kill) | |
237 | (lambda (index) |
|
258 | (lambda (index) | |
238 | (setf (elt (@ this values) (chain this (index-num index))) |
|
259 | (setf (elt (@ this :values) (chain this (index-num index))) | |
239 | (new-value)) |
|
260 | (new-value)) | |
240 |
(delete (getprop 'this |
|
261 | (delete (getprop 'this :indexes index)))) | |
241 |
|
262 | |||
242 | ;;; Variables |
|
263 | ;;; Variables | |
243 |
|
264 | |||
@@ -267,17 +288,22 b'' | |||||
267 |
|
288 | |||
268 | (defun set-var (name index slot value) |
|
289 | (defun set-var (name index slot value) | |
269 | (chain (ensure-var name) (set index slot value)) |
|
290 | (chain (ensure-var name) (set index slot value)) | |
|
291 | (let ((serv-var (getprop serv-vars name))) | |||
|
292 | (when serv-var | |||
|
293 | (funcall (@ serv-var :func) | |||
|
294 | (get-var name index (@ serv-var :slot)) | |||
|
295 | index))) | |||
270 | (void)) |
|
296 | (void)) | |
271 |
|
297 | |||
272 | (defun get-array (name) |
|
298 | (defun get-array (name) | |
273 | (setf name (chain name (to-upper-case))) |
|
299 | (setf name (chain name (to-upper-case))) | |
274 |
(var |
|
300 | (ensure-var name)) | |
275 |
|
301 | |||
276 | (defun set-array (name value) |
|
302 | (defun set-array (name value) | |
277 | (setf name (chain name (to-upper-case))) |
|
303 | (setf name (chain name (to-upper-case))) | |
278 |
(let ((store (var |
|
304 | (let ((store (ensure-var name))) | |
279 | (setf (@ store values) (@ value values)) |
|
305 | (setf (@ store :values) (@ value :values)) | |
280 | (setf (@ store indexes) (@ value indexes))) |
|
306 | (setf (@ store :indexes) (@ value :indexes))) | |
281 | (void)) |
|
307 | (void)) | |
282 |
|
308 | |||
283 | (defun kill-var (name &optional index) |
|
309 | (defun kill-var (name &optional index) | |
@@ -288,7 +314,7 b'' | |||||
288 | (void)) |
|
314 | (void)) | |
289 |
|
315 | |||
290 | (defun array-size (name) |
|
316 | (defun array-size (name) | |
291 | (@ (var-ref name) values length)) |
|
317 | (@ (var-ref name) :values length)) | |
292 |
|
318 | |||
293 | ;;; Locals |
|
319 | ;;; Locals | |
294 |
|
320 | |||
@@ -311,11 +337,18 b'' | |||||
311 |
|
337 | |||
312 | ;;; Objects |
|
338 | ;;; Objects | |
313 |
|
339 | |||
|
340 | (defun select-obj (title img) | |||
|
341 | (loop :for (k v) :of (root objs) | |||
|
342 | (setf (getprop v :selected) nil)) | |||
|
343 | (setf (getprop (root objs) title :selected) t) | |||
|
344 | (call-serv-loc "ONOBJSEL" title img)) | |||
|
345 | ||||
314 | (defun update-objs () |
|
346 | (defun update-objs () | |
315 | (let ((elt (by-id "qsp-objs"))) |
|
347 | (let ((elt (by-id "qsp-objs"))) | |
316 | (setf (inner-html elt) "<ul>") |
|
348 | (setf (inner-html elt) "<ul>") | |
317 | (loop :for obj :in (root objs) |
|
349 | (loop :for obj :in (root objs) | |
318 |
:do (incf (inner-html elt) |
|
350 | :do (incf (inner-html elt) | |
|
351 | (make-obj obj))) | |||
319 | (incf (inner-html elt) "</ul>"))) |
|
352 | (incf (inner-html elt) "</ul>"))) | |
320 |
|
353 | |||
321 | ;;; Menu |
|
354 | ;;; Menu | |
@@ -378,6 +411,17 b'' | |||||
378 | (setf (@ img src) "") |
|
411 | (setf (@ img src) "") | |
379 | (setf (@ img style display) "hidden"))))) |
|
412 | (setf (@ img style display) "hidden"))))) | |
380 |
|
413 | |||
|
414 | (defun rgb-string (rgb) | |||
|
415 | (let ((red (rgb >> 16)) | |||
|
416 | (green (& (rgb >> 8) 255)) | |||
|
417 | (blue (& rgb 255))) | |||
|
418 | (flet ((rgb-to-hex (comp) | |||
|
419 | (let ((hex (chain (*number comp) (to-string 16)))) | |||
|
420 | (if (< (length hex) 2) | |||
|
421 | (+ "0" hex) | |||
|
422 | hex)))) | |||
|
423 | (+ "#" (rgb-to-hex red) (rgb-to-hex green) (rgb-to-hex red))))) | |||
|
424 | ||||
381 | ;;; Saves |
|
425 | ;;; Saves | |
382 |
|
426 | |||
383 | (defun opengame () |
|
427 | (defun opengame () | |
@@ -467,3 +511,18 b'' | |||||
467 | (lambda () |
|
511 | (lambda () | |
468 | (call-serv-loc "COUNTER")) |
|
512 | (call-serv-loc "COUNTER")) | |
469 | interval))) |
|
513 | interval))) | |
|
514 | ||||
|
515 | ;;; Special variables | |||
|
516 | ||||
|
517 | (define-serv-var backimage (:str path) | |||
|
518 | (setf (@ (get-frame :main) style background-image) path)) | |||
|
519 | ||||
|
520 | (define-serv-var bcolor (:num color) | |||
|
521 | (setf (@ (get-frame :all) style background-color) (rgb-string color))) | |||
|
522 | ||||
|
523 | (define-serv-var fcolor (:num color) | |||
|
524 | (setf (@ (get-frame :all) style color) (rgb-string color))) | |||
|
525 | ||||
|
526 | (define-serv-var lcolor (:num color) | |||
|
527 | (setf (@ (get-frame :style) inner-text) | |||
|
528 | (+ "a { color: " (rgb-string color) ";}"))) |
@@ -155,12 +155,6 b'' | |||||
155 |
|
155 | |||
156 | ;;; 21local |
|
156 | ;;; 21local | |
157 |
|
157 | |||
158 | (defpsmacro local (var &optional expr) |
|
|||
159 | `(progn |
|
|||
160 | (api-call new-local ,(string (second var))) |
|
|||
161 | ,@(when expr |
|
|||
162 | `((set ,var ,expr))))) |
|
|||
163 |
|
||||
164 | ;;; 22for |
|
158 | ;;; 22for | |
165 |
|
159 | |||
166 | ;;; misc |
|
160 | ;;; misc |
@@ -18,6 +18,7 b'' | |||||
18 | (setf (root current-location) (chain target (to-upper-case))) |
|
18 | (setf (root current-location) (chain target (to-upper-case))) | |
19 | (api:stash-state args) |
|
19 | (api:stash-state args) | |
20 | (api:call-loc (root current-location) args) |
|
20 | (api:call-loc (root current-location) args) | |
|
21 | (api:call-serv-loc "ONNEWLOC") | |||
21 | (void)) |
|
22 | (void)) | |
22 |
|
23 | |||
23 | ;;; 2var |
|
24 | ;;; 2var | |
@@ -142,7 +143,6 b'' | |||||
142 | (api:get-text :main) |
|
143 | (api:get-text :main) | |
143 | (void)) |
|
144 | (void)) | |
144 |
|
145 | |||
145 | ;; For clarity (it leaves a lib.desc() call in JS) |
|
|||
146 | (defun desc (s) |
|
146 | (defun desc (s) | |
147 | "") |
|
147 | "") | |
148 |
|
148 | |||
@@ -193,24 +193,31 b'' | |||||
193 |
|
193 | |||
194 | ;;; 15objs |
|
194 | ;;; 15objs | |
195 |
|
195 | |||
196 | (defun addobj (name) |
|
196 | (defun addobj (name img) | |
197 | (chain (root objs) (push name)) |
|
197 | (setf img (or img "")) | |
|
198 | (setf (getprop (root objs) name) | |||
|
199 | (create :name name :img img :selected nil)) | |||
198 | (api:update-objs) |
|
200 | (api:update-objs) | |
|
201 | (api-call call-serv-loc "ONOBJADD" name img) | |||
199 | (void)) |
|
202 | (void)) | |
200 |
|
203 | |||
201 | (defun delobj (name) |
|
204 | (defun delobj (name) | |
202 |
(let ( |
|
205 | (delete (getprop (root objs) name)) | |
203 | (when (> index -1) |
|
206 | (api-call call-serv-loc "ONOBJDEL" name) | |
204 | (killobj (1+ index)))) |
|
|||
205 | (void)) |
|
207 | (void)) | |
206 |
|
208 | |||
207 | (defun killobj (&optional (num nil)) |
|
209 | (defun killobj (&optional (num nil)) | |
208 | (if (eq nil num) |
|
210 | (if (eq nil num) | |
209 |
(setf (root objs) ( |
|
211 | (setf (root objs) (create)) | |
210 | (chain (root objs) (splice (1- num) 1))) |
|
212 | (delobj (elt (chain *object (keys (root objs))) num))) | |
211 | (api:update-objs) |
|
213 | (api:update-objs) | |
212 | (void)) |
|
214 | (void)) | |
213 |
|
215 | |||
|
216 | (defun selobj () | |||
|
217 | (loop :for (k v) :of (root objs) | |||
|
218 | :do (when (@ v :selected) | |||
|
219 | (return-from selobj (@ v :name))))) | |||
|
220 | ||||
214 | ;;; 16menu |
|
221 | ;;; 16menu | |
215 |
|
222 | |||
216 | (defun menu (menu-name) |
|
223 | (defun menu (menu-name) | |
@@ -286,12 +293,9 b'' | |||||
286 | ;;; misc |
|
293 | ;;; misc | |
287 |
|
294 | |||
288 | (defun rgb (red green blue) |
|
295 | (defun rgb (red green blue) | |
289 | (flet ((rgb-to-hex (comp) |
|
296 | (+ (<< red 16) | |
290 | (let ((hex (chain (*number comp) (to-string 16)))) |
|
297 | (<< green 8) | |
291 | (if (< (length hex) 2) |
|
298 | blue)) | |
292 | (+ "0" hex) |
|
|||
293 | hex)))) |
|
|||
294 | (+ "#" (rgb-to-hex red) (rgb-to-hex green) (rgb-to-hex red)))) |
|
|||
295 |
|
299 | |||
296 | (defun openqst (name) |
|
300 | (defun openqst (name) | |
297 | (api-call run-game name)) |
|
301 | (api-call run-game name)) |
@@ -12,7 +12,7 b'' | |||||
12 | (syms |
|
12 | (syms | |
13 | ;; main |
|
13 | ;; main | |
14 | window |
|
14 | window | |
15 | *object |
|
15 | *object assign | |
16 | now |
|
16 | now | |
17 | onload |
|
17 | onload | |
18 | keys includes |
|
18 | keys includes |
@@ -7,7 +7,7 b'' | |||||
7 | ;; Variables |
|
7 | ;; Variables | |
8 | vars (create) |
|
8 | vars (create) | |
9 | ;; Inventory (objects) |
|
9 | ;; Inventory (objects) | |
10 |
objs ( |
|
10 | objs (create) | |
11 | current-location nil |
|
11 | current-location nil | |
12 | ;; Game time |
|
12 | ;; Game time | |
13 | started-at (chain *date (now)) |
|
13 | started-at (chain *date (now)) |
@@ -40,7 +40,7 b'' | |||||
40 | (defpsmacro location ((name) &body body) |
|
40 | (defpsmacro location ((name) &body body) | |
41 | (declare (ignore name)) |
|
41 | (declare (ignore name)) | |
42 | "Name is used by the game macro above" |
|
42 | "Name is used by the game macro above" | |
43 |
`(async-lambda ( |
|
43 | `(async-lambda () | |
44 | (label-block () |
|
44 | (label-block () | |
45 | ,@body))) |
|
45 | ,@body))) | |
46 |
|
46 | |||
@@ -125,6 +125,9 b'' | |||||
125 | (getprop _labels ,(first rest-labels)))))))))) |
|
125 | (getprop _labels ,(first rest-labels)))))))))) | |
126 | (funcall (getprop _labels "_nil")))))) |
|
126 | (funcall (getprop _labels "_nil")))))) | |
127 |
|
127 | |||
|
128 | (defpsmacro exit () | |||
|
129 | '(return-from nil (values))) | |||
|
130 | ||||
128 | ;;; 10dynamic |
|
131 | ;;; 10dynamic | |
129 |
|
132 | |||
130 | (defpsmacro qspblock (&body body) |
|
133 | (defpsmacro qspblock (&body body) | |
@@ -160,6 +163,12 b'' | |||||
160 |
|
163 | |||
161 | ;;; 21local |
|
164 | ;;; 21local | |
162 |
|
165 | |||
|
166 | (defpsmacro local (var &optional expr) | |||
|
167 | `(progn | |||
|
168 | (api-call new-local ,(string (second var))) | |||
|
169 | ,@(when expr | |||
|
170 | `((set ,var ,expr))))) | |||
|
171 | ||||
163 | ;;; 22for |
|
172 | ;;; 22for | |
164 |
|
173 | |||
165 | (defpsmacro qspfor (var from to step &body body) |
|
174 | (defpsmacro qspfor (var from to step &body body) |
@@ -13,7 +13,6 b'' | |||||
13 | (:file "main-macros") |
|
13 | (:file "main-macros") | |
14 | (:file "ps-macros") |
|
14 | (:file "ps-macros") | |
15 | (:file "api-macros") |
|
15 | (:file "api-macros") | |
16 | (:file "intrinsic-macros") |
|
|||
17 | (:file "class") |
|
16 | (:file "class") | |
18 | (:file "main") |
|
17 | (:file "main") | |
19 | (:file "parser"))) |
|
18 | (:file "parser"))) |
General Comments 0
You need to be logged in to leave comments.
Login now