Merge branch 'story' into status-itcfangye

This commit is contained in:
草莓 2025-01-24 21:50:12 +08:00
commit 1eec945d93
21 changed files with 1284 additions and 612 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
_saves/
_server/config.json

View File

@ -1 +0,0 @@
1

View File

@ -1 +0,0 @@
N4IgZgNg9lBOCSATEAuEBnALrApjzADAIwgA0IAFjrFKqAJYC2AhgOY6qXVQB0A7jgBGABzIhmAOybNMHFGGYR0OchOaM5IAMLMmYiADdURchWEsAHqgCct66dEoiBF+RZrLqALQmQ75qgE5DIA1sauIIg4YOFBflExKHHownjISW5QEjgAnoHkOBaOcTgAjgCu9OY4EpioANoAuuT0sozodCAAxllYkpgdKKCCMGFO5JB5TgC+5JgwSnSzIGWVwoOg6HxwiCQzy9BdnYj0uF2Y9Fmc5aLkVigArORTzsuQbBsgrTiMACL4uggqGw5RUIHKygAQvgBDUADL0VgUOooEFggD66OUOEQmOMAHYAGwEawADgATOSACxxTGwSS49EE4lkyk04K4ZiDeqgDyaAA65SpOAIgkFDy6VPJYhY6wa2l0jAoUA0IEas156gFQpFYvKEqlMuYcpQ9RAACt6OVWOVJGqNSA+ZxBcLReLJdK3MbuSAANIAFQAavbSJrVWhBfjyYTyZHyWASF6TWaA4GAGLS9Whx1a53lKMxuMJo3JkCsKAQRAhXIhsPa116g2evze+WCegUCHlWhZut513Md2GpM+y3MKCYSSsWs58MgF0iwf6j0ln3oKgSVgSAzK1W92f1xdD5uytcUejb3ccfdOiP56Ox+/Fkfyy048cz2/z++Fp+JlullguD4MQYhAXghDNjaU5dBQU5iNBm6wVOzYWPQ45oVOoF3OhUCYZuBCobh+GsAAzJ+uYoBI5QQBAL6miAOT0BUJA3pR1G0fRZpMRUmYOreHF0QBPo8eU5FseGglcYxzFChRkk0UJp7yqJDzyXIUnCSpsmEupqCacpDGifielUYp0miaSpkGa2RmydY1nmVpdksQQ9rNBgIRVKgChKGCcGwOktLogFiBaBWcB4mguDIOQmLfIwAASF6YFFTRxeiEA4MwBg4HCUBdFFwDLJiBj0Og3yMp04EgXsaLLIIMJ4BIACCmCTl0IS/DIARmZxICYswOD0GlHmYic6DMIIWVVUMGDYBBoGmvURCkQ8zRNOqbwVtAAiwNyHlYDgJq+H0FxYPQXSfPMk4QP6TByOSDxEEQUpRjwhJ2C91hPN05SwLA93hkQDxUtYPCkXYUNQ4SDj5CAggyJgWXw4wWQ1hkKxFPDiPtVl3UsOw8PCFA5VZATbByCUFjYMwFNE5jaO5b8pw4OcEBTHEiISHAOAAMqyCaySTrAKKElSDykTwVLTMsoWcKu1ULbVnSyg0QQa6Qmva1ruv1D4pAG0bJgG0ExuGyblsWxbzQa1t5A0OUsicL6UAZloVKsAAvGIBiKKCGzLLl+2XBIebWDgpGIOKggPAQkbMNY0flNYhHx/qpKg+6BBgIK1iEkQMTkDa9DpCA5LMIghKEog1iFYgYBgFS6JUqSifooIVKEmA6JgIgU0EDgNJV3gYgXMD+KkficfWKRBBSi40xAA==

View File

