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) "")
- (loop :for obj :in (root objs)
+ (loop :for (name obj) :of (root objs)
:do (incf (inner-html elt)
- (make-obj obj)))
+ (make-obj name (@ obj :img) (@ obj :selected))))
(incf (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 '>>)