Этот коммит содержится в:
Alexander Yakovlev 2019-09-26 23:59:45 +07:00
Коммит 9760e92334
Подписано: oreolek
Идентификатор ключа GPG: 1CDC4B7820C93BD3
17 изменённых файлов: 1310 добавлений и 0 удалений

13
.editorconfig Обычный файл
Просмотреть файл

@ -0,0 +1,13 @@
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[Makefile]
indent_style = tab
indent_size = 4

5
.gitignore поставляемый Обычный файл
Просмотреть файл

@ -0,0 +1,5 @@
out.z5
out.ulx
interpreter/main.css
interpreter/main.css.map
interpreter/scss/.sass-cache/

9
Makefile Обычный файл
Просмотреть файл

@ -0,0 +1,9 @@
all: css-release
css:
sass interpreter/scss/main.scss:interpreter/main.css
css-watch:
sass --watch interpreter/scss/main.scss:interpreter/main.css
css-release:
cd interpreter/scss
sass interpreter/scss/main.scss:interpreter/main.css --no-source-map --style=compressed

Двоичные данные
Wand.ulx Обычный файл

Двоичный файл не отображается.

51
index.html Обычный файл
Просмотреть файл

@ -0,0 +1,51 @@
<!doctype html>
<html>
<head>
<title>Vorple</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="interpreter/main.css">
</head>
<body>
<main id="haven">
<div id="output">
<div id="window0" aria-live="polite" aria-atomic="false" aria-relevant="additions"></div>
</div>
<form id="lineinput">
<label id="lineinput-prefix" for="lineinput-field">&gt; </label>
<input name="lineinput" placeholder="Enter a command" id="lineinput-field" type="text" autocomplete="off" autocapitalize="none">
</form>
<div id="loader">
<h2 id="loader-message">Loading scripts</h2>
<div id="spinner">V</div>
</div>
</main>
<script src="interpreter/vorple.min.js"></script>
<script>
vorple.options = {
autosave: false,
engineColors: false,
resource_paths: {
images: "resources/images",
audio: "resources/audio"
},
// URL to the game file
story: "Wand.ulx"
};
Module.locateFile = function( name ) {
return "interpreter/" + name;
};
vorple.debug.off();
vorple.init();
</script>
</body>
</html>

Двоичные данные
interpreter/engine.bin Обычный файл

Двоичный файл не отображается.

17
interpreter/engine.js Обычный файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Двоичные данные
interpreter/engine.js.mem Обычный файл

Двоичный файл не отображается.

312
interpreter/scss/haven.scss Обычный файл
Просмотреть файл