@ -854,6 +854,8 @@ action
| waitAsync_s
| stopAsync_s
| op_s
| setmusics_s
| introAndLoop_s
| battle_s
| battle_1_s
| openDoor_s
@ -2612,6 +2614,23 @@ var code = '{"type": "setq"'+IdString_0+'},\n';
return code;
*/;
introAndLoop_s
: '前奏音乐文件'EvalString? '前奏音乐文件播放时长(可填小数,单位为秒)'EvalString'循环音乐文件'EvalString? Newline
/* introAndLoop_s
tooltip : introAndLoop设置任务目标楼层显示在小地图
helpUrl : /_docs/#/instruction
default : ["",1,""]
allBgms : ['EvalString_0','EvalString_2']
colour :this.imageColor
if(EvalString_1&&!/^(0|([1-9][0-9]*))(\.[\d]+)?$/.test(EvalString_1))throw new Error("此项仅能填写小数或整数,单位为秒");
EvalString_0 = EvalString_0 ? (', "intro": "'+EvalString_0+'"') : '';
EvalString_1= EvalString_1 ? (', "time": '+EvalString_1+'') : '';
EvalString_2 = EvalString_2 ? (', "loop": "'+EvalString_2+'"') : '';
var code = '{"type": "introAndLoop"'+EvalString_0+EvalString_1+EvalString_2+'},\n';
return code;
*/;
setcgs_s
: 'cg回廊获取cg 文件名'EvalString?'不填为清空cg获取记录' Newline
@ -2621,12 +2640,26 @@ tooltip : setcgscg回廊中的cg获取
helpUrl : /_docs/#/instruction
default : [""]
allImages : ['EvalString_0']
colour : this.imageColor
colour : this.soundColor
EvalString_0 = EvalString_0 ? (', "img": "'+EvalString_0+'"') : '';
var code = '{"type": "setcgs"'+EvalString_0+'},\n';
return code;
*/;
setmusics_s
: '音乐鉴赏music 文件名'EvalString?'不填为清空music获取记录' Newline
/* setmusics_s
tooltip : setmusics音乐鉴赏中的隐藏music获取
helpUrl : /_docs/#/instruction
default : [""]
allBgms : ['EvalString_0']
colour : this.soundColor
EvalString_0 = EvalString_0 ? (', "bgm": "'+EvalString_0+'"') : '';
var code = '{"type": "setmusics"'+EvalString_0+'},\n';
return code;
*/;
scaleImage_s
: '图片放缩' '图片编号' NInt '中心点像素' 'x' PosString? 'y' PosString? '移动方式' MoveMode_List BGNL? '放缩比例' Number '动画时间' Int '不等待执行完毕' Bool Newline

View File

