Show More
@@ -1,7 +1,7 b'' | |||||
1 |
|
1 | |||
2 | # start |
|
2 | # start | |
3 | USEHTML=1 |
|
3 | USEHTML=1 | |
4 |
BCOLOR = RGB(2 |
|
4 | BCOLOR = RGB(200, 200, 200) | |
5 | '<center><font size="20" color="#FF0000" face="Times New Roman"><b>Π’Π΅ΠΊΡΡΠΎΠ²ΡΠΉ ΠΊΠ²Π΅ΡΡ</b></font></center><br>' |
|
5 | '<center><font size="20" color="#FF0000" face="Times New Roman"><b>Π’Π΅ΠΊΡΡΠΎΠ²ΡΠΉ ΠΊΠ²Π΅ΡΡ</b></font></center><br>' | |
6 | ' <b>ΠΠ°ΡΠ° ΡΠ΅Π»Ρ</b> - Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ <i>Π΄Π΅Π½ΡΠ³ΠΈ</i>, ΠΏΠΎΠΊΡΠΏΠ°ΡΡ Π½Π° Π½ΠΈΡ <i>ΠΏΠΎΠ΄Π°ΡΠΊΠΈ</i> ΠΈ Π΄Π°ΡΠΈΡΡ ΡΠ²ΠΎΠΈΠΌ <i>Π±Π»ΠΈΠ·ΠΊΠΈΠΌ</i>.' |
|
6 | ' <b>ΠΠ°ΡΠ° ΡΠ΅Π»Ρ</b> - Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ <i>Π΄Π΅Π½ΡΠ³ΠΈ</i>, ΠΏΠΎΠΊΡΠΏΠ°ΡΡ Π½Π° Π½ΠΈΡ <i>ΠΏΠΎΠ΄Π°ΡΠΊΠΈ</i> ΠΈ Π΄Π°ΡΠΈΡΡ ΡΠ²ΠΎΠΈΠΌ <i>Π±Π»ΠΈΠ·ΠΊΠΈΠΌ</i>.' | |
7 | ACT '<b>ΠΠ°ΡΠ°ΡΡ ΠΈΠ³ΡΡ</b>':GOTO 'ΠΠΎΠΌ' |
|
7 | ACT '<b>ΠΠ°ΡΠ°ΡΡ ΠΈΠ³ΡΡ</b>':GOTO 'ΠΠΎΠΌ' |
@@ -35,10 +35,12 b'' | |||||
35 | (resolve))))) |
|
35 | (resolve))))) | |
36 | ,@body)))) |
|
36 | ,@body)))) | |
37 |
|
37 | |||
38 | (defpsmacro define-serv-var (name (slot value &optional index) &body body) |
|
38 | (defvar *serv-vars* nil) | |
|
39 | ||||
|
40 | (defpsmacro define-serv-var (name (value &optional index) &body body) | |||
39 | (setf name (string-upcase (symbol-name name))) |
|
41 | (setf name (string-upcase (symbol-name name))) | |
|
42 | (pushnew name *serv-vars* :test #'equal) | |||
40 | `(setf (getprop serv-vars ,name) |
|
43 | `(setf (getprop serv-vars ,name) | |
41 | (create :name ,name |
|
44 | (create :name ,name | |
42 | :slot ,slot |
|
|||
43 | :body (lambda (,value ,@(when index (list index))) |
|
45 | :body (lambda (,value ,@(when index (list index))) | |
44 | ,@body)))) |
|
46 | ,@body)))) |
@@ -238,12 +238,24 b'' | |||||
238 | (progn |
|
238 | (progn | |
239 | (chain slot (push value)) |
|
239 | (chain slot (push value)) | |
240 | (setf (elt slot index) |
|
240 | (setf (elt slot index) | |
241 |
(length slot)))) |
|
241 | (length slot)))) | |
|
242 | (void)) | |||
242 |
|
243 | |||
243 | (defun set-any-element (slot index value) |
|
244 | (defun set-any-element (slot index value) | |
244 |
( |
|
245 | (cond ((null index) | |
245 |
( |
|
246 | (chain (elt slot) (push value))) | |
246 | (set-str-element slot index value))) |
|
247 | ((numberp index) | |
|
248 | (setf (elt slot index) value)) | |||
|
249 | ((stringp index) | |||
|
250 | (set-str-element slot index value)) | |||
|
251 | (t (report-error "INTERNAL ERROR"))) | |||
|
252 | (void)) | |||
|
253 | ||||
|
254 | (defun set-serv-var (name index value) | |||
|
255 | (let ((slot (getprop *globals name))) | |||
|
256 | (set-any-element slot index value)) | |||
|
257 | (funcall (getprop serv-vars name :body) value index) | |||
|
258 | (void)) | |||
247 |
|
259 | |||
248 | (defun get-element (slot index) |
|
260 | (defun get-element (slot index) | |
249 | (if (numberp index) |
|
261 | (if (numberp index) | |
@@ -468,21 +480,21 b'' | |||||
468 |
|
480 | |||
469 | (defvar serv-vars (create)) |
|
481 | (defvar serv-vars (create)) | |
470 |
|
482 | |||
471 |
(define-serv-var backimage ( |
|
483 | (define-serv-var $backimage (path) | |
472 | (setf (@ (get-frame :main) style background-image) path)) |
|
484 | (setf (@ (get-frame :main) style background-image) path)) | |
473 |
|
485 | |||
474 |
(define-serv-var bcolor ( |
|
486 | (define-serv-var bcolor (color) | |
475 | (setf (@ (get-frame :all) style background-color) (rgb-string color))) |
|
487 | (setf (@ (get-frame :all) style background-color) (rgb-string color))) | |
476 |
|
488 | |||
477 |
(define-serv-var fcolor ( |
|
489 | (define-serv-var fcolor (color) | |
478 | (setf (@ (get-frame :all) style color) (rgb-string color))) |
|
490 | (setf (@ (get-frame :all) style color) (rgb-string color))) | |
479 |
|
491 | |||
480 |
(define-serv-var lcolor ( |
|
492 | (define-serv-var lcolor (color) | |
481 | (setf (@ (get-frame :style) inner-text) |
|
493 | (setf (@ (get-frame :style) inner-text) | |
482 | (+ "a { color: " (rgb-string color) ";}"))) |
|
494 | (+ "a { color: " (rgb-string color) ";}"))) | |
483 |
|
495 | |||
484 |
(define-serv-var fsize ( |
|
496 | (define-serv-var fsize (size) | |
485 | (setf (@ (get-frame :all) style font-size) size)) |
|
497 | (setf (@ (get-frame :all) style font-size) size)) | |
486 |
|
498 | |||
487 |
(define-serv-var fname ( |
|
499 | (define-serv-var $fname (font-name) | |
488 | (setf (@ (get-frame :all) style font-family) (+ font-name ",serif"))) |
|
500 | (setf (@ (get-frame :all) style font-family) (+ font-name ",serif"))) |
@@ -30,12 +30,12 b'' | |||||
30 | (:export #:with-frame #:with-call-args |
|
30 | (:export #:with-frame #:with-call-args | |
31 | #:stash-state |
|
31 | #:stash-state | |
32 |
|
32 | |||
33 | #:report-error #:sleep #:init-dom #:call-serv-loc |
|
33 | #:report-error #:sleep #:init-dom #:call-serv-loc #:*serv-vars* | |
34 | #:newline #:clear-id #:prepare-contents #:get-id #:set-id #:append-id |
|
34 | #:newline #:clear-id #:prepare-contents #:get-id #:set-id #:append-id | |
35 | #:init-args #:get-result #:call-loc #:call-act |
|
35 | #:init-args #:get-result #:call-loc #:call-act | |
36 | #:get-frame #:add-text #:get-text #:clear-text #:enable-frame |
|
36 | #:get-frame #:add-text #:get-text #:clear-text #:enable-frame | |
37 | #:add-act #:del-act #:clear-act #:update-acts |
|
37 | #:add-act #:del-act #:clear-act #:update-acts | |
38 | #:set-str-element #:set-any-element |
|
38 | #:set-str-element #:set-any-element #:set-serv-var | |
39 | #:*var #:new-value #:index-num #:get #:set #:kill |
|
39 | #:*var #:new-value #:index-num #:get #:set #:kill | |
40 | #:var-real-name #:ensure-var #:var-ref #:get-var #:set-var |
|
40 | #:var-real-name #:ensure-var #:var-ref #:get-var #:set-var | |
41 | #:get-array #:set-array #:kill-var #:array-size |
|
41 | #:get-array #:set-array #:kill-var #:array-size |
@@ -47,7 +47,7 b'' | |||||
47 |
|
47 | |||
48 | ;;; 1loc |
|
48 | ;;; 1loc | |
49 |
|
49 | |||
50 |
(defparameter *s |
|
50 | (defparameter *special-variables* | |
51 | '((usehtml 0) |
|
51 | '((usehtml 0) | |
52 | (result 0) |
|
52 | (result 0) | |
53 | ($result 0) |
|
53 | ($result 0) | |
@@ -63,7 +63,7 b'' | |||||
63 |
|
63 | |||
64 | (defpsmacro game ((name) &body body) |
|
64 | (defpsmacro game ((name) &body body) | |
65 | (setf body (walker:walk 'for-transform body)) |
|
65 | (setf body (walker:walk 'for-transform body)) | |
66 |
(setf *globals* *s |
|
66 | (setf *globals* *special-variables*) | |
67 | (walker:walk 'globals body) |
|
67 | (walker:walk 'globals body) | |
68 | `(progn |
|
68 | `(progn | |
69 | ;; Game object |
|
69 | ;; Game object | |
@@ -169,26 +169,29 b'' | |||||
169 | (destructuring-bind (qspvar name index) |
|
169 | (destructuring-bind (qspvar name index) | |
170 | var |
|
170 | var | |
171 | (declare (ignore qspvar)) |
|
171 | (declare (ignore qspvar)) | |
|
172 | (setf name (string-upcase name)) | |||
172 | (let ((slot `(getprop |
|
173 | (let ((slot `(getprop | |
173 | ,(if (member name *locals* :key #'first) |
|
174 | ,(if (member name *locals* :key #'first) | |
174 | 'locals '*globals) |
|
175 | 'locals '*globals) | |
175 |
, |
|
176 | ,name)) | |
|
177 | (index (walker:walk 'apply-vars index)) | |||
|
178 | (value (walker:walk 'apply-vars expr))) | |||
176 | (cond |
|
179 | (cond | |
|
180 | ((member name api:*serv-vars* :test #'equalp) | |||
|
181 | `(api:set-serv-var ,name ,index ,value)) | |||
177 | ((null index) |
|
182 | ((null index) | |
178 |
`(chain (elt ,slot) (push ,e |
|
183 | `(chain (elt ,slot) (push ,value))) | |
179 | ((or (numberp index) |
|
184 | ((or (numberp index) | |
180 | (variable-number-p index)) |
|
185 | (variable-number-p index)) | |
181 | `(setf (elt ,slot ,index) |
|
186 | `(setf (elt ,slot ,index) ,value)) | |
182 | ,(walker:walk 'apply-vars expr))) |
|
|||
183 | ((or (literal-string-p index) |
|
187 | ((or (literal-string-p index) | |
184 | (variable-string-p index)) |
|
188 | (variable-string-p index)) | |
185 |
`(api:set-str-element ,slot , |
|
189 | `(api:set-str-element ,slot ,index ,value)) | |
186 | ,(walker:walk-continue expr))) |
|
|||
187 | (t |
|
190 | (t | |
188 |
`(api:set-any-element ,slot , |
|
191 | `(api:set-any-element ,slot ,index ,value)))))) | |
189 | ,(walker:walk-continue expr))))))) |
|
|||
190 |
|
192 | |||
191 | (walker:deftransform apply-vars local (var &optional expr) |
|
193 | (walker:deftransform apply-vars local (var &optional expr) | |
|
194 | ;; TODO: var can't be a service variable | |||
192 | (when expr |
|
195 | (when expr | |
193 | (walker:walk 'apply-vars (list 'set var expr)))) |
|
196 | (walker:walk 'apply-vars (list 'set var expr)))) | |
194 |
|
197 | |||
@@ -365,7 +368,7 b'' | |||||
365 | ;;; 22for |
|
368 | ;;; 22for | |
366 |
|
369 | |||
367 | ;; Transform because it creates a (set ...) hence it has to be processed |
|
370 | ;; Transform because it creates a (set ...) hence it has to be processed | |
368 |
;; before the apply-vars transform. And macros are processed |
|
371 | ;; before the apply-vars transform. And macros are processed after all | |
369 | ;; the transforms |
|
372 | ;; the transforms | |
370 | (walker:deftransform for-transform qspfor (var from to step &rest body) |
|
373 | (walker:deftransform for-transform qspfor (var from to step &rest body) | |
371 | `(loop :for i :from ,from :to ,to :by ,step |
|
374 | `(loop :for i :from ,from :to ,to :by ,step |
General Comments 0
You need to be logged in to leave comments.
Login now