@ -0,0 +1,312 @@
body, html {
margin: 0;
padding: 0;
}
body {
overflow-y: scroll;
}
body, input, label, #loader {
color: #000;
background-color: #fff;
}
input[type=text] {
height: auto;
font-size: inherit;
}
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
html.theme-dark body,
html.theme-dark input,
html.theme-dark label,
html.theme-dark #loader {
color: #aaa;
background-color: #000;
}
html.monospace body,
html.monospace input,
html.monospace label,
html.monospace #loader {
font-family: monospace;
}
body, input, label {
font-size: 17px;
}
#output {
padding: 0 15px 10px 15px;
margin: 0 auto;
}
#output span {
white-space: pre-wrap;
}
#lineinput-field {
border: 0;
box-shadow: none;
display: inline;
outline: 0;
padding: 0;
width: 100%;
}
#prompt {
display: inline-block;
width: 500px;
}
.hugowindow {
position: fixed;
overflow: hidden;
}
.safarifix .hugowindow {
position: absolute;
}
#fatal-error {
position: fixed;
top: 0;
left: 0;
right: 0;
padding: 1em;
color: #fff;
background-color: #600;
white-space: pre-wrap;
}
#loader {
position: fixed;
top: 0;
right: 0;
left: 0;
bottom: 0;
}
#loader-message {
margin-top: 90px;
text-align: center;
}
#loader.stopped #loader-message {
text-decoration: line-through;
}
#spinner {
position: fixed;
font-family: serif;
color: #888;
top: 180px;
left: 0;
width: 100%;
text-align: center;
height: 50px;
line-height: 100%;
font-size: 50px;
animation: spin 2s ease-in-out forwards;
animation-iteration-count: infinite;
}
@-ms-keyframes spin {
from {
-ms-transform: rotate(0deg);
}
to {
-ms-transform: rotate(360deg);
}
}
@-moz-keyframes spin {
from {
-moz-transform: rotate(0deg);
}
to {
-moz-transform: rotate(360deg);
}
}
@-webkit-keyframes spin {
from {
-webkit-transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
/* Text colors and font styles */
.font-bold {
font-weight: bold;
}
.font-italic {
font-style: italic;
}
.font-underline {
text-decoration: underline;
}
.font-proportional {
font-family: serif;
font-size: 17px;
}
.font-fixed-width {
font-family: monospace;
font-size: 15px;
padding: 2px 0;
}
.textcolor-0 { /* black */
color: #000;
}
.textcolor-1 { /* blue */
color: #00a;
}
.textcolor-2 { /* green */
color: #0a0;
}
.textcolor-3 { /* cyan */
color: #0aa;
}
.textcolor-4 { /* red */
color: #a00;
}
.textcolor-5 { /* magenta */
color: #a0a;
}
.textcolor-6 { /* brown */
color: #a50;
}
.textcolor-7 { /* white */
color: #aaa;
}
.textcolor-8 { /* dark gray */
color: #555;
}
.textcolor-9 { /* light blue */
color: #55f;
}
.textcolor-10 { /* light green */
color: #5f5;
}
.textcolor-11 { /* light cyan */
color: #5ff;
}
.textcolor-12 { /* light red */
color: #f55;
}
.textcolor-13 { /* light magenta */
color: #f5f;
}
.textcolor-14 { /* yellow */
color: #ff5;
}
.textcolor-15 { /* bright white */
color: #fff;
}
.bgcolor-0 { /* black */
background-color: #000;
}
.bgcolor-1 { /* blue */
background-color: #00a;
}
.bgcolor-2 { /* green */
background-color: #0a0;
}
.bgcolor-3 { /* cyan */
background-color: #0aa;
}
.bgcolor-4 { /* red */
background-color: #a00;
}
.bgcolor-5 { /* magenta */
background-color: #a0a;
}
.bgcolor-6 { /* brown */
background-color: #a50;
}
.bgcolor-7 { /* white */
background-color: #aaa;
}
.bgcolor-8 { /* dark gray */
background-color: #555;
}
.bgcolor-9 { /* light blue */
background-color: #55f;
}
.bgcolor-10 { /* light green */
background-color: #5f5;
}
.bgcolor-11 { /* light cyan */
background-color: #5ff;
}
.bgcolor-12 { /* light red */
background-color: #f55;
}
.bgcolor-13 { /* light magenta */
background-color: #f5f;
}
.bgcolor-14 { /* yellow */
background-color: #ff5;
}
.bgcolor-15 { /* bright white */
background-color: #fff;
}

42
interpreter/scss/main.scss Обычный файл
Просмотреть файл

@ -0,0 +1,42 @@
@import 'toastr';
@import 'vex';
@import 'vex-theme-plain';
@import 'haven';
@import 'vorple';
html {
height: 100%;
}
body {
background-image: url('../resources/images/refectory.jpg');
background-size: cover;
background-repeat: no-repeat;
color: white;
text-shadow: black 1px 1px;
}
input, label, #loader {
color: white;
background-color: transparent;
}
#lineinput {
display: flex;
label {
margin-right: 0.5em;
}
}
#window0 {
position: absolute;
top: 10%;
height: 80%;
overflow-y: scroll;
z-index: 0;
}
#lineinput {
position: fixed;
z-index: 5;
bottom: 1rem;
}
#output,
#lineinput {
max-width: 751px;
}