@ -620,6 +620,20 @@ MotaActionParser = function () {
case "setcgs":
this.next = MotaActionBlocks["setcgs_s"].xmlText([data.img, this.next]);
break;
case "setmusics":
this.next = MotaActionBlocks["setmusics_s"].xmlText([
data.bgm,
this.next,
]);
break;
case "introAndLoop":
this.next = MotaActionBlocks["introAndLoop_s"].xmlText([
data.intro,
data.time,
data.loop,
this.next,
]);
break;
case "comment": // 注释
this.next = MotaActionBlocks["comment_s"].xmlText([
this.EvalString_Multi(data.text),

View File

@ -1 +0,0 @@
{ "viewportLoc": [0, 0], "editorLastFloorId": "jiedao" }

View File

@ -122,6 +122,12 @@ var plugins_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_type": "textarea",
"_range": "typeof(thiseval)=='string' || thiseval==null",
"_data": "音乐鉴赏"
},
"intro&loop": {
"_leaf": true,
"_type": "textarea",
"_range": "typeof(thiseval)=='string' || thiseval==null",
"_data": "背景音乐拼接"
}
}
if (obj[key]) return obj[key];

View File

@ -492,7 +492,6 @@ main.prototype.selectButton = function (index) {
main.prototype.importFonts = function (fonts) {
if (!(fonts instanceof Array) || fonts.length == 0) return;
var style = document.createElement("style");
style.type = "text/css";
var html = "";
fonts.forEach(function (font) {
html +=

BIN
project/bgms/Ascension.opus Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
project/bgms/Halbmond.opus Normal file

Binary file not shown.

BIN
project/bgms/ed.opus Normal file

Binary file not shown.

BIN
project/bgms/theme.mp3 Normal file

Binary file not shown.

Binary file not shown.

View File

@ -897,11 +897,15 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"zone"
],
"bgms": [
"Ascension.opus",
"Asphodelus_Ceui.opus",
"Blind_Alley.opus",
"Blood_Stain.opus",
"Crawler.opus",
"Halbmond.opus",
"ed.opus",
"op.opus",
"theme.opus"
"theme.mp3"
],
"sounds": [
"aiy010000010.opus",
@ -1019,6 +1023,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
],
"fonts": [
"HATTEN",
"Verdana",
"number",
"pala",
"simhei"
@ -1057,7 +1062,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"饰品",
"饰品"
],
"startBgm": "theme.opus",
"startBgm": "theme.mp3",
"styles": {
"startBackground": "project/images/background.webp",
"startVerticalBackground": "project/images/backgroundvertical.webp",
@ -1489,6 +1494,10 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"type": "setValue",
"name": "item:fly",
"value": "1"
},
{
"type": "insert",
"name": "强制横屏"
}
],
"shops": [

View File

@ -435,6 +435,11 @@ var events_c12a15a8_c380_4b28_8144_256cba95f760 =
"time": 30,
"style": "场景切换"
},
{
"type": "playBgm",
"name": "Blood_Stain.opus",
"keep": true
},
{
"type": "cgtext",
"bg": "other_0001.webp",
@ -3397,6 +3402,11 @@ var events_c12a15a8_c380_4b28_8144_256cba95f760 =
}
]
},
{
"type": "playBgm",
"name": "Halbmond.opus",
"keep": true
},
{
"type": "cgtext",
"bg": "bg_3601.webp",

View File

@ -26,58 +26,25 @@ main.floors.street01=
"direction": "up"
}
],
"6,11": [
"10,11": [
{
"type": "insert",
"name": "chapter04"
"type": "setmusics",
"bgm": "op.opus"
}
],
"4,11": [
"10,10": [
{
"type": "animationDrawable",
"allFarme": 300,
"color": [
0,
0,
0
],
"imageList": [
{
"image": "bg_1511.webp",
"beforefarme": 50,
"globalAlpha": 0,
"afterfarme": 250,
"aglobalAlpha": 100
},
{
"image": "eve_010304.webp",
"beforefarme": 70,
"globalAlpha": 0,
"afterfarme": 170,
"aglobalAlpha": 100,
"ax": 0,
"ay": 0
},
{
"image": "eve_010304.webp",
"beforefarme": 171,
"globalAlpha": 100,
"afterfarme": 270,
"aglobalAlpha": 100,
"ax": 800,
"ay": 0
}
],
"soundList": [
{
"sound": "",
"startfarme": 0,
"stopbefore": false
}
]
"type": "setmusics",
"bgm": "ed.opus"
},
{
"type": "op"
"type": "setmusics",
"bgm": "Asphodelus_Ceui.opus"
}
],
"10,9": [
{
"type": "setmusics"
}
]
},

BIN
project/fonts/Verdana.ttf Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,534 +1,585 @@
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background-color: #000;
overflow: hidden;
html,
body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background-color: #000;
overflow: hidden;
}
#gameGroup {
position: absolute;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
background-color: #000;
position: absolute;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
background-color: #000;
}
#mainTips {
color: #fff;
font-size: 0.8em;
position: fixed;
top: 10px;
left: 10px;
z-index: 370;
color: #fff;
font-size: 0.8em;
position: fixed;
top: 10px;
left: 10px;
z-index: 370;
}
#musicBtn {
position: fixed;
bottom: 3px;
right: 3px;
cursor: pointer;
z-index: 400;
display: none;
position: fixed;
bottom: 3px;
right: 3px;
cursor: pointer;
z-index: 400;
display: none;
}
#enlargeBtn {
position: fixed;
bottom: 3px;
right: 34px;
cursor: pointer;
z-index: 400;
display: none;
position: fixed;
bottom: 3px;
right: 34px;
cursor: pointer;
z-index: 400;
display: none;
}
#startPanel {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: #fff;
overflow: hidden;
z-index: 300;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: #fff;
overflow: hidden;
z-index: 300;
}
#startTop {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: #000;
z-index: 350;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: #000;
z-index: 350;
}
#startTopProgressBar {
width: 90%;
height: 5%;
margin: 0 5%;
position: absolute;
top: 5%;
background-color: #fff;
z-index: 15;
width: 90%;
height: 5%;
margin: 0 5%;
position: absolute;
top: 5%;
background-color: #fff;
z-index: 15;
}
#startTopProgress {
width: 0%;
height: 100%;
background-color: #666;
width: 0%;
height: 100%;
background-color: #666;
}
#startTopLoadTips {
color: #fff;
font-size: 0.6em;
position: absolute;
top: 10%;
left: 5%;
z-index: 15;
color: #fff;
font-size: 0.6em;
position: absolute;
top: 10%;
left: 5%;
z-index: 15;
}
#startTopHint {
color: #66CCFF;
position: absolute;
bottom: 0;
left: 5%;
z-index: 15;
font-size: 1.1em;
color: #66ccff;
position: absolute;
bottom: 0;
left: 5%;
z-index: 15;
font-size: 1.1em;
}
#startBackground {
position:absolute;
top:50%;
left:50%;
height: 100%;
width: 100%;
transform:translate(-50%,-50%);
z-index: 260;
position: absolute;
top: 50%;
left: 50%;
height: 100%;
width: 100%;
transform: translate(-50%, -50%);
z-index: 260;
}
#startLogo {
user-select: none;
position: absolute;
z-index: 290;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
margin-top: 8%;
max-width: 100%;
text-align: center;
font: bold 0em STXingkai;
color: #000000;
user-select: none;
position: absolute;
z-index: 290;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
margin-top: 8%;
max-width: 100%;
text-align: center;
font: bold 0em STXingkai;
color: #000000;
}
#startTitle {
user-select: none;
position: absolute;
z-index: 280;
user-select: none;
position: absolute;
z-index: 280;
}
#startButtonGroup {
width: auto;
position: absolute;
text-align: center;
font-size: 1.4em;
display: none;
z-index: 310;
bottom: 0;
margin-bottom: 5%;
left: 50%;
transform: translateX(-50%);
padding: 15px 25px;
min-width: 100%;
/* default value */
background-color: #000000;
opacity: 0.55;
color: #FFFFFF;
border: #FFFFFF 0px solid;
caret-color: #ffffff;
border-radius: 0px;
width: auto;
position: absolute;
text-align: center;
font-size: 1.4em;
display: none;
z-index: 310;
bottom: 0;
margin-bottom: 5%;
left: 50%;
transform: translateX(-50%);
padding: 15px 25px;
min-width: 100%;
/* default value */
background-color: #000000;
opacity: 0.55;
color: #ffffff;
border: #ffffff 0px solid;
caret-color: #ffffff;
border-radius: 0px;
}
#startButtons {
display: none;
display: none;
}
#levelChooseButtons {
display: none;
display: none;
}
.startButton {
width: 100%;
margin: 0;
font:1.2rem "pala", sans-serif;
font-weight: normal;
display: block;
cursor: pointer;
padding: 0px 0;
border-color: transparent;
border-width: 0px;
border-style: solid;
border-radius: 0px;
width: 100%;
margin: 0;
font: 1.2rem pala, sans-serif;
font-weight: normal;
display: block;
cursor: pointer;
padding: 0px 0;
border-color: transparent;
border-width: 0px;
border-style: solid;
border-radius: 0px;
}
.onChoiceAnimate {
animation: onChoice 2s ease-in-out 0s infinite normal none running;
animation: onChoice 2s ease-in-out 0s infinite normal none running;
}
#floorMsgGroup {
position: absolute;
text-align: center;
display: none;
color: #fff;
background-color: #000;
z-index: 230;
position: absolute;
text-align: center;
display: none;
color: #fff;
background-color: #000;
z-index: 230;
}
#logoLabel {
margin-top: 8%;
font: bold 3em STXingkai;
margin-left: auto;
margin-right: auto;
margin-top: 8%;
font: bold 3em STXingkai;
margin-left: auto;
margin-right: auto;
}
#versionLabel {
margin-top: -3%;
font-size: 1.2em;
font-weight: bold;
margin-top: -3%;
font-size: 1.2em;
font-weight: bold;
}
#floorNameLabel {
margin-top: 30px;
font-size: 1.6em;
font-weight: bold;
margin-top: 30px;
font-size: 1.6em;
font-weight: bold;
}
#statusBar {
position: absolute;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
background: url(project/materials/ground.png) repeat;
z-index: 185;
display: none;
top: 0;
left: 0;
padding: 3px;
position: absolute;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
background: url(project/materials/ground.png) repeat;
z-index: 185;
display: none;
top: 0;
left: 0;
padding: 3px;
}
#statusBar .status{
position: relative;
display: block;
float: left;
width: 100%;
#statusBar .status {
position: relative;
display: block;
float: left;
width: 100%;
}
.status img{
vertical-align: middle;
width: auto;
height: 100%;
max-height: 1.6em;
.status img {
vertical-align: middle;
width: auto;
height: 100%;
max-height: 1.6em;
}
#statusBar span{
font: bold italic 1.1em Verdana;
display: inline;
#statusBar span {
font: bold italic 1.1em Verdana;
display: inline;
}
#statusBar p {
display: inline-block;
vertical-align: middle;
width: 60%;
margin: 0;
color: white;
font: bold italic 1.1em Verdana;
white-space: nowrap;
display: inline-block;
vertical-align: middle;
width: 60%;
margin: 0;
color: white;
font: bold italic 1.1em Verdana;
white-space: nowrap;
}
#toolBar {
position: absolute;
background: url(project/materials/ground.png) repeat;
z-index: 210;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
display: none;
padding: 3px;
position: absolute;
background: url(project/materials/ground.png) repeat;
z-index: 210;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
display: none;
padding: 3px;
}
#toolBar .tools{
position: relative;
display: block;
float: left;
#toolBar .tools {
position: relative;
display: block;
float: left;
}
p#hard {
width: 6em;
vertical-align: middle;
display: inline-block;
color: red;
font: bold normal 1.1em "Arial Black";
text-align: center;
margin: 0 6px 6px 0;
word-break: keep-all;
width: 6em;
vertical-align: middle;
display: inline-block;
color: red;
font: bold normal 1.1em "Arial Black";
text-align: center;
margin: 0 6px 6px 0;
word-break: keep-all;
}
span#poison, span#weak, span#curse, span#pickaxe, span#bomb, span#fly {
font-style: normal;
font-size: 1em;
span#poison,
span#weak,
span#curse,
span#pickaxe,
span#bomb,
span#fly {
font-style: normal;
font-size: 1em;
}
p#name {
font-style: normal;
font-style: normal;
}
.gameCanvas {
position: absolute;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
position: absolute;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
#gif {
z-index: 20;
position: absolute;
overflow: hidden;
z-index: 20;
position: absolute;
overflow: hidden;
}
#gif2 {
z-index: 90;
position: absolute;
overflow: hidden;
z-index: 90;
position: absolute;
overflow: hidden;
}
#gameDraw {
position: absolute;
background: #000000;
overflow: hidden;
z-index: 185;
position: absolute;
background: #000000;
overflow: hidden;
z-index: 185;
}
#bg {
z-index: 10;
z-index: 10;
}
#event {
z-index: 30;
z-index: 30;
}
#hero {
z-index: 40;
z-index: 40;
}
#event2 {
z-index: 50;
z-index: 50;
}
#fg {
z-index: 60;
z-index: 60;
}
#damage {
z-index: 65;
z-index: 65;
}
#animate {
z-index: 70;
z-index: 70;
}
#curtain {
z-index: 125;
z-index: 125;
}
#ui {
z-index: 140;
z-index: 140;
}
#data {
z-index: 170;
z-index: 170;
}
#inputDiv {
display: none;
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
background: rgba(127,127,127,0.6);
z-index: 2000
display: none;
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
background: rgba(127, 127, 127, 0.6);
z-index: 2000;
}
#inputDialog {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -55%);
background: white;
width: 250px;
min-height: 50px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -55%);
background: white;
width: 250px;
min-height: 50px;
}
#inputMessage {
word-wrap: break-word;
text-align: left;
margin-left: 8%;
margin-right: 5%;
word-wrap: break-word;
text-align: left;
margin-left: 8%;
margin-right: 5%;
}
#inputBox {
margin-left: 8%;
width: 80%;
margin-bottom: 10px;
padding: 5px 3px;
border: 1px solid;
background: #F0F0F0;
margin-left: 8%;
width: 80%;
margin-bottom: 10px;
padding: 5px 3px;
border: 1px solid;
background: #f0f0f0;
}
#inputYes {
margin-bottom: 15px;
margin-left: 8%;
margin-bottom: 15px;
margin-left: 8%;
}
#inputNo {
float:right;
margin-right: 10%;
float: right;
margin-right: 10%;
}
#_selector, ._uievent_selector {
animation: selector 2s ease-in-out 0s infinite normal none running;
#_selector,
._uievent_selector {
animation: selector 2s ease-in-out 0s infinite normal none running;
}
@-webkit-keyframes selector {
0% { opacity: 0.95; }
50% { opacity: 0.55; }
100% { opacity: 0.95; }
0% {
opacity: 0.95;
}
50% {
opacity: 0.55;
}
100% {
opacity: 0.95;
}
}
@keyframes selector {
0% { opacity: 0.95; }
50% { opacity: 0.55; }
100% { opacity: 0.95; }
0% {
opacity: 0.95;
}
50% {
opacity: 0.55;
}
100% {
opacity: 0.95;
}
}
#next {
width: 5px;
height: 5px;
display: none;
position: absolute;
transform: rotate(45deg);
border-bottom-width: 4px;
border-bottom-style: solid;
border-right-width: 4px;
border-right-style: solid;
-webkit-animation: next .5s ease-in-out alternate infinite;
animation: next .5s ease-in-out alternate infinite;
left: 0;
top: 0;
opacity: 0.7;
z-index: 169;
width: 5px;
height: 5px;
display: none;
position: absolute;
transform: rotate(45deg);
border-bottom-width: 4px;
border-bottom-style: solid;
border-right-width: 4px;
border-right-style: solid;
-webkit-animation: next 0.5s ease-in-out alternate infinite;
animation: next 0.5s ease-in-out alternate infinite;
left: 0;
top: 0;
opacity: 0.7;
z-index: 169;
}
@-webkit-keyframes next {
100% {
transform: rotate(45deg) translate(-3px, -3px);
}
100% {
transform: rotate(45deg) translate(-3px, -3px);
}
}
@keyframes next {
100% {
transform: rotate(45deg) translate(-3px, -3px);
}
100% {
transform: rotate(45deg) translate(-3px, -3px);
}
}
#startImageBackgroundDiv {
display: none;
width: 100%;
height: 100%;
position: fixed;
z-index: 10000;
display: none;
width: 100%;
height: 100%;
position: fixed;
z-index: 10000;
}
#startImageDiv {
width: 100%;
height: 100%;
position: fixed;
background: black;
opacity: 1;
width: 100%;
height: 100%;
position: fixed;
background: black;
opacity: 1;
}
#startImageLogo {
opacity: 0;
max-width: 60%;
max-height: 60%;
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
opacity: 0;
max-width: 60%;
max-height: 60%;
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.startImageAnimation {
-webkit-animation: startImage 4s ease-in-out 1s alternate 1;
animation: startImage 4s ease-in-out 1s alternate 1;
-webkit-animation: startImage 4s ease-in-out 1s alternate 1;
animation: startImage 4s ease-in-out 1s alternate 1;
}
@-webkit-keyframes startImage {
0% { opacity: 0; }
60% { opacity: 1; }
100% { opacity: 0; }
0% {
opacity: 0;
}
60% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes startImage {
0% { opacity: 0; }
60% { opacity: 1; }
100% { opacity: 0; }
0% {
opacity: 0;
}
60% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.startImageDivAnimation {
-webkit-animation: startImageDivDisappear 2s ease-in-out 5s alternate 1;
animation: startImageDivDisappear 2s ease-in-out 5s alternate 1;
-webkit-animation: startImageDivDisappear 2s ease-in-out 5s alternate 1;
animation: startImageDivDisappear 2s ease-in-out 5s alternate 1;
}
@-webkit-keyframes startImageDivDisappear {
0% { opacity: 1 }
100% { opacity: 0 }
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes startImageDivDisappear {
0% { opacity: 1 }
100% { opacity: 0 }
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
#ui-editor {
z-index: 9999;
position: absolute;
overflow: visible;
height: 100%;
z-index: 9999;
position: absolute;
overflow: visible;
height: 100%;
}
@font-face {
font-family: Fira Code;
src: url(../src/fonts/FiraCode-Regular.ttf);
font-family: Fira Code;
src: url(../src/fonts/FiraCode-Regular.ttf);
}
/* 注释下面这三行以开启抗锯齿 */
.anti-aliasing {
image-rendering: pixelated;
image-rendering: pixelated;
}
.warning {
transition: left cubic-bezier(0, 0.9, 1, 0.1) 2.5s;
-webkit-transition: left cubic-bezier(0, 0.9, 1, 0.1) 2.5s;
animation: warning 1s linear 0s alternate infinite;
-webkit-animation: warning 1s linear 0s alternate infinite;
transition: left cubic-bezier(0, 0.9, 1, 0.1) 2.5s;
-webkit-transition: left cubic-bezier(0, 0.9, 1, 0.1) 2.5s;
animation: warning 1s linear 0s alternate infinite;
-webkit-animation: warning 1s linear 0s alternate infinite;
}
@keyframes warning {
0 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);}
50 % { text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);}
100 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);}
0 % {
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
}
50 % {
text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);
}
100 % {
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
}
}
@-webkit - keyframes warning {
0 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);}
50 % { text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);}
100 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);}
0 % {
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
}
50 % {
text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);
}
100 % {
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
}
}
.gameCanvas {
transition: transform 1.5s ease-out;
-webkit-transition: transform 1.5s ease-out;
transition: transform 1.5s ease-out;
-webkit-transition: transform 1.5s ease-out;
}