9jump.qsps
1133 lines
| 39.0 KiB
| text/plain
|
TextLexer
/ examples / 9jump.qsps
r60 | <!DOCTYPE html> | ||
<html><head><title>txt2web</title></head><body> | |||
<div id="qsp"> | |||
<div class="qsp-col qsp-col1"> | |||
<div id="qsp-main" class="qsp-frame">‌</div> | |||
<div id="qsp-acts" class="qsp-frame">‌</div> | |||
<input id="qsp-input" class="qsp-frame"> | |||
</div> | |||
<div class="qsp-col qsp-col2"> | |||
<div id="qsp-stat" class="qsp-frame">‌</div> | |||
<div id="qsp-objs" class="qsp-frame">‌</div> | |||
</div> | |||
<div class="qsp-col qsp-col3"> | |||
<a id="qsp-btn-save"><img></a> | |||
<a id="qsp-btn-open"><img></a> | |||
</div> | |||
</div> | |||
<div id="qsp-dropdown"> | |||
</div> | |||
<div id="qsp-image-container" class="center-on-screen"> | |||
<img id="qsp-image"> | |||
</div> | |||
<style id="qsp-style"> | |||
</style> | |||
<style> | |||
.qsp-frame { | |||
border: 1px solid black; | |||
overflow: auto; | |||
padding: 5px; | |||
box-sizing: border-box; | |||
} | |||
#qsp { | |||
position: absolute; | |||
display: flex; | |||
flex-flow: row; | |||
top: 0; | |||
left: 0; | |||
width: 100%; | |||
height: 100%; | |||
} | |||
.qsp-col { | |||
display: flex; | |||
flex-flow: column; | |||
} | |||
.qsp-col1 { | |||
flex: 7 7 70px; | |||
} | |||
.qsp-col2 { | |||
flex: 3 3 30px; | |||
} | |||
.qsp-col3 { | |||
flex: 0 0 40px; | |||
} | |||
#qsp-main { | |||
flex: 6 6 60px; | |||
background-repeat: no-repeat; | |||
background-position: right top; | |||
background-attachment: fixed; | |||
} | |||
#qsp-acts { | |||
flex: 4 4 40px; | |||
} | |||
#qsp-input { | |||
} | |||
#qsp-stat { | |||
flex: 5 5 50px; | |||
} | |||
#qsp-objs { | |||
flex: 5 5 50px; | |||
} | |||
.qsp-act { | |||
display: block; | |||
padding: 2px; | |||
font-size: large; | |||
} | |||
.qsp-act:hover { | |||
outline: #9E9E9E outset 3px | |||
} | |||
/* Dropdown */ | |||
#qsp-dropdown { | |||
display: none; | |||
position: absolute; | |||
background-color: #f1f1f1; | |||
min-width: 160px; | |||
overflow: auto; | |||
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); | |||
z-index: 1; | |||
margin: auto; | |||
} | |||
#qsp-dropdown a { | |||
color: black; | |||
padding: 12px 16px; | |||
text-decoration: none; | |||
display: block; | |||
} | |||
#qsp-dropdown a:hover { | |||
background-color: #ddd; | |||
} | |||
/* Buttons */ | |||
.qsp-col3 a, .qsp-col3 img { | |||
width: 50px; | |||
height: 50px; | |||
} | |||
#qsp-btn-save img { | |||
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=='); | |||
} | |||
#qsp-btn-open img { | |||
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'); | |||
} | |||
.center-on-screen { | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
height: 100%; | |||
width: 100%; | |||
pointer-events: none; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.center-on-screen > * { | |||
pointer-events: auto; | |||
} | |||
#qsp-image-container { | |||
display: none; | |||
} | |||
/* misc */ | |||
.disable a { | |||
pointer-events: none; | |||
cursor: default; | |||
} | |||
.qsp-objs li.qsp-obj-selected { | |||
background-color: blue; | |||
} | |||
</style><script>var qsp_Globals = { }; | |||
var qsp_Objs = { }; | |||
var qsp_CurrentLocation = null; | |||
var qsp_StartedAt = Date.now(); | |||
var qsp_TimerInterval = 500; | |||
var qsp_TimerObj = null; | |||
var qsp_LoadedGames = []; | |||
var qsp_Acts = { }; | |||
var qsp_StateStash = { }; | |||
var qsp_Playing = { }; | |||
var qsp_Locals = []; | |||
var qsp_MenuResume = null; | |||
var qsp_Games = []; | |||
var qsp_MainGame = null; | |||
var qsp_Locs = { }; | |||
window.onload = qsp_start; | |||
function qsp_start() { | |||
qsp_api_initDom(); | |||
qsp_StartedAt = Date.now(); | |||
qsp_api_setTimer(qsp_TimerInterval); | |||
qsp_api_runGame(Object.keys(qsp_Games)[0]); | |||
__PS_MV_REG = []; | |||
return; | |||
}; | |||
function qsp_byId(qsp_id) { | |||
return document.getElementById(qsp_id); | |||
}; | |||
function qsp_api_makeActHtml(qsp_api_title, qsp_api_img) { | |||
return '<a class=\'qsp-act\' href=\'' + ('javascript:' + ('qsp_api_callAct' + '(\"' + qsp_api_title + '\");')) + '\' onmouseover=\'' + ('qsp_api_selectAct' + '(\"' + qsp_api_title + '\");') + '\'>' + (qsp_api_img ? '<img src=\'' + qsp_api_img + '\'>' : '') + qsp_api_title + '</a>'; | |||
}; | |||
function qsp_api_makeMenuItemHtml(qsp_api_num, qsp_api_title, qsp_api_img, qsp_api_loc) { | |||
return '<a href=\'' + ('javascript:' + ('qsp_api_finishMenu' + '(\"' + qsp_api_loc + '\");')) + '\'>' + (qsp_api_img ? '<img src=\'' + qsp_api_img + '\'>' : '') + qsp_api_title + '</a>'; | |||
}; | |||
function qsp_api_makeObj(qsp_api_title, qsp_api_img, qsp_api_selected) { | |||
return '<li onclick=\'' + ('qsp_api_selectObj' + '(\"' + qsp_api_title + '\", \"' + qsp_api_img + '\");') + '\'>' + '<a class=\'qsp-obj' + (qsp_api_selected ? ' qsp-obj-selected' : '') + '\'>' + (qsp_api_img ? '<img src=\'' + qsp_api_img + '\'>' : '') + qsp_api_title + '</a>'; | |||
}; | |||
function qsp_api_makeMenuDelimiter() { | |||
return '<hr>'; | |||
}; | |||
function qsp_api_copyObj(qsp_api_obj) { | |||
return JSON.parse(JSON.stringify(qsp_api_obj)); | |||
}; | |||
function qsp_api_reportError(qsp_api_text) { | |||
__PS_MV_REG = []; | |||
return alert(qsp_api_text); | |||
}; | |||
function qsp_api_startSleeping() { | |||
__PS_MV_REG = []; | |||
return qsp_byId('qsp').classList.add('disable'); | |||
}; | |||
function qsp_api_finishSleeping() { | |||
__PS_MV_REG = []; | |||
return qsp_byId('qsp').classList.remove('disable'); | |||
}; | |||
function sleep(qsp_api_msec) { | |||
__PS_MV_REG = []; | |||
return new Promise(function (qsp_api_resolve) { | |||
qsp_api_startSleeping(); | |||
var qsp_api_resume = function () { | |||
qsp_api_finishSleeping(); | |||
__PS_MV_REG = []; | |||
return qsp_api_resolve(); | |||
}; | |||
__PS_MV_REG = []; | |||
return setTimeout(qsp_api_resume, qsp_api_msec); | |||
}); | |||
}; | |||
function qsp_api_initDom() { | |||
var qsp_api_btn = qsp_byId('qsp-btn-save'); | |||
qsp_api_btn.onclick = qsp_api_savegame; | |||
qsp_api_btn.href = '#'; | |||
var btn1 = qsp_byId('qsp-btn-open'); | |||
btn1.onclick = qsp_api_opengame; | |||
btn1.href = '#'; | |||
qsp_byId('qsp-image-container').onclick = qsp_api_showImage; | |||
qsp_api_getFrame('input').qsp_api_onkeyup = qsp_api_onInputKey; | |||
__PS_MV_REG = []; | |||
return window.onclick = function (qsp_api_event) { | |||
window.qsp_api_mouse = [qsp_api_event.pageX, qsp_api_event.pageY]; | |||
__PS_MV_REG = []; | |||
return qsp_api_finishMenu(null); | |||
}; | |||
}; | |||
function qsp_api_callServLoc(qsp_api_varName) { | |||
var qsp_api_args = Array.prototype.slice.call(arguments, 1); | |||
var qsp_api_locName = qsp_api_getGlobal(qsp_api_varName, 0); | |||
if (qsp_api_locName) { | |||
var qsp_api_loc = qsp_Locs[qsp_api_locName]; | |||
__PS_MV_REG = []; | |||
return qsp_api_loc ? qsp_api_callLoc(qsp_api_locName, qsp_api_args) : null; | |||
}; | |||
}; | |||
function qsp_api_filenameGame(qsp_api_filename) { | |||
var qsp_api_gameName = qsp_api_filename.match('(.*/)?([^.]+)(\\.[a-zA-Z]+)?')[2]; | |||
return qsp_Games[qsp_api_gameName]; | |||
}; | |||
function qsp_api_runGame(qsp_api_name) { | |||
var qsp_api_game = qsp_api_filenameGame(qsp_api_name); | |||
qsp_MainGame = qsp_api_name; | |||
qsp_Locs = qsp_api_game; | |||
__PS_MV_REG = []; | |||
return qsp_api_game[Object.keys(qsp_api_game)[0]]([]); | |||
}; | |||
function qsp_api_newline(qsp_api_key) { | |||
__PS_MV_REG = []; | |||
return qsp_api_appendId(qsp_api_keyToId(qsp_api_key), '<br>', true); | |||
}; | |||
function qsp_api_clearId(qsp_api_id) { | |||
__PS_MV_REG = []; | |||
return qsp_byId(qsp_api_id).innerHTML = ''; | |||
}; | |||
function qsp_api_escapeHtml(qsp_api_text) { | |||
return qsp_api_text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '''); | |||
}; | |||
function qsp_api_prepareContents(qsp_api_s, qsp_api_forceHtml) { | |||
qsp_api_s = qsp_api_s.toString(); | |||
__PS_MV_REG = []; | |||
return qsp_api_forceHtml || qsp_api_getGlobal('USEHTML', 0) ? qsp_api_s : qsp_api_escapeHtml(qsp_api_s); | |||
}; | |||
function qsp_api_getId(qsp_api_id, qsp_api_forceHtml) { | |||
__PS_MV_REG = []; | |||
return qsp_byId(qsp_api_id).innerHTML; | |||
}; | |||
function qsp_api_setId(qsp_api_id, qsp_api_contents, qsp_api_forceHtml) { | |||
__PS_MV_REG = []; | |||
return qsp_byId(qsp_api_id).innerHTML = qsp_api_prepareContents(qsp_api_contents, qsp_api_forceHtml); | |||
}; | |||
function qsp_api_appendId(qsp_api_id, qsp_api_contents, qsp_api_forceHtml) { | |||
__PS_MV_REG = []; | |||
return qsp_api_contents ? (qsp_byId(qsp_api_id).innerHTML += qsp_api_prepareContents(qsp_api_contents, qsp_api_forceHtml)) : null; | |||
}; | |||
function qsp_api_onInputKey(qsp_api_ev) { | |||
if (13 === qsp_api_ev.qsp_api_keyCode) { | |||
qsp_api_ev.qsp_api_preventDefault(); | |||
__PS_MV_REG = []; | |||
return qsp_api_callServLoc('$USERCOM'); | |||
}; | |||
}; | |||
function qsp_api_initArgs(qsp_api_args) { | |||
for (var qsp_api_i = 0; qsp_api_i < qsp_api_args.length; qsp_api_i += 1) { | |||
var qsp_api_arg = qsp_api_args[qsp_api_i]; | |||
if (typeof qsp_api_arg === 'number') { | |||
qsp_api_setVar(qsp_api_args, qsp_api_i, 'num', qsp_api_arg); | |||
} else { | |||
qsp_api_setVar(qsp_api_args, qsp_api_i, 'str', qsp_api_arg); | |||
}; | |||
}; | |||
}; | |||
function qsp_api_getResult() { | |||
__PS_MV_REG = []; | |||
return qsp_api_getGlobal('$RESULT', 0) || qsp_api_getGlobal('RESULT', 0); | |||
}; | |||
function qsp_api_callLoc(qsp_api_name, qsp_api_args) { | |||
qsp_api_name = qsp_api_name.toUpperCase(); | |||
qsp_api_pushLocalFrame(); | |||
try { | |||
qsp_api_initArgs(qsp_api_args); | |||
qsp_Locs[qsp_api_name](); | |||
qsp_api_getResult(); | |||
} finally { | |||
qsp_api_popLocalFrame(); | |||
}; | |||
}; | |||
function qsp_api_callAct(qsp_api_title) { | |||
qsp_api_pushLocalFrame(); | |||
try { | |||
qsp_Acts[qsp_api_title]['act'](); | |||
} finally { | |||
qsp_api_popLocalFrame(); | |||
}; | |||
}; | |||
function qsp_api_keyToId(qsp_api_key) { | |||
switch (qsp_api_key) { | |||
case 'all': | |||
return 'qsp'; | |||
case 'main': | |||
return 'qsp-main'; | |||
case 'stat': | |||
return 'qsp-stat'; | |||
case 'objs': | |||
return 'qsp-objs'; | |||
case 'acts': | |||
return 'qsp-acts'; | |||
case 'input': | |||
return 'qsp-input'; | |||
case 'image': | |||
return 'qsp-image'; | |||
case 'dropdown': | |||
return 'qsp-dropdown'; | |||
default: | |||
__PS_MV_REG = []; | |||
return qsp_api_reportError('Internal error!'); | |||
}; | |||
}; | |||
function qsp_api_getFrame(qsp_api_key) { | |||
__PS_MV_REG = []; | |||
return qsp_byId(qsp_api_keyToId(qsp_api_key)); | |||
}; | |||
function qsp_api_addText(qsp_api_key, qsp_api_text) { | |||
__PS_MV_REG = []; | |||
return qsp_api_appendId(qsp_api_keyToId(qsp_api_key), qsp_api_text); | |||
}; | |||
function qsp_api_getText(qsp_api_key) { | |||
__PS_MV_REG = []; | |||
return qsp_api_getId(qsp_api_keyToId(qsp_api_key)); | |||
}; | |||
function qsp_api_clearText(qsp_api_key) { | |||
__PS_MV_REG = []; | |||
return qsp_api_clearId(qsp_api_keyToId(qsp_api_key)); | |||
}; | |||
function qsp_api_enableFrame(qsp_api_key, qsp_api_enable) { | |||
var qsp_api_obj = qsp_api_getFrame(qsp_api_key); | |||
qsp_api_obj.style.display = qsp_api_enable ? 'block' : 'none'; | |||
}; | |||
function qsp_api_addAct(qsp_api_title, qsp_api_img, qsp_api_act) { | |||
qsp_Acts[qsp_api_title] = { 'title' : qsp_api_title, | |||
'img' : qsp_api_img, | |||
'act' : qsp_api_act, | |||
'selected' : null | |||
}; | |||
__PS_MV_REG = []; | |||
return qsp_api_updateActs(); | |||
}; | |||
function qsp_api_delAct(qsp_api_title) { | |||
delete qsp_Acts[qsp_api_title]; | |||
__PS_MV_REG = []; | |||
return qsp_api_updateActs(); | |||
}; | |||
function qsp_api_clearAct() { | |||
qsp_Acts = { }; | |||
__PS_MV_REG = []; | |||
return qsp_api_updateActs(); | |||
}; | |||
function qsp_api_updateActs() { | |||
qsp_api_clearId('qsp-acts'); | |||
var elt = qsp_byId('qsp-acts'); | |||
for (var qsp_api_title in qsp_Acts) { | |||
var qsp_api_obj = qsp_Acts[qsp_api_title]; | |||
elt.innerHTML += qsp_api_makeActHtml(qsp_api_title, qsp_api_obj['img']); | |||
}; | |||
}; | |||
function qsp_api_selectAct(qsp_api_title) { | |||
for (var qsp_api_k in qsp_Acts) { | |||
var qsp_api_v = qsp_Acts[qsp_api_k]; | |||
qsp_api_v['selected'] = null; | |||
}; | |||
qsp_Acts[qsp_api_title]['selected'] = true; | |||
__PS_MV_REG = []; | |||
return qsp_api_callServLoc('$ONACTSEL'); | |||
}; | |||
function qsp_api_qspfor(qsp_api_name, qsp_api_index, qsp_api_from, qsp_api_to, step, body) { | |||
for (var qsp_api_i = qsp_api_from; qsp_api_i <= qsp_api_to; qsp_api_i += step) { | |||
qsp_api_setVar(qsp_api_name, qsp_api_index, 'num', qsp_api_i); | |||
if (!await (body())) { | |||
__PS_MV_REG = []; | |||
return; | |||
}; | |||
}; | |||
}; | |||
function qsp_api_newVar(qsp_api_slot) { | |||
var qsp_api_indexes = Array.prototype.slice.call(arguments, 1); | |||
var qsp_api_v = []; | |||
for (var qsp_api_index = null, _js_idx2 = 0; _js_idx2 < qsp_api_indexes.length; _js_idx2 += 1) { | |||
qsp_api_index = qsp_api_indexes[_js_idx2]; | |||
qsp_api_v[qsp_api_index] = '$' === qsp_api_slot[0] ? '' : 0; | |||
}; | |||
qsp_api_v['indexes'] = { }; | |||
__PS_MV_REG = []; | |||
return qsp_api_v; | |||
}; | |||
function qsp_api_setStrElement(qsp_api_slot, qsp_api_index, qsp_api_value) { | |||
if (qsp_api_slot['indexes'].hasOwnProperty(qsp_api_index)) { | |||
qsp_api_slot[null][qsp_api_slot['indexes'][qsp_api_index]] = qsp_api_value; | |||
} else { | |||
qsp_api_slot.push(qsp_api_value); | |||
qsp_api_slot[qsp_api_index] = qsp_api_slot.length; | |||
}; | |||
}; | |||
function qsp_api_setAnyElement(qsp_api_slot, qsp_api_index, qsp_api_value) { | |||
if (qsp_api_index == null) { | |||
qsp_api_slot.push(qsp_api_value); | |||
} else if (typeof qsp_api_index === 'number') { | |||
qsp_api_slot[qsp_api_index] = qsp_api_value; | |||
} else if (typeof qsp_api_index === 'string') { | |||
qsp_api_setStrElement(qsp_api_slot, qsp_api_index, qsp_api_value); | |||
} else { | |||
qsp_api_reportError('INTERNAL ERROR'); | |||
}; | |||
}; | |||
function qsp_api_setServVar(qsp_api_name, qsp_api_index, qsp_api_value) { | |||
var qsp_api_slot = qsp_Globals[qsp_api_name]; | |||
qsp_api_setAnyElement(qsp_api_slot, qsp_api_index, qsp_api_value); | |||
qsp_api_servVars[qsp_api_name]['body'](qsp_api_value, qsp_api_index); | |||
}; | |||
function qsp_api_getElement(qsp_api_slot, qsp_api_index) { | |||
return typeof qsp_api_index === 'number' ? qsp_api_slot[qsp_api_index] : qsp_api_slot[qsp_api_slot['indexes'][qsp_api_index]]; | |||
}; | |||
function qsp_api_getGlobal(qsp_api_name, qsp_api_index) { | |||
return qsp_Globals[qsp_api_name][qsp_api_index]; | |||
}; | |||
function qsp_api_killVar(qsp_api_store, qsp_api_name, qsp_api_index) { | |||
qsp_api_name = qsp_api_name.toUpperCase(); | |||
if (qsp_api_index && 0 !== qsp_api_index) { | |||
qsp_Globals[qsp_api_name].qsp_api_kill(qsp_api_index); | |||
} else { | |||
delete qsp_Globals[qsp_api_name]; | |||
}; | |||
}; | |||
function qsp_api_arraySize(qsp_api_name) { | |||
__PS_MV_REG = []; | |||
return qsp_api_varRef(qsp_api_name)['values'].length; | |||
}; | |||
function qsp_api_pushLocalFrame() { | |||
qsp_Locals.push({ }); | |||
}; | |||
function qsp_api_popLocalFrame() { | |||
qsp_Locals.pop(); | |||
}; | |||
function qsp_api_currentLocalFrame() { | |||
return qsp_Locals[qsp_Locals.length - 1]; | |||
}; | |||
function qsp_api_selectObj(qsp_api_title, qsp_api_img) { | |||
for (var qsp_api_k in qsp_Objs) { | |||
var qsp_api_v = qsp_Objs[qsp_api_k]; | |||
qsp_api_v['selected'] = null; | |||
}; | |||
qsp_Objs[qsp_api_title]['selected'] = true; | |||
__PS_MV_REG = []; | |||
return qsp_api_callServLoc('$ONOBJSEL', qsp_api_title, qsp_api_img); | |||
}; | |||
function qsp_api_updateObjs() { | |||
var elt = qsp_byId('qsp-objs'); | |||
elt.innerHTML = '<ul>'; | |||
for (var qsp_api_name in qsp_Objs) { | |||
var qsp_api_obj = qsp_Objs[qsp_api_name]; | |||
elt.innerHTML += qsp_api_makeObj(qsp_api_name, qsp_api_obj['img'], qsp_api_obj['selected']); | |||
}; | |||
__PS_MV_REG = []; | |||
return elt.innerHTML += '</ul>'; | |||
}; | |||
function qsp_api_openMenu(qsp_api_menuData) { | |||
var elt = qsp_api_getFrame('dropdown'); | |||
var qsp_api_i = 0; | |||
var _js4 = qsp_api_menuData.length; | |||
for (var _js3 = 0; _js3 < _js4; _js3 += 1) { | |||
var qsp_api_item = qsp_api_menuData[_js3]; | |||
++qsp_api_i; | |||
elt.innerHTML += qsp_api_item === 'delimiter' ? qsp_api_makeMenuDelimiter(qsp_api_i) : qsp_api_makeMenuItemHtml(qsp_api_i, qsp_api_item['text'], qsp_api_item['icon'], qsp_api_item['loc']); | |||
}; | |||
var mouse5 = window.qsp_api_mouse; | |||
elt.style.left = mouse5[0] + 'px'; | |||
elt.style.top = mouse5[1] + 'px'; | |||
if (document.body.qsp_api_innerWidth > mouse5[0] + elt.qsp_api_innerWidth) { | |||
elt.style.left += elt.qsp_api_innerWidth; | |||
}; | |||
if (document.body.qsp_api_innerHeight > mouse5[0] + elt.qsp_api_innerHeight) { | |||
elt.style.top += elt.qsp_api_innerHeight; | |||
}; | |||
__PS_MV_REG = []; | |||
return elt.style.display = 'block'; | |||
}; | |||
function qsp_api_finishMenu(qsp_api_loc) { | |||
if (qsp_MenuResume) { | |||
var elt = qsp_api_getFrame('dropdown'); | |||
elt.innerHTML = ''; | |||
elt.style.display = 'none'; | |||
qsp_MenuResume(); | |||
qsp_MenuResume = null; | |||
if (qsp_api_loc) { | |||
qsp_api_callLoc(qsp_api_loc); | |||
}; | |||
}; | |||
}; | |||
function qsp_api_menu(qsp_api_menuData) { | |||
new Promise(function (qsp_api_resolve) { | |||
qsp_api_startSleeping(); | |||
var qsp_api_resume = function () { | |||
qsp_api_finishSleeping(); | |||
__PS_MV_REG = []; | |||
return qsp_api_resolve(); | |||
}; | |||
qsp_api_openMenu(qsp_api_menuData); | |||
__PS_MV_REG = []; | |||
return qsp_MenuResume = qsp_api_resume; | |||
}); | |||
}; | |||
function qsp_api_cleanAudio() { | |||
var _js6 = Object.keys(qsp_Playing); | |||
var _js8 = _js6.length; | |||
for (var _js7 = 0; _js7 < _js8; _js7 += 1) { | |||
var qsp_api_k = _js6[_js7]; | |||
var qsp_api_v = qsp_Playing[qsp_api_k]; | |||
if (qsp_api_v.qsp_api_ended) { | |||
delete qsp_Playing.qsp_api_k; | |||
}; | |||
}; | |||
}; | |||
function qsp_api_showImage(qsp_api_path) { | |||
var qsp_api_img = qsp_api_getFrame('image'); | |||
if (qsp_api_path) { | |||
qsp_api_img.src = qsp_api_path; | |||
__PS_MV_REG = []; | |||
return qsp_api_img.style.display = 'flex'; | |||
} else { | |||
qsp_api_img.src = ''; | |||
__PS_MV_REG = []; | |||
return qsp_api_img.style.display = 'hidden'; | |||
}; | |||
}; | |||
function qsp_api_showInlineImages(qsp_api_frameName, qsp_api_images) { | |||
var qsp_api_frame = qsp_api_getFrame(qsp_api_frameName); | |||
var qsp_api_text = ''; | |||
qsp_api_text += '<div style=\'position:relative; display: inline-block\'>'; | |||
qsp_api_text += '<img src=\'' + qsp_api_images[0] + '\'>'; | |||
var _js9 = qsp_api_images.slice(1); | |||
var _js11 = _js9.length; | |||
for (var _js10 = 0; _js10 < _js11; _js10 += 1) { | |||
var qsp_api_image = _js9[_js10]; | |||
qsp_api_text += '<img style=\'position:absolute\' src=\'' + qsp_api_image + '\'>'; | |||
}; | |||
qsp_api_text += '</div>'; | |||
__PS_MV_REG = []; | |||
return qsp_api_frame.innerHTML += qsp_api_text; | |||
}; | |||
function qsp_api_rgbString(qsp_api_rgb) { | |||
var qsp_api_red = qsp_api_rgb >> 16; | |||
var qsp_api_green = qsp_api_rgb >> 8 & 255; | |||
var qsp_api_blue = qsp_api_rgb & 255; | |||
var qsp_api_rgbToHex = function (qsp_api_comp) { | |||
var qsp_api_hex = Number(qsp_api_comp).toString(16); | |||
__PS_MV_REG = []; | |||
return qsp_api_hex.length < 2 ? '0' + qsp_api_hex : qsp_api_hex; | |||
}; | |||
__PS_MV_REG = []; | |||
return '#' + qsp_api_rgbToHex(qsp_api_red) + qsp_api_rgbToHex(qsp_api_green) + qsp_api_rgbToHex(qsp_api_blue); | |||
}; | |||
function qsp_api_storeObj(qsp_api_key, qsp_api_obj) { | |||
qsp_api_storeStr(qsp_api_key, btoa(encodeURIComponent(JSON.stringify(qsp_api_obj)))); | |||
}; | |||
function qsp_api_storeStr(qsp_api_key, qsp_api_str) { | |||
localStorage.setItem('qsp_' + qsp_api_key, qsp_api_str); | |||
}; | |||
function qsp_api_loadObj(qsp_api_key) { | |||
__PS_MV_REG = []; | |||
return JSON.parse(encodeURIComponent(atob(qsp_api_loadStr(qsp_api_key)))); | |||
}; | |||
function qsp_api_loadStr(qsp_api_key) { | |||
return localStorage.getItem('qsp_' + qsp_api_key); | |||
}; | |||
function qsp_api_slotSavegame(qsp_api_slot, qsp_api_comment) { | |||
var qsp_api_saves = qsp_api_loadObj('saves'); | |||
qsp_api_saves.qsp_api_slot = qsp_api_comment; | |||
qsp_api_storeObj(qsp_api_saves); | |||
qsp_api_storeStr(qsp_api_slot, qsp_api_stateToBase64()); | |||
}; | |||
function qsp_api_slotLoadgame(qsp_api_slot) { | |||
qsp_api_base64ToState(qsp_api_loadStr(qsp_api_slot)); | |||
}; | |||
function qsp_api_slotDeletegame(qsp_api_slot) { | |||
var qsp_api_saves = qsp_api_loadObj('saves'); | |||
qsp_api_saves.qsp_api_slot = undefined; | |||
qsp_api_storeObj(qsp_api_saves); | |||
qsp_api_storeStr(qsp_api_slot, undefined); | |||
}; | |||
function qsp_api_slotListgames() { | |||
__PS_MV_REG = []; | |||
return qsp_api_loadObj('saves'); | |||
}; | |||
function qsp_api_opengame() { | |||
var qsp_api_element = document.createElement('input'); | |||
qsp_api_element.setAttribute('type', 'file'); | |||
qsp_api_element.setAttribute('id', 'qsp-opengame'); | |||
qsp_api_element.setAttribute('tabindex', -1); | |||
qsp_api_element.setAttribute('aria-hidden', true); | |||
qsp_api_element.style.display = 'block'; | |||
qsp_api_element.style.qsp_api_visibility = 'hidden'; | |||
qsp_api_element.style.position = 'fixed'; | |||
qsp_api_element.onchange = function (qsp_api_event) { | |||
var qsp_api_file = qsp_api_event.target.files[0]; | |||
var qsp_api_reader = new FileReader(); | |||
qsp_api_reader.onload = function (qsp_api_ev) { | |||
var target = qsp_api_ev.currentTarget; | |||
if (!target.result) { | |||
return null; | |||
}; | |||
qsp_api_base64ToState(target.result); | |||
__PS_MV_REG = []; | |||
return qsp_api_unstashState(); | |||
}; | |||
__PS_MV_REG = []; | |||
return qsp_api_reader.readAsText(qsp_api_file); | |||
}; | |||
document.body.appendChild(qsp_api_element); | |||
qsp_api_element.click(); | |||
return document.body.removeChild(qsp_api_element); | |||
}; | |||
function qsp_api_savegame() { | |||
var qsp_api_element = document.createElement('a'); | |||
qsp_api_element.setAttribute('href', 'data:text/plain;charset=utf-8,' + qsp_api_stateToBase64()); | |||
qsp_api_element.setAttribute('download', 'savegame.sav'); | |||
qsp_api_element.style.display = 'none'; | |||
document.body.appendChild(qsp_api_element); | |||
qsp_api_element.click(); | |||
__PS_MV_REG = []; | |||
return document.body.removeChild(qsp_api_element); | |||
}; | |||
function qsp_api_stashState(qsp_api_args) { | |||
qsp_api_callServLoc('$ONGSAVE'); | |||
qsp_StateStash = JSON.stringify({ 'vars' : qsp_Globals, | |||
'objs' : qsp_Objs, | |||
'loc-args' : qsp_api_args, | |||
'msecs' : Date.now() - qsp_StartedAt, | |||
'timer-interval' : qsp_TimerInterval, | |||
'main-html' : qsp_api_getFrame('main').innerHTML, | |||
'stat-html' : qsp_api_getFrame('stat').innerHTML, | |||
'next-location' : qsp_CurrentLocation | |||
}); | |||
}; | |||
function qsp_api_unstashState() { | |||
var qsp_api_data = JSON.parse(qsp_StateStash); | |||
qsp_api_clearAct(); | |||
qsp_Globals = qsp_api_data['vars']; | |||
var _js12 = Object.keys(qsp_Globals); | |||
var _js14 = _js12.length; | |||
for (var _js13 = 0; _js13 < _js14; _js13 += 1) { | |||
var qsp_api_k = _js12[_js13]; | |||
Object.setPrototypeOf(qsp_Globals[qsp_api_k], qsp_api_Var.prototype); | |||
}; | |||
qsp_StartedAt = Date.now() - qsp_api_data['msecs']; | |||
qsp_Objs = qsp_api_data['objs']; | |||
qsp_CurrentLocation = qsp_api_data['next-location']; | |||
qsp_api_getFrame('main').innerHTML = qsp_api_data['main-html']; | |||
qsp_api_getFrame('stat').innerHTML = qsp_api_data['stat-html']; | |||
qsp_api_updateObjs(); | |||
qsp_api_setTimer(qsp_api_data['timer-interval']); | |||
qsp_api_callServLoc('$ONGLOAD'); | |||
qsp_api_callLoc(qsp_CurrentLocation, qsp_api_data['loc-args']); | |||
}; | |||
function qsp_api_stateToBase64() { | |||
__PS_MV_REG = []; | |||
return btoa(encodeURIComponent(qsp_StateStash)); | |||
}; | |||
function qsp_api_base64ToState(qsp_api_data) { | |||
__PS_MV_REG = []; | |||
return qsp_StateStash = decodeURIComponent(atob(qsp_api_data)); | |||
}; | |||
function qsp_api_setTimer(qsp_api_interval) { | |||
qsp_TimerInterval = qsp_api_interval; | |||
clearInterval(qsp_TimerObj); | |||
__PS_MV_REG = []; | |||
return qsp_TimerObj = setInterval(function () { | |||
__PS_MV_REG = []; | |||
return qsp_api_callServLoc('$COUNTER'); | |||
}, qsp_api_interval); | |||
}; | |||
if ('undefined' === typeof qsp_api_servVars) { | |||
var qsp_api_servVars = { }; | |||
}; | |||
qsp_api_servVars['$BACKIMAGE'] = { 'name' : '$BACKIMAGE', 'body' : function (qsp_api_path) { | |||
__PS_MV_REG = []; | |||
return qsp_api_getFrame('main').style.backgroundImage = qsp_api_path; | |||
} }; | |||
qsp_api_servVars['BCOLOR'] = { 'name' : 'BCOLOR', 'body' : function (color) { | |||
__PS_MV_REG = []; | |||
return qsp_api_getFrame('all').style.backgroundColor = qsp_api_rgbString(color); | |||
} }; | |||
qsp_api_servVars['FCOLOR'] = { 'name' : 'FCOLOR', 'body' : function (color) { | |||
__PS_MV_REG = []; | |||
return qsp_api_getFrame('all').style.color = qsp_api_rgbString(color); | |||
} }; | |||
qsp_api_servVars['LCOLOR'] = { 'name' : 'LCOLOR', 'body' : function (color) { | |||
__PS_MV_REG = []; | |||
return qsp_api_getFrame('style').innerText = 'a { color: ' + qsp_api_rgbString(color) + ';}'; | |||
} }; | |||
qsp_api_servVars['FSIZE'] = { 'name' : 'FSIZE', 'body' : function (size) { | |||
__PS_MV_REG = []; | |||
return qsp_api_getFrame('all').style.fontSize = size; | |||
} }; | |||
qsp_api_servVars['$FNAME'] = { 'name' : '$FNAME', 'body' : function (fontName) { | |||
__PS_MV_REG = []; | |||
return qsp_api_getFrame('all').style.fontFamily = fontName + ',serif'; | |||
} }; | |||
function qsp_lib_goto(target, qsp_lib_args) { | |||
qsp_api_clearText('main'); | |||
qsp_lib_xgoto(target, qsp_lib_args); | |||
}; | |||
function qsp_lib_xgoto(target, qsp_lib_args) { | |||
qsp_lib_args = qsp_lib_args || []; | |||
qsp_api_clearAct(); | |||
qsp_CurrentLocation = target.toUpperCase(); | |||
qsp_api_stashState(qsp_lib_args); | |||
qsp_api_callLoc(qsp_CurrentLocation, qsp_lib_args); | |||
qsp_api_callServLoc('$ONNEWLOC'); | |||
}; | |||
function qsp_lib_obj(qsp_lib_name) { | |||
return qsp_Objs.hasOwnProperty(qsp_lib_name); | |||
}; | |||
function qsp_lib_loc(qsp_lib_name) { | |||
return qsp_Locs.hasOwnProperty(qsp_lib_name); | |||
}; | |||
function qsp_lib_rand(qsp_lib_a, qsp_lib_b) { | |||
if (qsp_lib_b === undefined) { | |||
qsp_lib_b = 1; | |||
}; | |||
var min15 = Math.min(qsp_lib_a, qsp_lib_b); | |||
var max16 = Math.max(qsp_lib_a, qsp_lib_b); | |||
__PS_MV_REG = []; | |||
return min15 + qsp_lib_Math.random(max16 - min15); | |||
}; | |||
function qsp_lib_copyarr(qsp_lib_to, qsp_lib_from, qsp_lib_start, count) { | |||
__PS_MV_REG = []; | |||
var qsp_lib_toName = qsp_api_varRealName(qsp_lib_to); | |||
var qsp_lib_toSlot = __PS_MV_REG[0]; | |||
__PS_MV_REG = []; | |||
var qsp_lib_fromName = qsp_api_varRealName(qsp_lib_from); | |||
var qsp_lib_fromSlot = __PS_MV_REG[0]; | |||
var _js17 = Math.min(qsp_api_arraySize(qsp_lib_fromName), qsp_lib_start + count); | |||
for (var qsp_lib_i = qsp_lib_start; qsp_lib_i <= _js17; qsp_lib_i += 1) { | |||
qsp_api_setVar(qsp_lib_toName, qsp_lib_start + qsp_lib_i, qsp_lib_toSlot, qsp_api_getVar(qsp_lib_fromName, qsp_lib_start + qsp_lib_i, qsp_lib_fromSlot)); | |||
}; | |||
}; | |||
function qsp_lib_arrpos(qsp_lib_name, qsp_lib_value, qsp_lib_start) { | |||
if (qsp_lib_start === undefined) { | |||
qsp_lib_start = 0; | |||
}; | |||
__PS_MV_REG = []; | |||
var qsp_lib_realName = qsp_api_varRealName(qsp_lib_name); | |||
var qsp_lib_slot = __PS_MV_REG[0]; | |||
var _js18 = qsp_api_arraySize(qsp_lib_name); | |||
for (var qsp_lib_i = qsp_lib_start; qsp_lib_i <= _js18; qsp_lib_i += 1) { | |||
if (qsp_api_getVar(qsp_lib_realName, qsp_lib_i, qsp_lib_slot) === qsp_lib_value) { | |||
__PS_MV_REG = []; | |||
return qsp_lib_i; | |||
}; | |||
}; | |||
__PS_MV_REG = []; | |||
return -1; | |||
}; | |||
function qsp_lib_arrcomp(qsp_lib_name, qsp_lib_pattern, qsp_lib_start) { | |||
if (qsp_lib_start === undefined) { | |||
qsp_lib_start = 0; | |||
}; | |||
__PS_MV_REG = []; | |||
var qsp_lib_realName = qsp_api_varRealName(qsp_lib_name); | |||
var qsp_lib_slot = __PS_MV_REG[0]; | |||
var _js19 = qsp_api_arraySize(qsp_lib_name); | |||
for (var qsp_lib_i = qsp_lib_start; qsp_lib_i <= _js19; qsp_lib_i += 1) { | |||
if (qsp_api_getVar(qsp_lib_realName, qsp_lib_i, qsp_lib_slot).match(qsp_lib_pattern)) { | |||
__PS_MV_REG = []; | |||
return qsp_lib_i; | |||
}; | |||
}; | |||
__PS_MV_REG = []; | |||
return -1; | |||
}; | |||
function qsp_lib_instr(qsp_lib_s, qsp_lib_subs, qsp_lib_start) { | |||
if (qsp_lib_start === undefined) { | |||
qsp_lib_start = 1; | |||
}; | |||
return qsp_lib_start + qsp_lib_s.qsp_lib_substring(qsp_lib_start - 1).search(qsp_lib_subs); | |||
}; | |||
function qsp_lib_isnum(qsp_lib_s) { | |||
__PS_MV_REG = []; | |||
return qsp_lib_isNaN(qsp_lib_s) ? 0 : -1; | |||
}; | |||
function qsp_lib_strcomp(qsp_lib_s, qsp_lib_pattern) { | |||
return qsp_lib_s.match(qsp_lib_pattern) ? -1 : 0; | |||
}; | |||
function qsp_lib_strfind(qsp_lib_s, qsp_lib_pattern, qsp_lib_group) { | |||
var qsp_lib_re = new qsp_lib_RegExp(qsp_lib_pattern); | |||
var match = qsp_lib_re.qsp_lib_exec(qsp_lib_s); | |||
__PS_MV_REG = []; | |||
return match.qsp_lib_group(qsp_lib_group); | |||
}; | |||
function qsp_lib_strpos(qsp_lib_s, qsp_lib_pattern, qsp_lib_group) { | |||
if (qsp_lib_group === undefined) { | |||
qsp_lib_group = 0; | |||
}; | |||
var qsp_lib_re = new qsp_lib_RegExp(qsp_lib_pattern); | |||
var match = qsp_lib_re.qsp_lib_exec(qsp_lib_s); | |||
var qsp_lib_found = match.qsp_lib_group(qsp_lib_group); | |||
__PS_MV_REG = []; | |||
return qsp_lib_found ? qsp_lib_s.search(qsp_lib_found) : 0; | |||
}; | |||
function qsp_lib_iif(qsp_lib_condExpr, qsp_lib_thenExpr, qsp_lib_elseExpr) { | |||
return qsp_lib_condExpr ? qsp_lib_thenExpr : qsp_lib_elseExpr; | |||
}; | |||
function qsp_lib_gosub(target) { | |||
var qsp_lib_args = Array.prototype.slice.call(arguments, 1); | |||
qsp_api_callLoc(target, qsp_lib_args); | |||
}; | |||
function qsp_lib_func(target) { | |||
var qsp_lib_args = Array.prototype.slice.call(arguments, 1); | |||
__PS_MV_REG = []; | |||
return qsp_api_callLoc(target, qsp_lib_args); | |||
}; | |||
function qsp_lib_dynamic(block) { | |||
var qsp_lib_args = Array.prototype.slice.call(arguments, 1); | |||
if (typeof block === 'string') { | |||
qsp_api_reportError('DYNAMIC can\'t evaluate arbitrary strings.\\nUse {braces} to create blocks for DYNAMIC.'); | |||
}; | |||
qsp_api_initArgs(qsp_lib_args); | |||
block(qsp_lib_args); | |||
qsp_api_getResult(); | |||
}; | |||
function qsp_lib_dyneval(block) { | |||
var qsp_lib_args = Array.prototype.slice.call(arguments, 1); | |||
if (typeof block === 'string') { | |||
qsp_api_reportError('DYNEVAL can\'t evaluate arbitrary strings.\\nUse {braces} to create blocks for DYNEVAL.'); | |||
}; | |||
qsp_api_initArgs(qsp_lib_args); | |||
block(qsp_lib_args); | |||
__PS_MV_REG = []; | |||
return qsp_api_getResult(); | |||
}; | |||
function qsp_lib_mainP(qsp_lib_s) { | |||
qsp_api_addText('main', qsp_lib_s); | |||
}; | |||
function qsp_lib_mainPl(qsp_lib_s) { | |||
qsp_api_addText('main', qsp_lib_s); | |||
qsp_api_newline('main'); | |||
}; | |||
function qsp_lib_mainNl(qsp_lib_s) { | |||
qsp_api_newline('main'); | |||
qsp_api_addText('main', qsp_lib_s); | |||
}; | |||
function qsp_lib_maintxt(qsp_lib_s) { | |||
qsp_api_getText('main'); | |||
}; | |||
function qsp_lib_desc(qsp_lib_s) { | |||
return ''; | |||
}; | |||
function qsp_lib_mainClear() { | |||
qsp_api_clearText('main'); | |||
}; | |||
function qsp_lib_statP(qsp_lib_s) { | |||
qsp_api_addText('stat', qsp_lib_s); | |||
}; | |||
function qsp_lib_statPl(qsp_lib_s) { | |||
qsp_api_addText('stat', qsp_lib_s); | |||
qsp_api_newline('stat'); | |||
}; | |||
function qsp_lib_statNl(qsp_lib_s) { | |||
qsp_api_newline('stat'); | |||
qsp_api_addText('stat', qsp_lib_s); | |||
}; | |||
function qsp_lib_stattxt(qsp_lib_s) { | |||
qsp_api_getText('stat'); | |||
}; | |||
function qsp_lib_statClear() { | |||
qsp_api_clearText('stat'); | |||
}; | |||
function qsp_lib_cls() { | |||
qsp_lib_statClear(); | |||
qsp_lib_mainClear(); | |||
qsp_api_clearAct(); | |||
qsp_lib_cmdclear(); | |||
}; | |||
function qsp_lib_selact() { | |||
for (var qsp_lib_k in qsp_Acts) { | |||
var qsp_lib_v = qsp_Acts[qsp_lib_k]; | |||
if (qsp_lib_v['selected']) { | |||
return qsp_lib_v['name']; | |||
}; | |||
}; | |||
}; | |||
function qsp_lib_curacts() { | |||
var qsp_lib_acts = qsp_api_copyObj(qsp_Acts); | |||
__PS_MV_REG = []; | |||
return function () { | |||
qsp_Acts = qsp_lib_acts; | |||
}; | |||
}; | |||
function qsp_lib_addobj(qsp_lib_name, qsp_lib_img) { | |||
qsp_lib_img = qsp_lib_img || ''; | |||
qsp_Objs[qsp_lib_name] = { 'name' : qsp_lib_name, | |||
'img' : qsp_lib_img, | |||
'selected' : null | |||
}; | |||
qsp_api_updateObjs(); | |||
qsp_api_callServLoc('$ONOBJADD', qsp_lib_name, qsp_lib_img); | |||
}; | |||
function qsp_lib_delobj(qsp_lib_name) { | |||
delete qsp_Objs[qsp_lib_name]; | |||
qsp_api_updateObjs(); | |||
qsp_api_callServLoc('$ONOBJDEL', qsp_lib_name); | |||
}; | |||
function qsp_lib_killobj(qsp_lib_num) { | |||
if (null === qsp_lib_num) { | |||
qsp_Objs = { }; | |||
} else { | |||
qsp_lib_delobj(Object.keys(qsp_Objs)[qsp_lib_num]); | |||
}; | |||
qsp_api_updateObjs(); | |||
}; | |||
function qsp_lib_selobj() { | |||
for (var qsp_lib_k in qsp_Objs) { | |||
var qsp_lib_v = qsp_Objs[qsp_lib_k]; | |||
if (qsp_lib_v['selected']) { | |||
return qsp_lib_v['name']; | |||
}; | |||
}; | |||
}; | |||
function qsp_lib_unsel() { | |||
for (var qsp_lib_k in qsp_Objs) { | |||
var qsp_lib_v = qsp_Objs[qsp_lib_k]; | |||
qsp_lib_v['selected'] = null; | |||
}; | |||
}; | |||
function qsp_lib_menu(qsp_lib_menuName) { | |||
var qsp_lib_menuData = []; | |||
var _js20 = qsp_api_getArray(qsp_api_varRealName(qsp_lib_menuName)).values; | |||
var _js22 = _js20.length; | |||
for (var _js21 = 0; _js21 < _js22; _js21 += 1) { | |||
var qsp_lib_itemObj = _js20[_js21]; | |||
var qsp_lib_item = qsp_lib_itemObj['str']; | |||
if (qsp_lib_item === '') { | |||
break; | |||
} else if (qsp_lib_item === '-:-') { | |||
qsp_lib_menuData.push('delimiter'); | |||
} else { | |||
var qsp_lib_tokens = qsp_lib_item.split(':'); | |||
if (qsp_lib_tokens.length === 2) { | |||
qsp_lib_tokens.push(''); | |||
}; | |||
var qsp_lib_text = qsp_lib_tokens.splice(0, qsp_lib_tokens.length - 2).join(':'); | |||
var qsp_lib_loc = qsp_lib_tokens[qsp_lib_tokens.length - 2]; | |||
var qsp_lib_icon = qsp_lib_tokens[qsp_lib_tokens.length - 1]; | |||
qsp_lib_menuData.push({ 'text' : qsp_lib_text, | |||
'loc' : qsp_lib_loc, | |||
'icon' : qsp_lib_icon | |||
}); | |||
}; | |||
}; | |||
qsp_api_menu(qsp_lib_menuData); | |||
}; | |||
function qsp_lib_play(qsp_lib_filename, qsp_lib_volume) { | |||
if (qsp_lib_volume === undefined) { | |||
qsp_lib_volume = 100; | |||
}; | |||
var qsp_lib_audio = new qsp_lib_Audio(qsp_lib_filename); | |||
qsp_Playing[qsp_lib_filename] = qsp_lib_audio; | |||
qsp_lib_audio.qsp_lib_volume = qsp_lib_volume * 0.01; | |||
__PS_MV_REG = []; | |||
return qsp_lib_audio.qsp_lib_play(); | |||
}; | |||
function close(qsp_lib_filename) { | |||
qsp_Playing[qsp_lib_filename](qsp_lib_stop); | |||
delete qsp_Playing[qsp_lib_filename]; | |||
}; | |||
function qsp_lib_closeall() { | |||
var _js23 = Object.keys(qsp_Playing); | |||
var _js25 = _js23.length; | |||
for (var _js24 = 0; _js24 < _js25; _js24 += 1) { | |||
var qsp_lib_k = _js23[_js24]; | |||
var qsp_lib_v = qsp_Playing[qsp_lib_k]; | |||
qsp_lib_v(qsp_lib_stop); | |||
}; | |||
return qsp_Playing = { }; | |||
}; | |||
function qsp_lib_refint() { | |||
return null; | |||
}; | |||
function qsp_lib_usertxt() { | |||
var qsp_lib_input = qsp_byId('qsp-input'); | |||
__PS_MV_REG = []; | |||
return qsp_lib_input.qsp_lib_value; | |||
}; | |||
function qsp_lib_cmdclear() { | |||
var qsp_lib_input = qsp_byId('qsp-input'); | |||
__PS_MV_REG = []; | |||
return qsp_lib_input.qsp_lib_value = ''; | |||
}; | |||
function qsp_lib_input(qsp_lib_text) { | |||
return window.prompt(qsp_lib_text); | |||
}; | |||
function qsp_lib_msecscount() { | |||
return Date.now() - qsp_StartedAt; | |||
}; | |||
function qsp_lib_rgb(qsp_lib_red, qsp_lib_green, qsp_lib_blue) { | |||
return (qsp_lib_red << 16) + (qsp_lib_green << 8) + qsp_lib_blue; | |||
}; | |||
function qsp_lib_openqst(qsp_lib_name) { | |||
__PS_MV_REG = []; | |||
return qsp_api_runGame(qsp_lib_name); | |||
}; | |||
function qsp_lib_addqst(qsp_lib_name) { | |||
var qsp_lib_game = qsp_api_filenameGame(qsp_lib_name); | |||
__PS_MV_REG = []; | |||
return Object.assign(qsp_Locs, qsp_Games[qsp_lib_name]); | |||
}; | |||
function qsp_lib_killqst() { | |||
var _js27 = qsp_Games.length; | |||
for (var _js26 = 0; _js26 < _js27; _js26 += 1) { | |||
var _db28 = qsp_Games[_js26]; | |||
var qsp_lib_k = _db28[0]; | |||
var qsp_lib_v = _db28[1]; | |||
if (qsp_lib_k !== qsp_MainGame) { | |||
delete qsp_Locs[qsp_lib_k]; | |||
}; | |||
}; | |||
}; | |||
qsp_Games['9loops'] = { }; | |||
Object.assign(qsp_Globals, { 'X0' : qsp_api_newVar('X0', 0), | |||
'X' : qsp_api_newVar('X', 0), | |||
'Y0' : qsp_api_newVar('Y0', 0), | |||
'Y' : qsp_api_newVar('Y', 0), | |||
'S' : qsp_api_newVar('S', 0), | |||
'USEHTML' : qsp_api_newVar('USEHTML', 0), | |||
'RESULT' : qsp_api_newVar('RESULT', 0), | |||
'$RESULT' : qsp_api_newVar('$RESULT', 0), | |||
'$ONGLOAD' : qsp_api_newVar('$ONGLOAD', 0), | |||
'$ONGSAVE' : qsp_api_newVar('$ONGSAVE', 0), | |||
'$ONOBJADD' : qsp_api_newVar('$ONOBJADD', 0), | |||
'$ONOBJDEL' : qsp_api_newVar('$ONOBJDEL', 0), | |||
'$ONOBJSEL' : qsp_api_newVar('$ONOBJSEL', 0), | |||
'$ONNEWLOC' : qsp_api_newVar('$ONNEWLOC', 0), | |||
'$ONACTSEL' : qsp_api_newVar('$ONACTSEL', 0), | |||
'$COUNTER' : qsp_api_newVar('$COUNTER', 0), | |||
'$USERCOM' : qsp_api_newVar('$USERCOM', 0) | |||
}); | |||
qsp_Games['9loops']['LOOPS'] = async function (qsp_lib_args) { | |||
var qsp_lib__labels = []; | |||
qsp_lib__labels['_nil'] = async function () { | |||
return 'КОНЕЦ'; | |||
qsp_lib_statP('Это сообщение не будет выведено'); | |||
__PS_MV_REG = []; | |||
return 'КОНЕЦ'; | |||
}; | |||
qsp_lib__labels['КОНЕЦ'] = async function () { | |||
qsp_lib_statP('А это сообщение пользователь увидит'); | |||
qsp_Globals['S'][0] = 0; | |||
__PS_MV_REG = []; | |||
return 'LOOP1'; | |||
}; | |||
qsp_lib__labels['LOOP1'] = async function () { | |||
while (true) { | |||
if (qsp_Globals['S'][0] < 9) { | |||
qsp_Globals['S'][0] += 1; | |||
qsp_lib_statPl(qsp_Globals['S'][0]); | |||
continue; | |||
}; | |||
qsp_lib_statP('Всё!'); | |||
break; | |||
}; | |||
__PS_MV_REG = []; | |||
return 'LOOP2'; | |||
}; | |||
qsp_lib__labels['LOOP2'] = async function () { | |||
while (true) { | |||
if (qsp_Globals['Y'][0] < qsp_Globals['Y0'][0]) { | |||
if (qsp_Globals['X'][0] < qsp_Globals['X0'][0]) { | |||
qsp_Globals['X'][0] += 1; | |||
continue; | |||
}; | |||
qsp_Globals['Y'][0] += 1; | |||
qsp_Globals['X'][0] = 0; | |||
continue; | |||
if (qsp_Globals['Y'][0] > qsp_Globals['Y0'][0]) { | |||
return; | |||
}; | |||
}; | |||
break; | |||
}; | |||
}; | |||
for (var qsp_lib__nextblock = '_nil'; qsp_lib__nextblock; qsp_lib__nextblock = await (qsp_lib__labels[qsp_lib__nextblock]())) { | |||
}; | |||
};</script></body></html> |