228
interpreter/scss/toastr.scss Обычный файл
Просмотреть файл

@ -0,0 +1,228 @@
.toast-title {
font-weight: bold;
}
.toast-message {
-ms-word-wrap: break-word;
word-wrap: break-word;
}
.toast-message a,
.toast-message label {
color: #FFFFFF;
}
.toast-message a:hover {
color: #CCCCCC;
text-decoration: none;
}
.toast-close-button {
position: relative;
right: -0.3em;
top: -0.3em;
float: right;
font-size: 20px;
font-weight: bold;
color: #FFFFFF;
-webkit-text-shadow: 0 1px 0 #ffffff;
text-shadow: 0 1px 0 #ffffff;
opacity: 0.8;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
filter: alpha(opacity=80);
line-height: 1;
}
.toast-close-button:hover,
.toast-close-button:focus {
color: #000000;
text-decoration: none;
cursor: pointer;
opacity: 0.4;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
filter: alpha(opacity=40);
}
.rtl .toast-close-button {
left: -0.3em;
float: left;
right: 0.3em;
}
/*Additional properties for button version
iOS requires the button element instead of an anchor tag.
If you want the anchor version, it requires `href="#"`.*/
button.toast-close-button {
padding: 0;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
}
.toast-top-center {
top: 0;
right: 0;
width: 100%;
}
.toast-bottom-center {
bottom: 0;
right: 0;
width: 100%;
}
.toast-top-full-width {
top: 0;
right: 0;
width: 100%;
}
.toast-bottom-full-width {
bottom: 0;
right: 0;
width: 100%;
}
.toast-top-left {
top: 12px;
left: 12px;
}
.toast-top-right {
top: 12px;
right: 12px;
}
.toast-bottom-right {
right: 12px;
bottom: 12px;
}
.toast-bottom-left {
bottom: 12px;
left: 12px;
}
#toast-container {
position: fixed;
z-index: 999999;
pointer-events: none;
/*overrides*/
}
#toast-container * {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
#toast-container > div {
position: relative;
pointer-events: auto;
overflow: hidden;
margin: 0 0 6px;
padding: 15px 15px 15px 50px;
width: 300px;
-moz-border-radius: 3px 3px 3px 3px;
-webkit-border-radius: 3px 3px 3px 3px;
border-radius: 3px 3px 3px 3px;
background-position: 15px center;
background-repeat: no-repeat;
-moz-box-shadow: 0 0 12px #999999;
-webkit-box-shadow: 0 0 12px #999999;
box-shadow: 0 0 12px #999999;
color: #FFFFFF;
opacity: 0.8;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
filter: alpha(opacity=80);
}
#toast-container > div.rtl {
direction: rtl;
padding: 15px 50px 15px 15px;
background-position: right 15px center;
}
#toast-container > div:hover {
-moz-box-shadow: 0 0 12px #000000;
-webkit-box-shadow: 0 0 12px #000000;
box-shadow: 0 0 12px #000000;
opacity: 1;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
filter: alpha(opacity=100);
cursor: pointer;
}
#toast-container > .toast-info {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}
#toast-container > .toast-error {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}
#toast-container > .toast-success {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}
#toast-container > .toast-warning {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
}
#toast-container.toast-top-center > div,
#toast-container.toast-bottom-center > div {
width: 300px;
margin-left: auto;
margin-right: auto;
}
#toast-container.toast-top-full-width > div,
#toast-container.toast-bottom-full-width > div {
width: 96%;
margin-left: auto;
margin-right: auto;
}
.toast {
background-color: #030303;
}
.toast-success {
background-color: #51A351;
}
.toast-error {
background-color: #BD362F;
}
.toast-info {
background-color: #2F96B4;
}
.toast-warning {
background-color: #F89406;
}
.toast-progress {
position: absolute;
left: 0;
bottom: 0;
height: 4px;
background-color: #000000;
opacity: 0.4;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
filter: alpha(opacity=40);
}
/*Responsive Design*/
@media all and (max-width: 240px) {
#toast-container > div {
padding: 8px 8px 8px 50px;
width: 11em;
}
#toast-container > div.rtl {
padding: 8px 50px 8px 8px;
}
#toast-container .toast-close-button {
right: -0.2em;
top: -0.2em;
}
#toast-container .rtl .toast-close-button {
left: -0.2em;
right: 0.2em;
}
}
@media all and (min-width: 241px) and (max-width: 480px) {
#toast-container > div {
padding: 8px 8px 8px 50px;
width: 18em;
}
#toast-container > div.rtl {
padding: 8px 50px 8px 8px;
}
#toast-container .toast-close-button {
right: -0.2em;
top: -0.2em;
}
#toast-container .rtl .toast-close-button {
left: -0.2em;
right: 0.2em;
}
}
@media all and (min-width: 481px) and (max-width: 768px) {
#toast-container > div {
padding: 15px 15px 15px 50px;
width: 25em;
}
#toast-container > div.rtl {
padding: 15px 50px 15px 15px;
}
}

