diff --git a/examples/txt2gam-game.txt b/examples/txt2gam-game.txt --- a/examples/txt2gam-game.txt +++ b/examples/txt2gam-game.txt @@ -1,6 +1,7 @@ # start USEHTML=1 +BCOLOR = RGB(255, 255, 255) '
Текстовый квест

' ' Ваша цель - зарабатывать деньги, покупать на них подарки и дарить своим близким.' ACT 'Начать игру':GOTO 'Дом' diff --git a/extras/default.css b/extras/default.css --- a/extras/default.css +++ b/extras/default.css @@ -130,3 +130,7 @@ pointer-events: none; cursor: default; } + +.qsp-objs li.qsp-obj-selected { + background-color: blue; +} diff --git a/src/api-macros.lisp b/src/api-macros.lisp --- a/src/api-macros.lisp +++ b/src/api-macros.lisp @@ -18,7 +18,7 @@ `(+ "javascript:" (inline-call ,func ,@args))) (defpsmacro inline-call (func &rest args) - `(+ ,func + `(+ ',func "(\"" ,(first args) ,@(loop :for arg :in (cdr args) @@ -35,11 +35,9 @@ (resolve))))) ,@body)))) -(defvar serv-vars (create)) - (defpsmacro define-serv-var (name (slot value &optional index) &body body) (setf name (string-upcase (symbol-name name))) - `(setf (getprop serv-vars name) + `(setf (getprop serv-vars ,name) (create :name ,name :slot ,slot :body (lambda (,value ,@(when index (list index))) diff --git a/src/api.ps b/src/api.ps --- a/src/api.ps +++ b/src/api.ps @@ -21,11 +21,10 @@ "")) (defun make-obj (title img selected) - (+ "
  • " - "" + (+ "
  • " + "" (if img (+ "") "") - obj + title "")) (defun make-menu-delimiter () @@ -55,6 +54,7 @@ ;; Close image on click (setf (@ (by-id "qsp-image-container") onclick) show-image) + ;; Enter in input field (setf (@ (get-frame :input) onkeyup) on-input-key) ;; Close the dropdown on any click @@ -196,7 +196,7 @@ (defun select-act (title) (loop :for (k v) :of (root acts) - (setf (getprop v :selected) nil)) + :do (setf (getprop v :selected) nil)) (setf (getprop (root acts) title :selected) t) (call-serv-loc "ONACTSEL")) @@ -290,7 +290,7 @@ (chain (ensure-var name) (set index slot value)) (let ((serv-var (getprop serv-vars name))) (when serv-var - (funcall (@ serv-var :func) + (funcall (@ serv-var :body) (get-var name index (@ serv-var :slot)) index))) (void)) @@ -339,16 +339,16 @@ (defun select-obj (title img) (loop :for (k v) :of (root objs) - (setf (getprop v :selected) nil)) + :do (setf (getprop v :selected) nil)) (setf (getprop (root objs) title :selected) t) (call-serv-loc "ONOBJSEL" title img)) (defun update-objs () (let ((elt (by-id "qsp-objs"))) (setf (inner-html elt) ""))) ;;; Menu @@ -412,9 +412,9 @@ (setf (@ img style display) "hidden"))))) (defun rgb-string (rgb) - (let ((red (rgb >> 16)) - (green (& (rgb >> 8) 255)) - (blue (& rgb 255))) + (let ((red (ps::>> rgb 16)) + (green (logand (ps::>> rgb 8) 255)) + (blue (logand rgb 255))) (flet ((rgb-to-hex (comp) (let ((hex (chain (*number comp) (to-string 16)))) (if (< (length hex) 2) @@ -514,6 +514,8 @@ ;;; Special variables +(defvar serv-vars (create)) + (define-serv-var backimage (:str path) (setf (@ (get-frame :main) style background-image) path)) @@ -526,3 +528,9 @@ (define-serv-var lcolor (:num color) (setf (@ (get-frame :style) inner-text) (+ "a { color: " (rgb-string color) ";}"))) + +(define-serv-var fsize (:num size) + (setf (@ (get-frame :all) style font-size) size)) + +(define-serv-var fname (:str font-name) + (setf (@ (get-frame :all) style font-family) (+ font-name ",serif"))) diff --git a/src/intrinsic-macros.lisp b/src/intrinsic-macros.lisp --- a/src/intrinsic-macros.lisp +++ b/src/intrinsic-macros.lisp @@ -17,10 +17,10 @@ ;;; 3expr (defpsmacro obj (name) - `(funcall (root objs includes) ,name)) + `(in ,name (root objs))) (defpsmacro loc (name) - `(funcall (root locs includes) ,name)) + `(in ,name (root locs))) (defpsmacro no (arg) `(- -1 ,arg)) diff --git a/src/js-syms.lisp b/src/js-syms.lisp --- a/src/js-syms.lisp +++ b/src/js-syms.lisp @@ -18,7 +18,7 @@ keys includes has-own-property ;; api - document get-element-by-id + document get-element-by-id get-elements-by-tag-name onclick onchange atob btoa split alert prompt diff --git a/src/patches.lisp b/src/patches.lisp --- a/src/patches.lisp +++ b/src/patches.lisp @@ -67,3 +67,8 @@ nil (funcall *old-return-result-of* tag form))) (export 'void) + +;;; Bitwise stuff +;; No idea why these are not exported +(export '<<) +(export '>>)