##// END OF EJS Templates
Sounds, save/load UI buttons
naryl -
r12:77651167 default
parent child Browse files
Show More
@@ -9,6 +9,10 b''
9 <div id="qsp-stat" class="qsp-frame">&nbsp;</div>
9 <div id="qsp-stat" class="qsp-frame">&nbsp;</div>
10 <div id="qsp-objs" class="qsp-frame">&nbsp;</div>
10 <div id="qsp-objs" class="qsp-frame">&nbsp;</div>
11 </div>
11 </div>
12 <div class="qsp-col qsp-col3">
13 <a href="javascript:SugarQSP.lib.savegame()"><img id="qsp-btn-save"></a>
14 <a href="javascript:SugarQSP.lib.opengame()"><img id="qsp-btn-load"></a>
15 </div>
12 </div>
16 </div>
13
17
14 <div id="qsp-dropdown">
18 <div id="qsp-dropdown">
@@ -29,6 +29,10 b''
29 flex: 3 3 30px;
29 flex: 3 3 30px;
30 }
30 }
31
31
32 .qsp-col3 {
33 flex: 0 0 40px;
34 }
35
32 #qsp-main {
36 #qsp-main {
33 flex: 6 6 60px;
37 flex: 6 6 60px;
34 }
38 }
@@ -58,7 +62,7 b''
58 outline: #9E9E9E outset 3px
62 outline: #9E9E9E outset 3px
59 }
63 }
60
64
61 // Dropdown
65 /* Dropdown */
62
66
63 #qsp-dropdown {
67 #qsp-dropdown {
64 display: none;
68 display: none;
@@ -82,3 +86,18 b''
82 #qsp-dropdown a:hover {
86 #qsp-dropdown a:hover {
83 background-color: #ddd;
87 background-color: #ddd;
84 }
88 }
89
90 /* Buttons */
91
92 .qsp-col3 a, .qsp-col3 img {
93 width: 50px;
94 height: 50px;
95 }
96
97 #qsp-btn-save {
98 background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAACSklEQVRoge3ZPWgUQRjG8V/iRRFU/GoEQdSohSgWWqQSooVgK9iJFiKCnYV2BkFQsBRBQQwWVsHKIoWxEOzEwmhhogbRMhhFicTvYm+JCUlmZzabRLN/OPaWeZ+ZeW7feXf2lpqampqamnRaImKP4hA2VjCP27hbpoNGwbib2IPreB+IPYY7M7SvxWYM4QNO4QqWyQxVRgdeYnnB+K5A+wUcbB7z+O14hxPx08toLRDTgfv4mjrIJFrwwMS0HsABXMTxlE6LpNYqfE7pPJIBdOKhLM1uxIiLrpG5YtC4GSLMVGGkLdD+GpfxAuvxaVL7oCzN+jCG7iKDVmHkKS5hSSBuJ3bg6hRt+Zrpa553z8bEuoQrUVXk1exwKLBI1ZpPBnAL+0KBqanVim1Ykaifji+yNfIrVphipB1n8BgjCfqZ2IrTuIZXMcIUIydxFj8TtEW4JysW52JEKWtkVHUm4EdzjChSrkgLlmJXghb6m8ep9MN4K25XjvTF3sCaElrT6McS+0w2Mirb+JWhrH4CC/0+UpjUK7Ia5/86f4IeHMHeEvPJ+4km1chHE43k9KROpCyLPrViym8/vjW/b5Jt3acjL7/RzEX5bRg3sjKg+2fK7/PmZ9aZzdTqxwYzp06IBZFaDeHUCbFgUquy1Anx35TfRWXkd+WzCBOcQxEjQ7JH0PmiHW9CQUWM9Mr+Y+osO6ME8nF7Q4FFn8T2y14VDMt2vsFfqCRbZBvTdbLXFI9CgphHyjbsVu4+EcMInuH7HI1XU1NTU7OI+QMFe2N82rtssgAAAABJRU5ErkJggg==');
99 }
100
101 #qsp-btn-load {
102 background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAACCklEQVRoge3Yz6sNYRzH8deVexNxSaEoroWFUuomOceSPVnIwsbSxs6Psrgphf9AsrZR7kJWsroUlrZKKZRSl4USGouZk9Npzp1n5pm5x4/nXdNzpvP9Pp/v95nv82OGRCKRSCQS/w8zuIn3yGpe37CEQ6sedQk38BA7G/jO4BQ+YEebQZUxVfH/OxzGVSxX2D4o2mO4jmt4jpNFe6d5mPFkRbvQ0H9h6OqUtR33/xXr0celGn4/sYjXoQ5dJ3ILB7AOW2r4bcIj7GsrkEFpXWyrwwbaf15nXWqv6SqK1abuHDmPjV0EMobhBWIZt8cZVu0j2ZDNHF7gblRozdiO49g1zqDOEzmKJ7gcGVQTzmLDSgZ1Eunh2dD9aewpsXtctH3cwzn5ALysoVWlXZvhleMV5ovfU8J363mciAliRLsRg0Q244vfT3A/zgT2cQHbImIY1S4ldPk9Ii+NH8V9H08DfbfiY6BtiHYpoYmMBr4bbwN9YzfVoEELnew9+blpwBv5u0oI9wPtQrUbkWFaXqOzsZ01IFg7pLQOyp/A58igmhCsHZJInYndNsHa/0wiVWTy9/a5NjprQGvag0Qmwd462iGltdQ8lihqlVVIIn/9/CAvrajDWgTRB8VhMt1/aSljVr4RToc6hJTWioe1jujJD4rfQx2qRvuTyX1JuTIh3UQikUgkEhPnF+1xZ9hHnLjAAAAAAElFTkSuQmCC');
103 }
@@ -36,6 +36,8 b''
36 (defm (root api base64-to-state) (data)
36 (defm (root api base64-to-state) (data)
37 (setf (root state-stash) (decode-u-r-i-component (atob data)))
37 (setf (root state-stash) (decode-u-r-i-component (atob data)))
38 (let ((data (*j-s-o-n.parse (root state-stash))))
38 (let ((data (*j-s-o-n.parse (root state-stash))))
39 (api-call clear-id :qsp-main)
40 (api-call clear-id :qsp-stat)
39 (api-call clear-act)
41 (api-call clear-act)
40 (setf (root vars) (ps:@ data vars))
42 (setf (root vars) (ps:@ data vars))
41 (setf (root objs) (ps:@ data objs))
43 (setf (root objs) (ps:@ data objs))
@@ -198,3 +200,11 b''
198 :do (incf i)
200 :do (incf i)
199 :do (incf elt.inner-h-t-m-l (api-call make-menu-item-html i item.text item.icon item.loc)))
201 :do (incf elt.inner-h-t-m-l (api-call make-menu-item-html i item.text item.icon item.loc)))
200 (setf elt.style.display "block")))
202 (setf elt.style.display "block")))
203
204 ;;; Content
205
206 (defm (root api clean-audio) ()
207 (loop :for k :in (*object.keys (root playing))
208 :for v := (ps:getprop (root playing) k)
209 :do (when (ps:@ v ended)
210 (ps:delete (ps:@ (root playing) k)))))
@@ -128,6 +128,9 b''
128
128
129 ;;; 17sound
129 ;;; 17sound
130
130
131 (ps:defpsmacro isplay (filename)
132 `(funcall (root playing includes) ,filename))
133
131 ;;; 18img
134 ;;; 18img
132
135
133 ;;; 19input
136 ;;; 19input
@@ -197,13 +197,13 b''
197 (defm (root lib delobj) (name)
197 (defm (root lib delobj) (name)
198 (let ((index (ps:chain (root objs) (index-of name))))
198 (let ((index (ps:chain (root objs) (index-of name))))
199 (when (> index -1)
199 (when (> index -1)
200 (funcall (root lib killobj) index)))
200 (funcall (root lib killobj) (1+ index))))
201 (values))
201 (values))
202
202
203 (defm (root lib killobj) (&optional num)
203 (defm (root lib killobj) (&optional (num nil))
204 (if num
204 (if (eq nil num)
205 (ps:chain (root objs) (splice (1+ num) 1))
205 (setf (root objs) (list))
206 (setf (root objs) (list)))
206 (ps:chain (root objs) (splice (1- num) 1)))
207 (api-call update-objs)
207 (api-call update-objs)
208 (values))
208 (values))
209
209
@@ -232,13 +232,21 b''
232
232
233 ;;; 17sound
233 ;;; 17sound
234
234
235 (defm (root lib play) ())
235 (defm (root lib play) (filename &optional (volume 100))
236
236 (let ((audio (ps:new (*audio filename))))
237 (defm (root lib isplay) ())
237 (setf (ps:getprop (root playing) filename) audio)
238 (setf (ps:@ audio volume) (* volume 0.01))
239 (ps:chain audio (play))))
238
240
239 (defm (root lib close) ())
241 (defm (root lib close) (filename)
242 (funcall (root playing filename) stop)
243 (ps:delete (root playing filename)))
240
244
241 (defm (root lib closeall) ())
245 (defm (root lib closeall) ()
246 (loop :for k :in (*object.keys (root playing))
247 :for v := (ps:getprop (root playing) k)
248 :do (funcall v stop))
249 (setf (root playing) (ps:create)))
242
250
243 ;;; 18img
251 ;;; 18img
244
252
@@ -2,11 +2,22 b''
2 (in-package sugar-qsp)
2 (in-package sugar-qsp)
3
3
4 (setf (root)
4 (setf (root)
5 (ps:create vars (ps:create)
5 (ps:create
6 objs (list)
6 ;;; Game session state
7 state-stash (ps:create)
7 ;; Variables
8 acts (ps:create)
8 vars (ps:create)
9 locs (ps:create)))
9 ;; Inventory (objects)
10 objs (list)
11 ;;; Transient state
12 ;; Savegame data
13 state-stash (ps:create)
14 ;; List of audio files being played
15 playing (ps:create)
16 ;;; Game data
17 ;; ACTions
18 acts (ps:create)
19 ;; Locations
20 locs (ps:create)))
10
21
11 ;; Launch the game from the first location
22 ;; Launch the game from the first location
12 (setf window.onload
23 (setf window.onload
General Comments 0
You need to be logged in to leave comments. Login now