107
interpreter/scss/vex-theme-plain.scss Обычный файл
Просмотреть файл

@ -0,0 +1,107 @@
@-webkit-keyframes vex-pulse {
0% {
box-shadow: inset 0 0 0 300px transparent; }
70% {
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
box-shadow: inset 0 0 0 300px transparent; } }
@keyframes vex-pulse {
0% {
box-shadow: inset 0 0 0 300px transparent; }
70% {
box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25); }
100% {
box-shadow: inset 0 0 0 300px transparent; } }
.vex.vex-theme-plain {
padding-top: 160px;
padding-bottom: 160px; }
.vex.vex-theme-plain .vex-content {
font-family: "Helvetica Neue", sans-serif;
background: #fff;
color: #444;
padding: 1em;
position: relative;
margin: 0 auto;
max-width: 100%;
width: 450px;
font-size: 1.1em;
line-height: 1.5em; }
.vex.vex-theme-plain .vex-content h1, .vex.vex-theme-plain .vex-content h2, .vex.vex-theme-plain .vex-content h3, .vex.vex-theme-plain .vex-content h4, .vex.vex-theme-plain .vex-content h5, .vex.vex-theme-plain .vex-content h6, .vex.vex-theme-plain .vex-content p, .vex.vex-theme-plain .vex-content ul, .vex.vex-theme-plain .vex-content li {
color: inherit; }
.vex.vex-theme-plain .vex-close {
position: absolute;
top: 0;
right: 0;
cursor: pointer; }
.vex.vex-theme-plain .vex-close:before {
position: absolute;
content: "\00D7";
font-size: 26px;
font-weight: normal;
line-height: 31px;
height: 30px;
width: 30px;
text-align: center;
top: 3px;
right: 3px;
color: #bbb;
background: transparent; }
.vex.vex-theme-plain .vex-close:hover:before, .vex.vex-theme-plain .vex-close:active:before {
color: #777;
background: #e0e0e0; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-message {
margin-bottom: .5em; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-input {
margin-bottom: 1em; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-input select, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="week"] {
background: #f0f0f0;
width: 100%;
padding: .25em .67em;
border: 0;
font-family: inherit;
font-weight: inherit;
font-size: inherit;
min-height: 2.5em;
margin: 0 0 .25em; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-input select:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-plain .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.2);
outline: none; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-buttons {
*zoom: 1; }
.vex.vex-theme-plain .vex-dialog-form .vex-dialog-buttons:after {
content: "";
display: table;
clear: both; }
.vex.vex-theme-plain .vex-dialog-button {
border-radius: 0;
border: 0;
float: right;
margin: 0 0 0 .5em;
font-family: inherit;
text-transform: uppercase;
letter-spacing: .1em;
font-size: .8em;
line-height: 1em;
padding: .75em 2em; }
.vex.vex-theme-plain .vex-dialog-button.vex-last {
margin-left: 0; }
.vex.vex-theme-plain .vex-dialog-button:focus {
-webkit-animation: vex-pulse 1.1s infinite;
animation: vex-pulse 1.1s infinite;
outline: none; }
@media (max-width: 568px) {
.vex.vex-theme-plain .vex-dialog-button:focus {
-webkit-animation: none;
animation: none; } }
.vex.vex-theme-plain .vex-dialog-button.vex-dialog-button-primary {
background: #3288e6;
color: #fff; }
.vex.vex-theme-plain .vex-dialog-button.vex-dialog-button-secondary {
background: #e0e0e0;
color: #777; }
.vex-loading-spinner.vex-theme-plain {
height: 2.5em;
width: 2.5em; }

117
interpreter/scss/vex.scss Обычный файл
Просмотреть файл

@ -0,0 +1,117 @@
@-webkit-keyframes vex-fadein {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@keyframes vex-fadein {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@-webkit-keyframes vex-fadeout {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@keyframes vex-fadeout {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@-webkit-keyframes vex-rotation {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg); } }
@keyframes vex-rotation {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg); } }
.vex, .vex *, .vex *:before, .vex *:after {
-moz-box-sizing: border-box;
box-sizing: border-box; }
.vex {
position: fixed;
overflow: auto;
-webkit-overflow-scrolling: touch;
z-index: 1111;
top: 0;
right: 0;
bottom: 0;
left: 0; }
.vex-scrollbar-measure {
position: absolute;
top: -9999px;
width: 50px;
height: 50px;
overflow: scroll; }
.vex-overlay {
-webkit-animation: vex-fadein .5s;
animation: vex-fadein .5s;
position: fixed;
z-index: 1111;
background: rgba(0, 0, 0, 0.4);
top: 0;
right: 0;
bottom: 0;
left: 0; }
.vex-overlay.vex-closing {
-webkit-animation: vex-fadeout .5s forwards;
animation: vex-fadeout .5s forwards; }
.vex-content {
-webkit-animation: vex-fadein .5s;
animation: vex-fadein .5s;
background: #fff; }
.vex.vex-closing .vex-content {
-webkit-animation: vex-fadeout .5s forwards;
animation: vex-fadeout .5s forwards; }
.vex-close:before {
font-family: Arial, sans-serif;
content: "\00D7"; }
.vex-dialog-form {
margin: 0; }
.vex-dialog-button {
text-rendering: optimizeLegibility;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
cursor: pointer;
-webkit-tap-highlight-color: transparent; }
.vex-loading-spinner {
-webkit-animation: vex-rotation .7s linear infinite;
animation: vex-rotation .7s linear infinite;
box-shadow: 0 0 1em rgba(0, 0, 0, 0.1);
position: fixed;
z-index: 1112;
margin: auto;
top: 0;
right: 0;
bottom: 0;
left: 0;
height: 2em;
width: 2em;
background: #fff; }
body.vex-open {
overflow: hidden; }

351
interpreter/scss/vorple.scss Обычный файл
Просмотреть файл

@ -0,0 +1,351 @@
html,
body,
input {
font-family: "Roboto", sans-serif;
}
a, a:visited {
color: #369;
}
blockquote {
border: 1px solid #ccc;
padding: 0.5em 1em;
}
#output {
line-height: 1.5em;
}
.force-hidden {
visibility: hidden;
}
.uiblock {
position: fixed;
bottom: 0;
left: 0;
right: 0;
top: 0;
z-index: 999999;
}
/* Basic styles */
.font-bold {
font-weight: bold;
}
.font-italic {
font-style: italic;
}
.font-underline {
text-decoration: underline;
}
/* the following two are specified by the Haven interpreter but are unused in Vorple at the moment */
.font-proportional {
font-family: "Roboto", serif;
}
.font-fixed-width {
font-family: "Roboto Mono", monospace;
}
/* Vorple Screen Effects */
.center-align {
text-align: center;
}
.right-align {
text-align: right;
}
.cursive-font {
font-style: italic;
}
.emphasized-font {
font-style: italic;
}
.fantasy-font {
font-family: fantasy;
}
.monospace-font {
font-family: "Roboto Mono", monospace;
}
#output span.nowrap-font,
#output span.nowrap-font * {
white-space: nowrap;
}
.strikethrough-font {
text-decoration: line-through;
}
.strong-font {
font-weight: bold;
}
.underlined-font {
text-decoration: underline;
}
.xx-small-font {
font-size: xx-small;
}
.x-small-font {
font-size: x-small;
}
.small-font {
font-size: small;
}
.large-font {
font-size: large;
}
.x-large-font {
font-size: x-large;
}
.xx-large-font {
font-size: xx-large;
}
.white-letters {
color: #fff;
}
.black-letters {
color: #000;
}
.blue-letters {
color: #00a;
}
.green-letters {
color: #0a0;
}
.cyan-letters {
color: #0aa;
}
.red-letters {
color: #a00;
}
.magenta-letters {
color: #a0a;
}
.brown-letters {
color: #a50;
}
.yellow-letters {
color: #ff5;
}
.dark-gray-letters {
color: #555;
}
.light-gray-letters {
color: #aaa;
}
.light-blue-letters {
color: #55f;
}
.light-green-letters {
color: #5f5;
}
.light-cyan-letters {
color: #5ff;
}
.light-red-letters {
color: #f55;
}
.light-magenta-letters {
color: #f5f;
}
.white-background {
background-color: #fff;
}
.black-background {
background-color: #000;
}
.blue-background {
background-color: #00a;
}
.green-background {
background-color: #0a0;
}
.cyan-background {
background-color: #0aa;
}
.red-background {
background-color: #a00;
}
.magenta-background {
background-color: #a0a;
}
.brown-background {
background-color: #a50;
}
.yellow-background {
background-color: #ff5;
}
.dark-gray-background {
background-color: #555;
}
.light-gray-background {
background-color: #aaa;
}
.light-blue-background {
background-color: #55f;
}
.light-green-background {
background-color: #5f5;
}
.light-cyan-background {
background-color: #5ff;
}
.light-red-background {
background-color: #f55;
}
.light-magenta-background {
background-color: #f5f;
}
/* Status line */
.status-line-container {
display: flex;
background-color: #fff;
border-bottom: 3px double #ccc;
position: fixed;
top: 0;
white-space: pre-wrap;
max-width: inherit;
width: 100%;
}
#output > .status-line-container {
margin-left: -15px;
}
.status-line-left {
flex: 1;
text-align: left;
}
.status-line-middle,
.status-line-mobile {
flex: 1;
text-align: center;
}
.status-line-right {
flex: 1;
text-align: right;
}
/* Image alignments */
.vorple-image img {
max-width: 100%;
}
.centered {
text-align: center;
}
.left-aligned {
text-align: left;
}
.right-aligned {
text-align: right;
}
.left-floating {
float: left;
}
.right-floating {
float: right;
}
/* Modal windows */
.vex {
z-index: 9999999;
}
body .vex.vex-theme-plain .vex-content {
max-width: 850px;
width: 90%;
}
.vex-dialog-message {
white-space: pre-wrap;
}
/* Tooltips */
#powerTip {
max-width: 90%;
white-space: pre-wrap;
}
/* Responsive classes */
@media screen and (min-width: 569px) {
.sm-only {
display: none;
}
}
@media screen and (max-width: 568px) {
.lg-only {
display: none;
}
}

56
interpreter/vorple.min.js поставляемый Обычный файл

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

2
resources/CREDITS.md Обычный файл
Просмотреть файл

@ -0,0 +1,2 @@
# Images
* [Refectory](https://commons.wikimedia.org/wiki/File:Interior_of_the_Refectory_of_the_Church_of_the_Deposition_of_the_Robe_0842.jpg) - CC-BY-SA

Двоичные данные
resources/images/refectory.jpg Обычный файл

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 71 KiB