From 089956431ff54036d827dd4732874fb9bce56dfd Mon Sep 17 00:00:00 2001 From: strawberry42271 <2806566736@qq.com> Date: Fri, 24 Jan 2025 19:18:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=97=E4=BD=93=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/config.json | 2 +- main.js | 1 - project/data.js | 5 + project/fonts/Verdana.ttf | Bin 0 -> 171792 bytes project/plugins.js | 3013 ++++++++++++++++++++----------------- styles.css | 701 +++++---- 6 files changed, 2055 insertions(+), 1667 deletions(-) create mode 100644 project/fonts/Verdana.ttf diff --git a/_server/config.json b/_server/config.json index 5d318ea..fe97c11 100644 --- a/_server/config.json +++ b/_server/config.json @@ -1 +1 @@ -{"viewportLoc":[0,0],"editorLastFloorId":"street01"} \ No newline at end of file +{"viewportLoc":[0,0],"editorLastFloorId":"guangchang2"} \ No newline at end of file diff --git a/main.js b/main.js index a9242ca..b8b19c0 100644 --- a/main.js +++ b/main.js @@ -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 += diff --git a/project/data.js b/project/data.js index a934ab8..cd7fc5f 100644 --- a/project/data.js +++ b/project/data.js @@ -1023,6 +1023,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = ], "fonts": [ "HATTEN", + "Verdana", "number", "pala", "simhei" @@ -1493,6 +1494,10 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "type": "setValue", "name": "item:fly", "value": "1" + }, + { + "type": "insert", + "name": "强制横屏" } ], "shops": [ diff --git a/project/fonts/Verdana.ttf b/project/fonts/Verdana.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8f25a642311b8dde62b6154184aea935999b7c15 GIT binary patch literal 171792 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 z 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 literal 0 HcmV?d00001 diff --git a/project/plugins.js b/project/plugins.js index 1f9e092..4f00f15 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -1,265 +1,269 @@ -var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { - init: function () { - this._afterLoadResources = function () { - // 本函数将在所有资源加载完毕后,游戏开启前被执行 - core.ui.statusBar.init(); - core.registerEvent("changeMouse", function (data) { - if (!main.replayChecking && !core.isReplaying()) - core.changeMouse( - data.icon, - data.div, - data.translate[0], - data.translate[1], - data.scale[0], - data.scale[1], - data.angel, - data.px, - data.py - ); - core.doAction(); - }); - core.registerEvent("removeMouse", function (data) { - if (!main.replayChecking && !core.isReplaying()) - core.removeMouse(data.div); - core.doAction(); - }); - core.registerEvent("addPop", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - data.value = core.replaceText(data.value); - core.addPop( - data.value, - data.px, - data.py, - data.color, - data.boldColor, - data.left, - data.jump, - data.time, - data.show, - data.font, - data.speed - ); - } - core.doAction(); - }); - core.registerEvent("drawWarning", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - data.text = core.replaceText(data.text); - data.text2 = core.replaceText(data.text2); - core.drawWarning( - data.x, - data.y, - data.size, - data?.text, - data?.text2, - data?.warning - ); - setTimeout(() => core.doAction(), 3100); - } else { - core.doAction(); - } - }); - core.registerEvent("playStereo", function (data) { - if (!main.replayChecking && !core.isReplaying()) - core.playStereo(data.name, data.left, data.right, data.split); - core.doAction(); - }); - core.registerEvent("moveStereo", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - const id = core.playStereo( - data.name, - data.left, - data.right, - data.split - ); - core.moveStereo(id, data.leftTo, data.rightTo, data.time); - } - core.doAction(); - }); - core.registerEvent("over", function (data) { - let image = data.image ?? ""; - let time = data.time ?? 3000; - let sound = data.sound ?? ""; - let textColor = data.textColor ?? "#FFFFFF"; - let boldColor = data.boldColor ?? "#000000"; - let font = data.font ?? "bold 48px Verdana"; - let text = data.text ?? ""; - let hidetime = data.hidetime ?? 100; - if (!main.replayChecking && !core.isReplaying()) { - core.over( - image, - data.memory, - time, - hidetime, - sound, - textColor, - boldColor, - font, - text - ); - } else { - core.doAction(); - } - }); - core.registerEvent("changebg", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.changebg( - data.img1, - data.memory1, - data.img2, - data.memory2, - data.time, - data.style - ); - } else { - core.doAction(); - } - }); - core.registerEvent("overlist", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.overlist( - data.image, - data.memory, - data.hidetime || 30, - data.list || [ - { - text: "", - sound: "", - time: 50, - textColor: "#FFFFFF", - boldColor: "#000000", - font: "bold 48px Verdana", - frame: 0, - }, - ] - ); - } else { - core.doAction(); - } - }); - core.registerEvent("op", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.openvideo(); - } else { - core.doAction(); - } - }); - core.registerEvent("animationDrawable", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.animationDrawable( - data.allFarme, - data.color, - data.globalAlpha, - data.imageList, - data.soundList - ); - } else { - core.doAction(); - } - }); - core.registerEvent("setanimate", function (data) { - data.px = data.px ?? 0; - data.py = data.py ?? 0; - core.setanimate( - data.name, - data.px, - data.py, - data.width, - data.height, - data.allFarme, - data.imageList, - data.soundList - ); - core.doAction(); - }); - core.registerEvent("clearanimate", function (data) { - core.plugin.playing.clear(); +var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = +{ + "init": function () { + this._afterLoadResources = function () { + // 本函数将在所有资源加载完毕后,游戏开启前被执行 + core.ui.statusBar.init(); + core.dom.playGame.style.fontFamily = 'pala' + core.dom.loadGame.style.fontFamily = 'pala' + core.dom.CGMode.style.fontFamily = 'pala' + core.dom.musicMode.style.fontFamily = 'pala' + core.dom.replayGame.style.fontFamily = 'pala' + core.registerEvent("changeMouse", function (data) { + if (!main.replayChecking && !core.isReplaying()) + core.changeMouse( + data.icon, + data.div, + data.translate[0], + data.translate[1], + data.scale[0], + data.scale[1], + data.angel, + data.px, + data.py + ); + core.doAction(); + }); + core.registerEvent("removeMouse", function (data) { + if (!main.replayChecking && !core.isReplaying()) + core.removeMouse(data.div); + core.doAction(); + }); + core.registerEvent("addPop", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + data.value = core.replaceText(data.value); + core.addPop( + data.value, + data.px, + data.py, + data.color, + data.boldColor, + data.left, + data.jump, + data.time, + data.show, + data.font, + data.speed + ); + } + core.doAction(); + }); + core.registerEvent("drawWarning", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + data.text = core.replaceText(data.text); + data.text2 = core.replaceText(data.text2); + core.drawWarning( + data.x, + data.y, + data.size, + data?.text, + data?.text2, + data?.warning + ); + setTimeout(() => core.doAction(), 3100); + } else { + core.doAction(); + } + }); + core.registerEvent("playStereo", function (data) { + if (!main.replayChecking && !core.isReplaying()) + core.playStereo(data.name, data.left, data.right, data.split); + core.doAction(); + }); + core.registerEvent("moveStereo", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + const id = core.playStereo( + data.name, + data.left, + data.right, + data.split + ); + core.moveStereo(id, data.leftTo, data.rightTo, data.time); + } + core.doAction(); + }); + core.registerEvent("over", function (data) { + let image = data.image ?? ""; + let time = data.time ?? 3000; + let sound = data.sound ?? ""; + let textColor = data.textColor ?? "#FFFFFF"; + let boldColor = data.boldColor ?? "#000000"; + let font = data.font ?? "bold 48px Verdana"; + let text = data.text ?? ""; + let hidetime = data.hidetime ?? 100; + if (!main.replayChecking && !core.isReplaying()) { + core.over( + image, + data.memory, + time, + hidetime, + sound, + textColor, + boldColor, + font, + text + ); + } else { + core.doAction(); + } + }); + core.registerEvent("changebg", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.changebg( + data.img1, + data.memory1, + data.img2, + data.memory2, + data.time, + data.style + ); + } else { + core.doAction(); + } + }); + core.registerEvent("overlist", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.overlist( + data.image, + data.memory, + data.hidetime || 30, + data.list || [{ + text: "", + sound: "", + time: 50, + textColor: "#FFFFFF", + boldColor: "#000000", + font: "bold 48px Verdana", + frame: 0, + }, ] + ); + } else { + core.doAction(); + } + }); + core.registerEvent("op", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.openvideo(); + } else { + core.doAction(); + } + }); + core.registerEvent("animationDrawable", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.animationDrawable( + data.allFarme, + data.color, + data.globalAlpha, + data.imageList, + data.soundList + ); + } else { + core.doAction(); + } + }); + core.registerEvent("setanimate", function (data) { + data.px = data.px ?? 0; + data.py = data.py ?? 0; + core.setanimate( + data.name, + data.px, + data.py, + data.width, + data.height, + data.allFarme, + data.imageList, + data.soundList + ); + core.doAction(); + }); + core.registerEvent("clearanimate", function (data) { + core.plugin.playing.clear(); - core.doAction(); - }); - core.registerEvent("deleteanimate", function (data) { - core.deleteanimate(data.name); - core.doAction(); - }); - core.registerEvent("playanimate", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - data.x = data.x ?? 0; - data.y = data.y ?? 0; - data.scalex = data.scalex ?? 1; - data.scaley = data.scaley ?? 1; - core.playanimate( - data.name, - data.x, - data.y, - data.hero, - data.scalex, - data.scaley - ); - core.doAction(); - } else { - core.doAction(); - } - }); - core.registerEvent("cgtext", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.ui.cgText.image = data.bg; - core.ui.cgText.memory = data.memory; - core.ui.cgText.head = core.clone(data.head); - core.ui.cgText.name = data.name; - core.ui.cgText.text = data.text; - core.ui.cgText.time = data.time; - core.ui.cgText.wait = data.wait; - core.ui.cgText.WindowSkin = data.WindowSkin; - core.ui.cgText.sound = data.sound || ""; - core.ui.cgText.bodyList = core.clone(data.bodyList); - main.dom.cgText.style.display = "block"; - core.ui.cgText.update(); - } else { - core.doAction(); - } - }); - core.registerEvent("introAndLoop", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.plugin.introAndLoop(data.intro, data.time, data.loop); - core.doAction(); - } else { - core.doAction(); - } - }); - core.registerEvent("setq", function (data) { - core.setFlag("任务地点", data.id); + core.doAction(); + }); + core.registerEvent("deleteanimate", function (data) { + core.deleteanimate(data.name); + core.doAction(); + }); + core.registerEvent("playanimate", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + data.x = data.x ?? 0; + data.y = data.y ?? 0; + data.scalex = data.scalex ?? 1; + data.scaley = data.scaley ?? 1; + core.playanimate( + data.name, + data.x, + data.y, + data.hero, + data.scalex, + data.scaley + ); + core.doAction(); + } else { + core.doAction(); + } + }); + core.registerEvent("cgtext", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.ui.cgText.image = data.bg; + core.ui.cgText.memory = data.memory; + core.ui.cgText.head = core.clone(data.head); + core.ui.cgText.name = data.name; + core.ui.cgText.text = data.text; + core.ui.cgText.time = data.time; + core.ui.cgText.wait = data.wait; + core.ui.cgText.WindowSkin = data.WindowSkin; + core.ui.cgText.sound = data.sound || ""; + core.ui.cgText.bodyList = core.clone(data.bodyList); + main.dom.cgText.style.display = "block"; + core.ui.cgText.update(); + } else { + core.doAction(); + } + }); + core.registerEvent("introAndLoop", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.plugin.introAndLoop(data.intro, data.time, data.loop); + core.doAction(); + } else { + core.doAction(); + } + }); + core.registerEvent("setq", function (data) { + core.setFlag("任务地点", data.id); - core.doAction(); - }); - core.registerEvent("setmusics", function (data) { - if ( - (core.getLocalStorage("musics") && - core.getLocalStorage("musics").length === 0) || - !core.getLocalStorage("musics") - ) - core.setLocalStorage("musics", ["theme.mp3"]); - let a = core.getLocalStorage("musics"); - if (!data.bgm) { - core.setLocalStorage("musics", ["theme.mp3"]); - } else { - if (!a.includes(data.bgm)) a.push(data.bgm); - core.setLocalStorage("musics", a); - } - core.doAction(); - }); - core.registerEvent("setcgs", function (data) { - if (!data.img) { - core.setLocalStorage("cgs", []); - } else { - let a = core.getLocalStorage("cgs") ?? []; - if (!a.includes(data.img)) a.push(data.img); - core.setLocalStorage("cgs", a); - } - core.doAction(); - }); - }; - }, - drawLight: function () { + core.doAction(); + }); + core.registerEvent("setmusics", function (data) { + if ( + (core.getLocalStorage("musics") && + core.getLocalStorage("musics").length === 0) || + !core.getLocalStorage("musics") + ) + core.setLocalStorage("musics", ["theme.mp3"]); + let a = core.getLocalStorage("musics"); + if (!data.bgm) { + core.setLocalStorage("musics", ["theme.mp3"]); + } else { + if (!a.includes(data.bgm)) a.push(data.bgm); + core.setLocalStorage("musics", a); + } + core.doAction(); + }); + core.registerEvent("setcgs", function (data) { + if (!data.img) { + core.setLocalStorage("cgs", []); + } else { + let a = core.getLocalStorage("cgs") ?? []; + if (!a.includes(data.img)) a.push(data.img); + core.setLocalStorage("cgs", a); + } + core.doAction(); + }); + }; +}, + "drawLight": function () { // 绘制灯光/漆黑层效果。调用方式 core.plugin.drawLight(...) // 【参数说明】 // name:必填,要绘制到的画布名;可以是一个系统画布,或者是个自定义画布;如果不存在则创建 @@ -325,7 +329,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { // 可以在任何地方(如afterXXX或自定义脚本事件)调用函数,方法为 core.plugin.xxx(); }; }, - shop: function () { + "shop": function () { // 【全局商店】相关的功能 // // 打开一个全局商店 @@ -601,7 +605,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { 60 ); }, - removeMap: function () { + "removeMap": function () { // 高层塔砍层插件,删除后不会存入存档,不可浏览地图也不可飞到。 // 推荐用法: // 对于超高层或分区域塔,当在1区时将2区以后的地图删除;1区结束时恢复2区,进二区时删除1区地图,以此类推 @@ -690,7 +694,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }); }; }, - fiveLayers: function () { + "fiveLayers": function () { // 是否启用五图层(增加背景2层和前景2层) 将__enable置为true即会启用;启用后请保存后刷新编辑器 // 背景层2将会覆盖背景层 被事件层覆盖 前景层2将会覆盖前景层 // 另外 请注意加入两个新图层 会让大地图的性能降低一些 @@ -892,7 +896,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }; }; }, - itemShop: function () { + "itemShop": function () { // 道具商店相关的插件 // 可在全塔属性-全局商店中使用「道具商店」事件块进行编辑(如果找不到可以在入口方块中找) @@ -1294,7 +1298,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { ]); }; }, - enemyLevel: function () { + "enemyLevel": function () { // 此插件将提供怪物手册中的怪物境界显示 // 使用此插件需要先给每个怪物定义境界,方法如下: // 点击怪物的【配置表格】,找到“【怪物】相关的表格配置”,然后在【名称】仿照增加境界定义: @@ -1462,7 +1466,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { ); }; }, - multiHeros: function () { + "multiHeros": function () { // 多角色插件 // Step 1: 启用本插件 // Step 2: 定义每个新的角色各项初始数据(参见下方注释) @@ -1616,7 +1620,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { core.setFlag("heroId", toHeroId); // 保存切换到的角色ID }; }, - heroFourFrames: function () { + "heroFourFrames": function () { // 样板的勇士/跟随者移动时只使用2、4两帧,观感较差。本插件可以将四帧全用上。 // 是否启用本插件 @@ -1679,7 +1683,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { return false; }; }, - routeFixing: function () { + "routeFixing": function () { // 是否开启本插件,true 表示启用,false 表示禁用。 var __enable = true; if (!__enable) return; @@ -1803,7 +1807,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { 100 ); }, - numpad: function () { + "numpad": function () { // 样板自带的整数输入事件为白屏弹窗且可以误输入任意非法内容但不支持负整数,观感较差。本插件可以将其美化成仿RM样式,使其支持负整数同时带有音效 // 另一方面,4399等第三方平台不允许使用包括 core.myprompt() 和 core.myconfirm() 在内的弹窗,因此也需要此插件来替代,不然类似生命魔杖的道具就不好实现了 // 关于负整数输入,V2.8.2原生支持其录像的压缩和解压,只是默认的 core.events._action_input() 函数将负数取了绝对值,可以只复写下面的 core.isReplaying() 部分来取消 @@ -2060,7 +2064,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } }; }, - sprites: function () { + "sprites": function () { // 基于canvas的sprite化,摘编整理自万宁魔塔 // // ---------------------------------------- 第一部分 js代码 (必装) --------------------------------------- // @@ -2264,7 +2268,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { window.Sprite = Sprite; }, - hotReload: function () { + "hotReload": function () { /* ---------- 功能说明 ---------- * 1. 当 libs/ main.js index.html 中的任意一个文件被更改后,会自动刷新塔的页面 @@ -2521,7 +2525,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } })(); }, - statusBar: function () { + "statusBar": function () { main.dom.floorMsgGroup.style.display = "none"; main.dom.statusBar.style.display = "none"; main.dom.toolBar.style.display = "none"; @@ -3726,7 +3730,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }; // init() called in `afterLoadResources`. }, - override: function () { + "override": function () { core.statusBar.icons = { floor: 0, name: null, @@ -4076,7 +4080,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { ctx.fillText(text, x, y); }; }, - 额外信息: function () { + "额外信息": function () { /* 宝石血瓶左下角显示数值 * 注意!!!不要在道具属性中直接操作flags,使用core.status.hero.flags或core.setFlag系列函数代替! * 需要将 变量:itemDetail改为true才可正常运行 @@ -4233,7 +4237,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } } }, - 编辑器显伤: function () { + "编辑器显伤": function () { // 在此增加新插件 /////// 用户设置 /////// // 将__enable置为false将关闭插件 @@ -4507,7 +4511,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } }; }, - 手册区分特殊属性: function () { + "手册区分特殊属性": function () { // 在此增加新插件 this.arrsame = function (Arraya, Arrayb) { let a = Arraya || []; @@ -4859,7 +4863,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { return [enemy, texts]; }; }, - 一防减伤: function () { + "一防减伤": function () { // 在此增加新插件 ui.prototype._drawBook_drawRow3 = function ( index, @@ -4933,7 +4937,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { return this.getDefDamage(enemy, null, x, y, floorId); }; }, - "新道具栏/装备栏": function () { + "新道具栏/装备栏": function () { // 在此增加新插件 // 注:///// *** 裹起来的区域: 该区域内参数可以随意更改调整ui绘制 不会影响总体布局 // 请尽量修改该区域而不是其他区域 修改的时候最好可以对照现有ui修改 @@ -6370,7 +6374,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { core.registerReplayAction("equip", core.control._replayAction_equip); core.registerReplayAction("unEquip", core.control._replayAction_unEquip); }, - 技能树: function () { + "技能树": function () { // 在此增加新插件 // // 已学习的技能等级 flags._hasSkill_ @@ -7172,7 +7176,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }; core.registerReplayAction("skill", control.prototype._replayAction_skill); }, - animate: function () { + "animate": function () { // -------------------- 插件说明 -------------------- // // github仓库:https://github.com/unanmed/animate @@ -8046,7 +8050,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { inverseTrigo: N, }; }, - func: function () { + "func": function () { // 功能函数集,具体有哪些函数看每个函数前的注释即可 // 安装方式:直接复制到插件里面,注意新建插件自带的 function () { } 不能删 // 使用方式:可以直接使用对象解构按需引入 @@ -8486,7 +8490,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } }; }, - 音频系统: function () { + "音频系统": function () { // 在此增加新插件 /*首先,在造塔群下载所需的库文件,然后放置在塔目录下的 libs/thirdparty 或其他目录下,之后在 index.html 的最后加上下面这几行: @@ -10597,7 +10601,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { core.ui._drawSwitchs_sounds(); }; }, - 怪物碎裂特效: function () { + "怪物碎裂特效": function () { // 在此增加新插件 // -------------------- 安装说明 -------------------- // // 先安装两个在插件简介中说明的前置插件 @@ -10842,7 +10846,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { applyFragWith, }; }, - 自定义常用事件: function () { + "自定义常用事件": function () { // editorBlocklyconfigPlus.js // 自訂常見事件模板插件 // 本插件引用了通用函數插件(Utility.js) @@ -12131,7 +12135,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { .split("// end mark sfergsvae")[0]; } }, - 夹击激光动画: function () { + "夹击激光动画": function () { function createCanvas(name, zIndex) { if (!name) return; var canvas = document.createElement("canvas"); @@ -12362,7 +12366,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } }; }, - 瞬移轨迹: function () { + "瞬移轨迹": function () { // 在此增加新插件 function popMove() { var ctx = core.getContextByName("popMove"); @@ -12438,7 +12442,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } }; }, - "墓碑(编辑器)": function () { + "墓碑(编辑器)": function () { // 在此增加新插件 if (main.mode != "editor") return; // 编辑器模式下使用 var mapData = null; @@ -12509,7 +12513,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { core.setAlpha("event2", alpha); }; }, - 小地图: function () { + "小地图": function () { // 在此增加新插件 // ----- 不可自定义 杂七杂八的变量 /** @type {{[x: string]: BFSResult}} */ @@ -12928,7 +12932,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } }; }, - 楼传: function () { + "楼传": function () { // 在此增加新插件 core.canMoveFloor = function () { @@ -14036,7 +14040,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { 0 ); }, - CG回廊: function () { + "CG回廊": function () { // 在此增加新插件 const CGUI = document.createElement("canvas"); //CGui画布设置 CGUI.style.position = "absolute"; @@ -14539,7 +14543,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { main.core.ui.CG.update(); }; }, - 光标设置: function () { + "光标设置": function () { // 在此增加新插件 this.changeMouse = function ( icon, @@ -14576,7 +14580,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { core.dom[div].style.cursor = "auto"; }; }, - 信息弹出: function () { + "信息弹出": function () { // 在此增加新插件 /* 弹出显示某个内容 * 使用方法:core.addPop(px, py, value, color, boldColor, left, jump, time, show, font, speed) @@ -14683,7 +14687,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { else core.status.pop.push(data); }; }, - warning: function () { + "warning": function () { // 在此增加新插件 // 默认音效名 var defaultSound = "jingbao.opus"; @@ -14746,7 +14750,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }, 1600); }; }, - 立体声音效: function () { + "立体声音效": function () { // 在此增加新插件 // 音效双声道播放 var can = true; @@ -14850,7 +14854,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }, 10); }; }, - 滑动转场: function () { + "滑动转场": function () { // 在此增加新插件 const defaultChange = { left: "leftPortal", // 左箭头 @@ -15040,7 +15044,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }, 25); }; }, - 剧情cg: function () { + "剧情cg": function () { // 在此增加新插件 const cg = document.createElement("canvas"); //cg画布设置 cg.style.position = "absolute"; @@ -15569,7 +15573,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } core.ui.cgText = new cgText(); }, - 旁白: function () { + "旁白": function () { // 在此增加新插件 const over = document.createElement("canvas"); //over画布设置 over.style.position = "absolute"; @@ -16059,7 +16063,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } }; }, - 回合制boss战: function () { + "回合制boss战": function () { // 在此增加新插件 const boss = document.createElement("canvas"); //boss战画布设置 boss.style.position = "absolute"; @@ -16107,7 +16111,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } core.ui.boss = new boss1(); }, - 剧情视频引用: function () { + "剧情视频引用": function () { // 在此增加新插件 let a; let bgm; @@ -16291,7 +16295,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }); }; }, - "帧动画/图片叠拼": function () { + "帧动画/图片叠拼": function () { // 在此增加新插件 this.animationDrawable = function ( allFarme, @@ -16413,1042 +16417,1135 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { ); }; }, - musicMode: function () { - // 在此增加新插件 - const music = document.createElement("canvas"); - music.style.position = "absolute"; - music.style.zIndex = 300; - music.style.display = "none"; - music.id = "music"; - main.dom.gameGroup.insertAdjacentElement("afterend", music); - music.style.top = "50%"; - music.style.left = "50%"; - music.style.transform = "translate(-50%,-50%)"; - const ctx = music.getContext("2d"); - main.dom.music = music; - - const audio = core.plugin.audioSystem.bgmController; - - let page = 0; //初始页面 - - let isvolume = false; - - function shuffle(arr) { - let n = arr.length, - random; - while (n) { - random = (Math.random() * n--) >>> 0; - [arr[n], arr[random]] = [arr[random], arr[n]]; - } - return arr; - } - music.addEventListener("mousedown", function (e) { - e.stopPropagation(); - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor((e.clientX - left) / core.domStyle.scale), - py = Math.floor((e.clientY - top) / core.domStyle.scale); - core.ui.music.mousedown(px * 3, py * 3); - }); - music.addEventListener("mousemove", function (e) { - e.stopPropagation(); - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor((e.clientX - left) / core.domStyle.scale), - py = Math.floor((e.clientY - top) / core.domStyle.scale); - core.ui.music.mousemove(px * 3, py * 3); - }); - music.addEventListener("mouseup", function (e) { - e.stopPropagation(); - - isvolume = false; - }); - music.addEventListener("mouseleave", function (e) { - e.stopPropagation(); - - isvolume = false; - }); - music.addEventListener("touchstart", function (e) { - e.preventDefault(); - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor( - (e.touches[0].clientX - left) / core.domStyle.scale - ), - py = Math.floor((e.touches[0].clientY - top) / core.domStyle.scale); - core.ui.music.mousedown(px * 3, py * 3); - }); - music.addEventListener("touchmove", function (e) { - e.stopPropagation(); - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor( - (e.touches[0].clientX - left) / core.domStyle.scale - ), - py = Math.floor((e.touches[0].clientY - top) / core.domStyle.scale); - core.ui.music.mousemove(px * 3, py * 3); - }); - music.addEventListener("touchend", function (e) { - e.stopPropagation(); - - isvolume = false; - }); - music.addEventListener("touchcancel", function (e) { - e.stopPropagation(); - - isvolume = false; - }); - - class musicclass { - constructor() { - this.musics = ["theme.mp3"]; - //music列表 - //需全塔属性注册并保存在bgms文件夹,每个数组为显示的一页内容 - this.musicMx = [ - [ - "Crawler.opus", - "Blood_Stain.opus", - "Blind_Alley.opus", - "Halbmond.opus", - ], - ["theme.mp3", "op.opus", "Asphodelus_Ceui.opus", "ed.opus"], - ]; - //音乐别名(将在播放器内显示的音乐名,music列表内的都要有对应歌名) - this.musicname = { - "Asphodelus_Ceui.opus": "Asphodelus (Full.ver)", - "Blind_Alley.opus": "Blind Alley", - "Crawler.opus": "Crawler", - "op.opus": "Asphodelus", - "theme.mp3": "One of Episodes", - "ed.opus": "親愛なる世界へ", - "Blood_Stain.opus": "Blood Stain", - "Halbmond.opus": "Halbmond", - }; - this.selection = [0, 0]; - this.stop = false; - this.type = "xunhuan"; - this.randomList = []; - this.random = 0; - } - - //更新 - update() { - this.background(); - this.drawUI(); - } - background() { - //画布大小设置 - if (core.domStyle.isVertical) { - music.width = 1248; - music.height = 2028; - } else { - music.width = 2028; - music.height = 1248; - } - } - mousedown(px, py) { - //鼠标按下时 - - const makeBox = ([x, y], [w, h]) => { - return [ - [x, y], - [x + w, y + h], - ]; - }; - const inRect = ([x, y], [[sx, sy], [dx, dy]]) => { - return sx <= x && x <= dx && sy <= y && y <= dy; - }; - const pos = [px, py]; - const backbox = makeBox([15, 35], [210, 90]); - if (inRect(pos, backbox)) { - //离开按钮是一致的,其余的记区分横竖屏 - music.style.display = "none"; - core.clearMap(ctx); - - core.unregisterAnimationFrame("music"); - core.restart(); - - return; - } - if (core.domStyle.isVertical) { - //竖屏 - - const pageupbox = makeBox([100, 1230], [200, 100]); - const pagedownbox = makeBox([950, 1230], [200, 100]); - const musicbox = makeBox( - [100, 200], - [1048, this.musicMx[page].length * 100] - ); - const beforebox = makeBox([120, 1620], [100, 100]); - const afterbox = makeBox([780, 1620], [100, 100]); - const playbox = makeBox([420, 1580], [200, 200]); - const typebox = makeBox([1040, 1600], [120, 120]); - - const volumebox = makeBox([250, 1940], [1050, 20]); - if (inRect(pos, pageupbox)) { - if (page !== 0) page -= 1; - return; - } - if (inRect(pos, pagedownbox)) { - if (page !== this.musicMx.length - 1) page += 1; - return; - } - if (inRect(pos, playbox)) { - if (this.stop) { - this.stop = !this.stop; - - core.resumeBgm(); - } else { - this.stop = !this.stop; - core.pauseBgm(); - } - return; - } - if (inRect(pos, beforebox)) { - this.stop = false; - switch (this.type) { - case "danqu": - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - page = this.selection[0]; - - break; - case "xunhuan": - for (;;) { - if (this.selection[1] === 0) { - if (this.selection[0] === 0) { - this.selection[0] = this.musicMx.length - 1; - this.selection[1] = - this.musicMx[this.selection[0]].length - 1; - } else { - this.selection[0] -= 1; - this.selection[1] = - this.musicMx[this.selection[0]].length - 1; - } - } else { - this.selection[1] -= 1; - } - this.random = this.randomList.indexOf( - this.musicMx[this.selection[0]][this.selection[1]] - ); - page = this.selection[0]; - if ( - this.musics.includes( - this.musicMx[this.selection[0]][this.selection[1]] - ) || - page !== this.musicMx.length - 1 - ) - break; - } - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - break; - case "suiji": - for (;;) { - if (this.random > 0) { - this.random -= 1; - } else { - this.random = this.randomList.length - 1; - } - this.selection[0] = this.musicMx.findIndex((v) => - v.includes(this.randomList[this.random]) - ); - this.selection[1] = this.musicMx[this.selection[0]].indexOf( - this.randomList[this.random] - ); - - page = this.selection[0]; - if ( - this.musics.includes( - this.musicMx[this.selection[0]][this.selection[1]] - ) || - page !== this.musicMx.length - 1 - ) - break; - } - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - break; - } - return; - } - if (inRect(pos, afterbox)) { - this.stop = false; - switch (this.type) { - case "danqu": - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - page = this.selection[0]; - break; - case "xunhuan": - for (;;) { - if ( - this.selection[1] === - this.musicMx[this.selection[0]].length - 1 - ) { - if (this.selection[0] === this.musicMx.length - 1) { - this.selection[0] = 0; - this.selection[1] = 0; - } else { - this.selection[0] += 1; - this.selection[1] = 0; - } - } else { - this.selection[1] += 1; - } - this.random = this.randomList.indexOf( - this.musicMx[this.selection[0]][this.selection[1]] - ); - page = this.selection[0]; - if ( - this.musics.includes( - this.musicMx[this.selection[0]][this.selection[1]] - ) || - page !== this.musicMx.length - 1 - ) - break; - } - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - break; - case "suiji": - for (;;) { - if (this.random < this.randomList.length - 1) { - this.random += 1; - } else { - this.random = 0; - } - this.selection[0] = this.musicMx.findIndex((v) => - v.includes(this.randomList[this.random]) - ); - this.selection[1] = this.musicMx[this.selection[0]].indexOf( - this.randomList[this.random] - ); - - page = this.selection[0]; - if ( - this.musics.includes( - this.musicMx[this.selection[0]][this.selection[1]] - ) || - page !== this.musicMx.length - 1 - ) - break; - } - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - break; - } - return; - } - if (inRect(pos, typebox)) { - switch (this.type) { - case "danqu": - this.type = "xunhuan"; - break; - case "xunhuan": - this.type = "suiji"; - break; - case "suiji": - this.type = "danqu"; - break; - } - return; - } - if (inRect(pos, musicbox)) { - const index = Math.floor((py - 200) / 100); - if (page !== this.selection[0] || index !== this.selection[1]) { - if ( - this.musics.includes(this.musicMx[page][index]) || - page !== this.musicMx.length - 1 - ) { - this.selection[0] = page; - - this.selection[1] = index; - this.randomList.indexOf( - this.musicMx[this.selection[0]][this.selection[1]] - ); - - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - this.stop = false; - } - } else { - if (this.stop) { - this.stop = !this.stop; - core.resumeBgm(); - } else { - this.stop = !this.stop; - core.pauseBgm(); - } - } - return; - } - - if (inRect(pos, volumebox)) { - const time = Math.min(Math.max((px - 250) / 800, 0), 1); - audio.setVolume(time); - core.plugin.audioSystem.soundPlayer.setVolume(time); - isvolume = true; - } - } else { - //横屏 - const pageupbox = makeBox([1050, 1100], [200, 100]); - const pagedownbox = makeBox([1550, 1100], [200, 100]); - const musicbox = makeBox( - [900, 100], - [1000, this.musicMx[page].length * 100] - ); - const beforebox = makeBox([60, 620], [100, 100]); - const afterbox = makeBox([450, 620], [100, 100]); - const playbox = makeBox([200, 570], [200, 200]); - const typebox = makeBox([620, 600], [120, 120]); - - const volumebox = makeBox([100, 990], [600, 20]); - if (inRect(pos, pageupbox)) { - if (page !== 0) page -= 1; - return; - } - if (inRect(pos, pagedownbox)) { - if (page !== this.musicMx.length - 1) page += 1; - return; - } - if (inRect(pos, playbox)) { - if (this.stop) { - this.stop = !this.stop; - core.resumeBgm(); - } else { - this.stop = !this.stop; - core.pauseBgm(); - } - return; - } - if (inRect(pos, beforebox)) { - this.stop = false; - switch (this.type) { - case "danqu": - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - page = this.selection[0]; - - break; - case "xunhuan": - for (;;) { - if (this.selection[1] === 0) { - if (this.selection[0] === 0) { - this.selection[0] = this.musicMx.length - 1; - this.selection[1] = - this.musicMx[this.selection[0]].length - 1; - } else { - this.selection[0] -= 1; - this.selection[1] = - this.musicMx[this.selection[0]].length - 1; - } - } else { - this.selection[1] -= 1; - } - this.random = this.randomList.indexOf( - this.musicMx[this.selection[0]][this.selection[1]] - ); - page = this.selection[0]; - - if ( - this.musics.includes( - this.musicMx[this.selection[0]][this.selection[1]] - ) || - page !== this.musicMx.length - 1 - ) - break; - } - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - break; - case "suiji": - for (;;) { - if (this.random > 0) { - this.random -= 1; - } else { - this.random = this.randomList.length - 1; - } - this.selection[0] = this.musicMx.findIndex((v) => - v.includes(this.randomList[this.random]) - ); - this.selection[1] = this.musicMx[this.selection[0]].indexOf( - this.randomList[this.random] - ); - - page = this.selection[0]; - - if ( - this.musics.includes( - this.musicMx[this.selection[0]][this.selection[1]] - ) || - page !== this.musicMx.length - 1 - ) - break; - } - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - break; - } - return; - } - if (inRect(pos, afterbox)) { - this.stop = false; - switch (this.type) { - case "danqu": - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - page = this.selection[0]; - break; - case "xunhuan": - for (;;) { - if ( - this.selection[1] === - this.musicMx[this.selection[0]].length - 1 - ) { - if (this.selection[0] === this.musicMx.length - 1) { - this.selection[0] = 0; - this.selection[1] = 0; - } else { - this.selection[0] += 1; - this.selection[1] = 0; - } - } else { - this.selection[1] += 1; - } - this.randomList.findIndex( - (v) => - v === this.musicMx[this.selection[0]][this.selection[1]] - ); - page = this.selection[0]; - - if ( - this.musics.includes( - this.musicMx[this.selection[0]][this.selection[1]] - ) || - page !== this.musicMx.length - 1 - ) - break; - } - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - break; - case "suiji": - for (;;) { - if (this.random < this.randomList.length - 1) { - this.random += 1; - } else { - this.random = 0; - } - this.selection[0] = this.musicMx.findIndex((v) => - v.includes(this.randomList[this.random]) - ); - this.selection[1] = this.musicMx[this.selection[0]].indexOf( - main.core.ui.music.randomList[main.core.ui.music.random] - ); - - page = this.selection[0]; - if ( - this.musics.includes( - this.musicMx[this.selection[0]][this.selection[1]] - ) || - page !== this.musicMx.length - 1 - ) - break; - } - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - break; - } - return; - } - if (inRect(pos, typebox)) { - switch (this.type) { - case "danqu": - this.type = "xunhuan"; - break; - case "xunhuan": - this.type = "suiji"; - break; - case "suiji": - this.type = "danqu"; - break; - } - return; - } - if (inRect(pos, musicbox)) { - const index = Math.floor((py - 100) / 100); - if (page !== this.selection[0] || index !== this.selection[1]) { - if ( - this.musics.includes(this.musicMx[page][index]) || - page !== this.musicMx.length - 1 - ) { - this.selection[0] = page; - this.selection[1] = index; - this.randomList.indexOf( - (v) => - v === this.musicMx[this.selection[0]][this.selection[1]] - ); - - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - this.stop = false; - } - } else { - if (this.stop) { - this.stop = !this.stop; - core.resumeBgm(); - } else { - this.stop = !this.stop; - core.pauseBgm(); - } - } - return; - } - - if (inRect(pos, volumebox)) { - const time = Math.min(Math.max((px - 100) / 600, 0), 1); - audio.setVolume(time); - core.plugin.audioSystem.soundPlayer.setVolume(time); - isvolume = true; - } - } - } - mousemove(px, py) { - if (isvolume) { - if (core.domStyle.isVertical) { - const time = Math.min(Math.max((px - 250) / 800, 0), 1); - audio.setVolume(time); - core.plugin.audioSystem.soundPlayer.setVolume(time); - } else { - const time = Math.min(Math.max((px - 100) / 600, 0), 1); - audio.setVolume(time); - core.plugin.audioSystem.soundPlayer.setVolume(time); - } - } - } - - drawUI() { - //绘制页面 - core.clearMap(music); - const bgVertical = core.material.images.images["bg_2010.webp"]; //竖屏背景 - const bg = core.material.images.images["bg_5043.webp"]; //竖屏背景 - if (core.domStyle.isVertical) { - //竖屏 - - core.fillRect(ctx, 0, 0, 1248, 2028, "#000000"); //黑色背景 - ctx.globalAlpha = 0.3; //透明度 - if (bgVertical) - ctx.drawImage(bgVertical, 0, 0, 1280, 1500, 0, 0, 1248, 2028); //绘制半透明背景图片 - ctx.globalAlpha = 1; //恢复为不透明 - - core.setTextAlign(ctx, "center"); - core.fillBoldText1( - ctx, - "◀离开", - 110, - 100, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - ctx.strokeStyle = "#FFFFFF"; - ctx.lineWidth = 3; - ctx.beginPath(); - ctx.moveTo(100, 200); - ctx.lineTo(1148, 200); - - ctx.stroke(); - let posy = 300; - const indexList = this.musicMx[page]; - core.setTextAlign(ctx, "left"); - for (let i = 0; i < indexList.length; i++) { - const text = this.musicname[indexList[i]]; - if ( - this.musics.includes(this.musicMx[page][i]) || - page !== this.musicMx.length - 1 - ) { - core.fillBoldText1( - ctx, - text, - 150, - posy - 30, - page === this.selection[0] && i === this.selection[1] - ? "#FFFFFF" - : "#444444", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - ctx.strokeStyle = "#FFFFFF"; - ctx.lineWidth = 3; - ctx.beginPath(); - ctx.moveTo(100, posy); - ctx.lineTo(1148, posy); - ctx.stroke(); - } - posy += 100; - } - ctx.beginPath(); - ctx.moveTo(100, 1210); - ctx.lineTo(1148, 1210); - ctx.moveTo(100, 1200); - ctx.lineTo(1148, 1200); - ctx.stroke(); - - core.fillBoldText1( - ctx, - "上一页", - 100, - 1300, - page === 0 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - core.fillBoldText1( - ctx, - page + 1 + "/" + this.musicMx.length, - 580, - 1300, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - core.fillBoldText1( - ctx, - "下一页", - 950, - 1300, - page === this.musicMx.length - 1 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - ctx.strokeStyle = "#ffffff"; - ctx.lineWidth = 3; - - ctx.fillStyle = "#ffffff"; - ctx.font = "bold 96px Verdana"; - ctx.fillText("|", 100, 1697); - ctx.fillText("◀", 115, 1700); - ctx.beginPath(); - ctx.arc(505, 1670, 80, 0, 3 * Math.PI); - ctx.stroke(); - ctx.fillText("|", 835, 1697); - ctx.fillText("▶", 785, 1700); - if (this.stop) { - ctx.fillText("▶", 473, 1697); - } else { - ctx.fillText("||", 453, 1694); - } - - const img = core.material.images.images[this.type + ".webp"]; - if (img) ctx.drawImage(img, 1000, 1555, 200, 200); - core.setTextAlign(ctx, "center"); - ctx.font = "bold 52px Verdana"; - ctx.fillText("当前歌曲", 625, 1397); - ctx.fillText( - this.musicname[this.musicMx[this.selection[0]][this.selection[1]]], - 625, - 1507 - ); - - ctx.fillStyle = "#ffffff"; - ctx.font = "bold 48px Verdana"; - ctx.fillText("音量", 150, 1970); - ctx.lineWidth = 3; - ctx.beginPath(); - ctx.moveTo(250, 1950); - ctx.lineTo(1050, 1950); - ctx.stroke(); - ctx.strokeStyle = "#ffffff"; - ctx.lineWidth = 9; - ctx.fillStyle = "rgba(255,255,255,0.5)"; - - ctx.beginPath(); - ctx.moveTo(250, 1950); - ctx.lineTo(800 * audio.getVolume() + 250, 1950); - ctx.stroke(); - ctx.beginPath(); - ctx.arc(800 * audio.getVolume() + 250, 1950, 10, 0, 2 * Math.PI); - ctx.fill(); - core.fillBoldText1( - ctx, - Math.floor(100 * audio.getVolume()), - 1120, - 1970, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(56, true) - ); - } else { - //横屏 - - core.fillRect(ctx, 0, 0, 2028, 1248, "#000000"); //黑色背景 - ctx.globalAlpha = 0.5; //透明度 - if (bg) ctx.drawImage(bg, 0, 0, 1280, 720, 0, 0, 2028, 1248); //绘制半透明背景图片 - ctx.globalAlpha = 1; //恢复为不透明 - core.setTextAlign(ctx, "center"); - - core.fillBoldText1( - ctx, - "◀离开", - 110, - 100, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - ctx.strokeStyle = "#FFFFFF"; - ctx.lineWidth = 3; - ctx.beginPath(); - ctx.moveTo(800, 100); - ctx.lineTo(800, 1148); - ctx.moveTo(900, 100); - ctx.lineTo(1900, 100); - ctx.stroke(); - let posy = 200; - const indexList = this.musicMx[page]; - core.setTextAlign(ctx, "left"); - for (let i = 0; i < indexList.length; i++) { - const text = this.musicname[indexList[i]]; - if ( - this.musics.includes(this.musicMx[page][i]) || - page !== this.musicMx.length - 1 - ) { - core.fillBoldText1( - ctx, - text, - 950, - posy - 30, - page === this.selection[0] && i === this.selection[1] - ? "#FFFFFF" - : "#444444", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - ctx.strokeStyle = "#FFFFFF"; - ctx.lineWidth = 3; - ctx.beginPath(); - ctx.moveTo(900, posy); - ctx.lineTo(1900, posy); - ctx.stroke(); - } - posy += 100; - } - core.fillBoldText1( - ctx, - "上一页", - 1050, - 1200 - 30, - page === 0 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - core.fillBoldText1( - ctx, - page + 1 + "/" + this.musicMx.length, - 1350, - 1200 - 30, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - core.fillBoldText1( - ctx, - "下一页", - 1550, - 1200 - 30, - page === this.musicMx.length - 1 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - ctx.strokeStyle = "#ffffff"; - ctx.lineWidth = 3; - - ctx.fillStyle = "#ffffff"; - ctx.font = "bold 96px Verdana"; - ctx.fillText("|", 60, 697); - ctx.fillText("◀", 70, 700); - ctx.beginPath(); - ctx.arc(295, 670, 80, 0, 2 * Math.PI); - ctx.stroke(); - if (this.stop) { - ctx.fillText("▶", 245, 697); - } else { - ctx.fillText("||", 245, 694); - } - - ctx.fillText("|", 490, 697); - ctx.fillText("▶", 450, 700); - ctx.font = "bold 48px Verdana"; - ctx.fillText("音量", 350, 900); - ctx.beginPath(); - ctx.moveTo(100, 1000); - ctx.lineTo(700, 1000); - ctx.stroke(); - ctx.strokeStyle = "#ffffff"; - ctx.lineWidth = 9; - ctx.fillStyle = "rgba(255,255,255,0.5)"; - - ctx.beginPath(); - ctx.moveTo(100, 1000); - ctx.lineTo(600 * audio.getVolume() + 100, 1000); - ctx.stroke(); - ctx.beginPath(); - ctx.arc(600 * audio.getVolume() + 100, 1000, 10, 0, 2 * Math.PI); - ctx.fill(); - core.fillBoldText1( - ctx, - Math.floor(100 * audio.getVolume()), - 720, - 1010, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(56, true) - ); - const img = core.material.images.images[this.type + ".webp"]; - if (img) ctx.drawImage(img, 580, 560, 200, 200); - core.setTextAlign(ctx, "center"); - ctx.font = "bold 48px Verdana"; - ctx.fillText("当前歌曲", 400, 297); - ctx.fillText( - this.musicname[this.musicMx[this.selection[0]][this.selection[1]]], - 400, - 397 - ); - } - } - } - core.ui.music = new musicclass(); - main.dom.musicMode.onclick = function () { - //点击开始页面的CG MODE进入cg回廊 - if ( - (core.getLocalStorage("musics") && - core.getLocalStorage("musics").length === 0) || - !core.getLocalStorage("musics") - ) - core.setLocalStorage("musics", ["theme.mp3"]); - core.ui.music.musics = core.getLocalStorage("musics"); - core.playBgm( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - - const arr = main.core.ui.music.musicMx.flat(Infinity); - main.core.ui.music.randomList = shuffle(arr); - main.core.ui.music.random = main.core.ui.music.randomList.indexOf( - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ); - page = 0; - music.style.display = "block"; - let time = 0; - core.registerAnimationFrame("music", null, (temptime) => { - if (temptime > time + 1000 / 60) { - time = temptime; - main.core.ui.music.update(); - const duration = - core.plugin.audioSystem.bgmController.player.getRoute( - "bgms." + - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ).duration; - - const currentTime = - core.plugin.audioSystem.bgmController.player.getRoute( - "bgms." + - main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ - main.core.ui.music.selection[1] - ] - ).currentTime; - if (currentTime && duration && duration - currentTime < 0.05) { - if (core.domStyle.isVertical) { - core.ui.music.mousedown(830, 1770); - } else { - core.ui.music.mousedown(475, 765); - } - } - } - }); - }; - }, - 横屏切换: function () { + "musicMode": function () { + // 在此增加新插件 + const music = document.createElement("canvas"); + music.style.position = "absolute"; + music.style.zIndex = 300; + music.style.display = "none"; + music.id = "music"; + main.dom.gameGroup.insertAdjacentElement("afterend", music); + music.style.top = "50%"; + music.style.left = "50%"; + music.style.transform = "translate(-50%,-50%)"; + const ctx = music.getContext("2d"); + main.dom.music = music; + + const audio = core.plugin.audioSystem.bgmController; + + let page = 0; //初始页面 + + let isvolume = false; + + function shuffle(arr) { + let n = arr.length, + random; + while (n) { + random = (Math.random() * n--) >>> 0; + [arr[n], arr[random]] = [arr[random], arr[n]]; + } + return arr; + } + music.addEventListener("mousedown", function (e) { + e.stopPropagation(); + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor((e.clientX - left) / core.domStyle.scale), + py = Math.floor((e.clientY - top) / core.domStyle.scale); + core.ui.music.mousedown(px * 3, py * 3); + }); + music.addEventListener("mousemove", function (e) { + e.stopPropagation(); + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor((e.clientX - left) / core.domStyle.scale), + py = Math.floor((e.clientY - top) / core.domStyle.scale); + core.ui.music.mousemove(px * 3, py * 3); + }); + music.addEventListener("mouseup", function (e) { + e.stopPropagation(); + + isvolume = false; + }); + music.addEventListener("mouseleave", function (e) { + e.stopPropagation(); + + isvolume = false; + }); + music.addEventListener("touchstart", function (e) { + e.preventDefault(); + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor( + (e.touches[0].clientX - left) / core.domStyle.scale + ), + py = Math.floor((e.touches[0].clientY - top) / core.domStyle.scale); + core.ui.music.mousedown(px * 3, py * 3); + }); + music.addEventListener("touchmove", function (e) { + e.stopPropagation(); + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor( + (e.touches[0].clientX - left) / core.domStyle.scale + ), + py = Math.floor((e.touches[0].clientY - top) / core.domStyle.scale); + core.ui.music.mousemove(px * 3, py * 3); + }); + music.addEventListener("touchend", function (e) { + e.stopPropagation(); + + isvolume = false; + }); + music.addEventListener("touchcancel", function (e) { + e.stopPropagation(); + + isvolume = false; + }); + + class musicclass { + constructor() { + this.musics = ["theme.mp3"]; + //music列表 + //需全塔属性注册并保存在bgms文件夹,每个数组为显示的一页内容 + this.musicMx = [ + [ + "Crawler.opus", + "Blood_Stain.opus", + "Blind_Alley.opus", + "Halbmond.opus", + ], + ["theme.mp3", "op.opus", "Asphodelus_Ceui.opus", "ed.opus"], + ]; + //音乐别名(将在播放器内显示的音乐名,music列表内的都要有对应歌名) + this.musicname = { + "Asphodelus_Ceui.opus": "Asphodelus (Full.ver)", + "Blind_Alley.opus": "Blind Alley", + "Crawler.opus": "Crawler", + "op.opus": "Asphodelus", + "theme.mp3": "One of Episodes", + "ed.opus": "親愛なる世界へ", + "Blood_Stain.opus": "Blood Stain", + "Halbmond.opus": "Halbmond", + }; + this.selection = [0, 0]; + this.stop = false; + this.type = "xunhuan"; + this.randomList = []; + this.random = 0; + } + + //更新 + update() { + this.background(); + this.drawUI(); + } + background() { + //画布大小设置 + if (core.domStyle.isVertical) { + music.width = 1248; + music.height = 2028; + } else { + music.width = 2028; + music.height = 1248; + } + } + mousedown(px, py) { + //鼠标按下时 + + const makeBox = ([x, y], [w, h]) => { + return [ + [x, y], + [x + w, y + h], + ]; + }; + const inRect = ([x, y], [ + [sx, sy], + [dx, dy] + ]) => { + return sx <= x && x <= dx && sy <= y && y <= dy; + }; + const pos = [px, py]; + const backbox = makeBox([15, 35], [210, 90]); + if (inRect(pos, backbox)) { + //离开按钮是一致的,其余的记区分横竖屏 + music.style.display = "none"; + core.clearMap(ctx); + + core.unregisterAnimationFrame("music"); + core.restart(); + + return; + } + if (core.domStyle.isVertical) { + //竖屏 + + const pageupbox = makeBox([100, 1230], [200, 100]); + const pagedownbox = makeBox([950, 1230], [200, 100]); + const musicbox = makeBox( + [100, 200], + [1048, this.musicMx[page].length * 100] + ); + const beforebox = makeBox([120, 1620], [100, 100]); + const afterbox = makeBox([780, 1620], [100, 100]); + const playbox = makeBox([420, 1580], [200, 200]); + const typebox = makeBox([1040, 1600], [120, 120]); + + const volumebox = makeBox([250, 1940], [1050, 20]); + if (inRect(pos, pageupbox)) { + if (page !== 0) page -= 1; + return; + } + if (inRect(pos, pagedownbox)) { + if (page !== this.musicMx.length - 1) page += 1; + return; + } + if (inRect(pos, playbox)) { + if (this.stop) { + this.stop = !this.stop; + + core.resumeBgm(); + } else { + this.stop = !this.stop; + core.pauseBgm(); + } + return; + } + if (inRect(pos, beforebox)) { + this.stop = false; + switch (this.type) { + case "danqu": + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + page = this.selection[0]; + + break; + case "xunhuan": + for (;;) { + if (this.selection[1] === 0) { + if (this.selection[0] === 0) { + this.selection[0] = this.musicMx.length - 1; + this.selection[1] = + this.musicMx[this.selection[0]].length - 1; + } else { + this.selection[0] -= 1; + this.selection[1] = + this.musicMx[this.selection[0]].length - 1; + } + } else { + this.selection[1] -= 1; + } + this.random = this.randomList.indexOf( + this.musicMx[this.selection[0]][this.selection[1]] + ); + page = this.selection[0]; + if ( + this.musics.includes( + this.musicMx[this.selection[0]][this.selection[1]] + ) || + page !== this.musicMx.length - 1 + ) + break; + } + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + break; + case "suiji": + for (;;) { + if (this.random > 0) { + this.random -= 1; + } else { + this.random = this.randomList.length - 1; + } + this.selection[0] = this.musicMx.findIndex((v) => + v.includes(this.randomList[this.random]) + ); + this.selection[1] = this.musicMx[this.selection[0]].indexOf( + this.randomList[this.random] + ); + + page = this.selection[0]; + if ( + this.musics.includes( + this.musicMx[this.selection[0]][this.selection[1]] + ) || + page !== this.musicMx.length - 1 + ) + break; + } + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + break; + } + return; + } + if (inRect(pos, afterbox)) { + this.stop = false; + switch (this.type) { + case "danqu": + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + page = this.selection[0]; + break; + case "xunhuan": + for (;;) { + if ( + this.selection[1] === + this.musicMx[this.selection[0]].length - 1 + ) { + if (this.selection[0] === this.musicMx.length - 1) { + this.selection[0] = 0; + this.selection[1] = 0; + } else { + this.selection[0] += 1; + this.selection[1] = 0; + } + } else { + this.selection[1] += 1; + } + this.random = this.randomList.indexOf( + this.musicMx[this.selection[0]][this.selection[1]] + ); + page = this.selection[0]; + if ( + this.musics.includes( + this.musicMx[this.selection[0]][this.selection[1]] + ) || + page !== this.musicMx.length - 1 + ) + break; + } + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + break; + case "suiji": + for (;;) { + if (this.random < this.randomList.length - 1) { + this.random += 1; + } else { + this.random = 0; + } + this.selection[0] = this.musicMx.findIndex((v) => + v.includes(this.randomList[this.random]) + ); + this.selection[1] = this.musicMx[this.selection[0]].indexOf( + this.randomList[this.random] + ); + + page = this.selection[0]; + if ( + this.musics.includes( + this.musicMx[this.selection[0]][this.selection[1]] + ) || + page !== this.musicMx.length - 1 + ) + break; + } + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + break; + } + return; + } + if (inRect(pos, typebox)) { + switch (this.type) { + case "danqu": + this.type = "xunhuan"; + break; + case "xunhuan": + this.type = "suiji"; + break; + case "suiji": + this.type = "danqu"; + break; + } + return; + } + if (inRect(pos, musicbox)) { + const index = Math.floor((py - 200) / 100); + if (page !== this.selection[0] || index !== this.selection[1]) { + if ( + this.musics.includes(this.musicMx[page][index]) || + page !== this.musicMx.length - 1 + ) { + this.selection[0] = page; + + this.selection[1] = index; + this.randomList.indexOf( + this.musicMx[this.selection[0]][this.selection[1]] + ); + + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + this.stop = false; + } + } else { + if (this.stop) { + this.stop = !this.stop; + core.resumeBgm(); + } else { + this.stop = !this.stop; + core.pauseBgm(); + } + } + return; + } + + if (inRect(pos, volumebox)) { + const time = Math.min(Math.max((px - 250) / 800, 0), 1); + audio.setVolume(time); + core.plugin.audioSystem.soundPlayer.setVolume(time); + isvolume = true; + } + } else { + //横屏 + const pageupbox = makeBox([1050, 1100], [200, 100]); + const pagedownbox = makeBox([1550, 1100], [200, 100]); + const musicbox = makeBox( + [900, 100], + [1000, this.musicMx[page].length * 100] + ); + const beforebox = makeBox([60, 620], [100, 100]); + const afterbox = makeBox([450, 620], [100, 100]); + const playbox = makeBox([200, 570], [200, 200]); + const typebox = makeBox([620, 600], [120, 120]); + + const volumebox = makeBox([100, 990], [600, 20]); + if (inRect(pos, pageupbox)) { + if (page !== 0) page -= 1; + return; + } + if (inRect(pos, pagedownbox)) { + if (page !== this.musicMx.length - 1) page += 1; + return; + } + if (inRect(pos, playbox)) { + if (this.stop) { + this.stop = !this.stop; + core.resumeBgm(); + } else { + this.stop = !this.stop; + core.pauseBgm(); + } + return; + } + if (inRect(pos, beforebox)) { + this.stop = false; + switch (this.type) { + case "danqu": + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + page = this.selection[0]; + + break; + case "xunhuan": + for (;;) { + if (this.selection[1] === 0) { + if (this.selection[0] === 0) { + this.selection[0] = this.musicMx.length - 1; + this.selection[1] = + this.musicMx[this.selection[0]].length - 1; + } else { + this.selection[0] -= 1; + this.selection[1] = + this.musicMx[this.selection[0]].length - 1; + } + } else { + this.selection[1] -= 1; + } + this.random = this.randomList.indexOf( + this.musicMx[this.selection[0]][this.selection[1]] + ); + page = this.selection[0]; + + if ( + this.musics.includes( + this.musicMx[this.selection[0]][this.selection[1]] + ) || + page !== this.musicMx.length - 1 + ) + break; + } + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + break; + case "suiji": + for (;;) { + if (this.random > 0) { + this.random -= 1; + } else { + this.random = this.randomList.length - 1; + } + this.selection[0] = this.musicMx.findIndex((v) => + v.includes(this.randomList[this.random]) + ); + this.selection[1] = this.musicMx[this.selection[0]].indexOf( + this.randomList[this.random] + ); + + page = this.selection[0]; + + if ( + this.musics.includes( + this.musicMx[this.selection[0]][this.selection[1]] + ) || + page !== this.musicMx.length - 1 + ) + break; + } + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + break; + } + return; + } + if (inRect(pos, afterbox)) { + this.stop = false; + switch (this.type) { + case "danqu": + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + page = this.selection[0]; + break; + case "xunhuan": + for (;;) { + if ( + this.selection[1] === + this.musicMx[this.selection[0]].length - 1 + ) { + if (this.selection[0] === this.musicMx.length - 1) { + this.selection[0] = 0; + this.selection[1] = 0; + } else { + this.selection[0] += 1; + this.selection[1] = 0; + } + } else { + this.selection[1] += 1; + } + this.randomList.findIndex( + (v) => + v === this.musicMx[this.selection[0]][this.selection[1]] + ); + page = this.selection[0]; + + if ( + this.musics.includes( + this.musicMx[this.selection[0]][this.selection[1]] + ) || + page !== this.musicMx.length - 1 + ) + break; + } + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + break; + case "suiji": + for (;;) { + if (this.random < this.randomList.length - 1) { + this.random += 1; + } else { + this.random = 0; + } + this.selection[0] = this.musicMx.findIndex((v) => + v.includes(this.randomList[this.random]) + ); + this.selection[1] = this.musicMx[this.selection[0]].indexOf( + main.core.ui.music.randomList[main.core.ui.music.random] + ); + + page = this.selection[0]; + if ( + this.musics.includes( + this.musicMx[this.selection[0]][this.selection[1]] + ) || + page !== this.musicMx.length - 1 + ) + break; + } + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + break; + } + return; + } + if (inRect(pos, typebox)) { + switch (this.type) { + case "danqu": + this.type = "xunhuan"; + break; + case "xunhuan": + this.type = "suiji"; + break; + case "suiji": + this.type = "danqu"; + break; + } + return; + } + if (inRect(pos, musicbox)) { + const index = Math.floor((py - 100) / 100); + if (page !== this.selection[0] || index !== this.selection[1]) { + if ( + this.musics.includes(this.musicMx[page][index]) || + page !== this.musicMx.length - 1 + ) { + this.selection[0] = page; + this.selection[1] = index; + this.randomList.indexOf( + (v) => + v === this.musicMx[this.selection[0]][this.selection[1]] + ); + + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + this.stop = false; + } + } else { + if (this.stop) { + this.stop = !this.stop; + core.resumeBgm(); + } else { + this.stop = !this.stop; + core.pauseBgm(); + } + } + return; + } + + if (inRect(pos, volumebox)) { + const time = Math.min(Math.max((px - 100) / 600, 0), 1); + audio.setVolume(time); + core.plugin.audioSystem.soundPlayer.setVolume(time); + isvolume = true; + } + } + } + mousemove(px, py) { + if (isvolume) { + if (core.domStyle.isVertical) { + const time = Math.min(Math.max((px - 250) / 800, 0), 1); + audio.setVolume(time); + core.plugin.audioSystem.soundPlayer.setVolume(time); + } else { + const time = Math.min(Math.max((px - 100) / 600, 0), 1); + audio.setVolume(time); + core.plugin.audioSystem.soundPlayer.setVolume(time); + } + } + } + + drawUI() { + //绘制页面 + core.clearMap(music); + const bgVertical = core.material.images.images["bg_2010.webp"]; //竖屏背景 + const bg = core.material.images.images["bg_5043.webp"]; //竖屏背景 + if (core.domStyle.isVertical) { + //竖屏 + + core.fillRect(ctx, 0, 0, 1248, 2028, "#000000"); //黑色背景 + ctx.globalAlpha = 0.3; //透明度 + if (bgVertical) + ctx.drawImage(bgVertical, 0, 0, 1280, 1500, 0, 0, 1248, 2028); //绘制半透明背景图片 + ctx.globalAlpha = 1; //恢复为不透明 + + core.setTextAlign(ctx, "center"); + core.fillBoldText1( + ctx, + "◀离开", + 110, + 100, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + ctx.strokeStyle = "#FFFFFF"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(100, 200); + ctx.lineTo(1148, 200); + + ctx.stroke(); + let posy = 300; + const indexList = this.musicMx[page]; + core.setTextAlign(ctx, "left"); + for (let i = 0; i < indexList.length; i++) { + const text = this.musicname[indexList[i]]; + if ( + this.musics.includes(this.musicMx[page][i]) || + page !== this.musicMx.length - 1 + ) { + core.fillBoldText1( + ctx, + text, + 150, + posy - 30, + page === this.selection[0] && i === this.selection[1] ? + "#FFFFFF" : + "#444444", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + ctx.strokeStyle = "#FFFFFF"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(100, posy); + ctx.lineTo(1148, posy); + ctx.stroke(); + } + posy += 100; + } + ctx.beginPath(); + ctx.moveTo(100, 1210); + ctx.lineTo(1148, 1210); + ctx.moveTo(100, 1200); + ctx.lineTo(1148, 1200); + ctx.stroke(); + + core.fillBoldText1( + ctx, + "上一页", + 100, + 1300, + page === 0 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + core.fillBoldText1( + ctx, + page + 1 + "/" + this.musicMx.length, + 580, + 1300, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + core.fillBoldText1( + ctx, + "下一页", + 950, + 1300, + page === this.musicMx.length - 1 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 3; + + + core.fillBoldText( + ctx, + "|", + 100, + 1697, + "#FFFFFF", + 6, + core.ui._buildFont(96, true) + ); + core.fillBoldText( + ctx, + "◀", + 115, + 1700, + "#FFFFFF", + 6, + core.ui._buildFont(96, true) + ); + + ctx.beginPath(); + ctx.arc(505, 1670, 80, 0, 3 * Math.PI); + ctx.stroke(); + core.fillText( + ctx, + "|", + 835, + 1697, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + core.fillText( + ctx, + "▶", + 785, + 1700, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + + if (this.stop) { + core.fillText( + ctx, + "▶", + 473, + 1700, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + + } else { + + core.fillText( + ctx, + "||", + 453, + 1700, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + } + + const img = core.material.images.images[this.type + ".webp"]; + if (img) ctx.drawImage(img, 1000, 1555, 200, 200); + core.setTextAlign(ctx, "center"); + ctx.font = "bold 52px Verdana"; + ctx.fillText("当前歌曲", 625, 1397); + ctx.fillText( + this.musicname[this.musicMx[this.selection[0]][this.selection[1]]], + 625, + 1507 + ); + + ctx.fillStyle = "#ffffff"; + ctx.font = "bold 48px Verdana"; + ctx.fillText("音量", 150, 1970); + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(250, 1950); + ctx.lineTo(1050, 1950); + ctx.stroke(); + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 9; + ctx.fillStyle = "rgba(255,255,255,0.5)"; + + ctx.beginPath(); + ctx.moveTo(250, 1950); + ctx.lineTo(800 * audio.getVolume() + 250, 1950); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(800 * audio.getVolume() + 250, 1950, 10, 0, 2 * Math.PI); + ctx.fill(); + core.fillBoldText1( + ctx, + Math.floor(100 * audio.getVolume()), + 1120, + 1970, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(56, true) + ); + } else { + //横屏 + + core.fillRect(ctx, 0, 0, 2028, 1248, "#000000"); //黑色背景 + ctx.globalAlpha = 0.5; //透明度 + if (bg) ctx.drawImage(bg, 0, 0, 1280, 720, 0, 0, 2028, 1248); //绘制半透明背景图片 + ctx.globalAlpha = 1; //恢复为不透明 + core.setTextAlign(ctx, "center"); + + core.fillBoldText1( + ctx, + "◀离开", + 110, + 100, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + ctx.strokeStyle = "#FFFFFF"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(800, 100); + ctx.lineTo(800, 1148); + ctx.moveTo(900, 100); + ctx.lineTo(1900, 100); + ctx.stroke(); + let posy = 200; + const indexList = this.musicMx[page]; + core.setTextAlign(ctx, "left"); + for (let i = 0; i < indexList.length; i++) { + const text = this.musicname[indexList[i]]; + if ( + this.musics.includes(this.musicMx[page][i]) || + page !== this.musicMx.length - 1 + ) { + core.fillBoldText1( + ctx, + text, + 950, + posy - 30, + page === this.selection[0] && i === this.selection[1] ? + "#FFFFFF" : + "#444444", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + ctx.strokeStyle = "#FFFFFF"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(900, posy); + ctx.lineTo(1900, posy); + ctx.stroke(); + } + posy += 100; + } + core.fillBoldText1( + ctx, + "上一页", + 1050, + 1200 - 30, + page === 0 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + core.fillBoldText1( + ctx, + page + 1 + "/" + this.musicMx.length, + 1350, + 1200 - 30, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + core.fillBoldText1( + ctx, + "下一页", + 1550, + 1200 - 30, + page === this.musicMx.length - 1 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 3; + + core.fillText( + ctx, + "|", + 55, + 697, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + core.fillText( + ctx, + "◀", + 70, + 700, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + + ctx.beginPath(); + ctx.arc(295, 670, 80, 0, 2 * Math.PI); + ctx.stroke(); + if (this.stop) { + core.fillText( + ctx, + "▶", + 265, + 700, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + + } else { + core.fillText( + ctx, + "||", + 245, + 700, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + + } + core.fillText( + ctx, + "|", + 495, + 697, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + core.fillText( + ctx, + "▶", + 450, + 700, + "#FFFFFF", + core.ui._buildFont(96, true) + ); + + ctx.font = "bold 48px Verdana"; + ctx.fillText("音量", 350, 900); + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(700, 1000); + ctx.stroke(); + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 9; + ctx.fillStyle = "rgba(255,255,255,0.5)"; + + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(600 * audio.getVolume() + 100, 1000); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(600 * audio.getVolume() + 100, 1000, 10, 0, 2 * Math.PI); + ctx.fill(); + core.fillBoldText1( + ctx, + Math.floor(100 * audio.getVolume()), + 720, + 1010, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(56, true) + ); + const img = core.material.images.images[this.type + ".webp"]; + if (img) ctx.drawImage(img, 580, 560, 200, 200); + core.setTextAlign(ctx, "center"); + ctx.font = "bold 48px Verdana"; + ctx.fillText("当前歌曲", 400, 297); + ctx.fillText( + this.musicname[this.musicMx[this.selection[0]][this.selection[1]]], + 400, + 397 + ); + } + } + } + core.ui.music = new musicclass(); + main.dom.musicMode.onclick = function () { + //点击开始页面的CG MODE进入cg回廊 + if ( + (core.getLocalStorage("musics") && + core.getLocalStorage("musics").length === 0) || + !core.getLocalStorage("musics") + ) + core.setLocalStorage("musics", ["theme.mp3"]); + core.ui.music.musics = core.getLocalStorage("musics"); + core.playBgm( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + + const arr = main.core.ui.music.musicMx.flat(Infinity); + main.core.ui.music.randomList = shuffle(arr); + main.core.ui.music.random = main.core.ui.music.randomList.indexOf( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + page = 0; + music.style.display = "block"; + let time = 0; + core.registerAnimationFrame("music", null, (temptime) => { + if (temptime > time + 1000 / 60) { + time = temptime; + main.core.ui.music.update(); + const duration = + core.plugin.audioSystem.bgmController.player.getRoute( + "bgms." + + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ).duration; + + const currentTime = + core.plugin.audioSystem.bgmController.player.getRoute( + "bgms." + + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ).currentTime; + if (currentTime && duration && duration - currentTime < 0.05) { + if (core.domStyle.isVertical) { + core.ui.music.mousedown(830, 1770); + } else { + core.ui.music.mousedown(475, 765); + } + } + } + }); + }; +}, + "横屏切换": function () { // 在此增加新插件 this.triggerFullscreen = async function (full) { if (!!document.fullscreenElement && !full) { @@ -17486,7 +17583,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } }; }, - 图片压缩webp导出: function () { + "图片压缩webp导出": function () { // 在此增加新插件 //使用方法:进入游戏后开始游戏,F12打开控制台,输入core.towebp(image),image为已在全塔属性中注册过的图片名字,需要""括起来 this.towebp = function (image) { @@ -17517,7 +17614,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }); }; }, - "帧动画特效(游戏界面)": function () { + "帧动画特效(游戏界面)": function () { // 在此增加新插件 const animate2 = document.createElement("canvas"); //画布设置 animate2.style.zIndex = 71; @@ -17713,7 +17810,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { } }); }, - "intro&loop": function () { + "intro&loop": function () { // 在此增加新插件 this.introAndLoop = function (intro, time, loop) { core.playBgm(intro); @@ -17722,4 +17819,240 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }, time * 1000); }; }, -}; + "开局选项悬停": function () { + // 在此增加新插件 + + main.dom.playGame.addEventListener("mouseenter", () => { core.dom.playGame.style.backgroundColor = "#808080" }) + main.dom.playGame.addEventListener("mouseleave", () => { core.dom.playGame.style.backgroundColor = "transparent" }) + main.dom.playGame.addEventListener("touchmove", () => { core.dom.playGame.style.backgroundColor = "#808080" }) + main.dom.playGame.addEventListener("touchend", () => { core.dom.playGame.style.backgroundColor = "transparent" }) + main.dom.playGame.addEventListener("touchcancel", () => { core.dom.playGame.style.backgroundColor = "transparent" }) + + main.dom.loadGame.addEventListener("mouseenter", () => { core.dom.loadGame.style.backgroundColor = "#808080" }) + main.dom.loadGame.addEventListener("mouseleave", () => { core.dom.loadGame.style.backgroundColor = "transparent" }) + main.dom.loadGame.addEventListener("touchmove", () => { core.dom.loadGame.style.backgroundColor = "#808080" }) + main.dom.loadGame.addEventListener("touchend", () => { core.dom.loadGame.style.backgroundColor = "transparent" }) + main.dom.loadGame.addEventListener("touchcancel", () => { core.dom.loadGame.style.backgroundColor = "transparent" }) + + main.dom.CGMode.addEventListener("mouseenter", () => { core.dom.CGMode.style.backgroundColor = "#808080" }) + main.dom.CGMode.addEventListener("mouseleave", () => { core.dom.CGMode.style.backgroundColor = "transparent" }) + main.dom.CGMode.addEventListener("touchmove", () => { core.dom.CGMode.style.backgroundColor = "#808080" }) + main.dom.CGMode.addEventListener("touchend", () => { core.dom.CGMode.style.backgroundColor = "transparent" }) + main.dom.CGMode.addEventListener("touchcancel", () => { core.dom.CGMode.style.backgroundColor = "transparent" }) + + main.dom.musicMode.addEventListener("mouseenter", () => { core.dom.musicMode.style.backgroundColor = "#808080" }) + main.dom.musicMode.addEventListener("mouseleave", () => { core.dom.musicMode.style.backgroundColor = "transparent" }) + main.dom.musicMode.addEventListener("touchmove", () => { core.dom.musicMode.style.backgroundColor = "#808080" }) + main.dom.musicMode.addEventListener("touchend", () => { core.dom.musicMode.style.backgroundColor = "transparent" }) + main.dom.musicMode.addEventListener("touchcancel", () => { core.dom.musicMode.style.backgroundColor = "transparent" }) + + main.dom.replayGame.addEventListener("mouseenter", () => { core.dom.replayGame.style.backgroundColor = "#808080" }) + main.dom.replayGame.addEventListener("mouseleave", () => { core.dom.replayGame.style.backgroundColor = "transparent" }) + main.dom.replayGame.addEventListener("touchmove", () => { core.dom.replayGame.style.backgroundColor = "#808080" }) + main.dom.replayGame.addEventListener("touchend", () => { core.dom.replayGame.style.backgroundColor = "transparent" }) + main.dom.replayGame.addEventListener("touchcancel", () => { core.dom.replayGame.style.backgroundColor = "transparent" }) + +}, + "天气叠加": function () { + //使用方法:使用core.setWeather(天气,等级)来增加天气,使用core.setWeather()来清空天气 + // 天气叠加功能 + ////// 更改天气效果 ////// + control.prototype.setWeather = function (type, level) { + // 非雨雪 + if (type == null) { + Object.keys(core.control.weathers).forEach(function (one) { + core.deleteCanvas('weather' + one); + }); + core.animateFrame.weather.type = []; + core.animateFrame.weather.nodes = {}; + core.animateFrame.weather.level = {}; + core.animateFrame.weather.time = {}; + return; + } + if (!core.animateFrame.weather.level || level == null) + core.animateFrame.weather.level = {}; + if (!core.animateFrame.weather.type) core.animateFrame.weather.type = []; + level = core.clamp(parseInt(level) || 5, 1, 10); + // 当前天气:则忽略 + if (core.animateFrame.weather.type.includes(type) && level == core.animateFrame.weather.level[type]) return; + if (core.animateFrame.weather.nodes[type]) return; + // 计算当前的宽高 + core.createCanvas('weather' + type, 0, 0, core.__PIXELS__, core.__PIXELS__, 80); + core.animateFrame.weather.type.push(type); + core.animateFrame.weather.level[type] = level; + this._setWeather_createNodes(type, level); + }; + control.prototype._setWeather_createNodes = function (type, level) { + var number = level * parseInt(20 * core.bigmap.width * core.bigmap.height / (core.__SIZE__ * core.__SIZE__)); + if (!core.animateFrame.weather.nodes[type]) core.animateFrame.weather.nodes[type] = []; + switch (type) { + case 'rain': + for (var a = 0; a < number; a++) { + core.animateFrame.weather.nodes.rain.push({ + 'x': Math.random() * core.bigmap.width * 32, + 'y': Math.random() * core.bigmap.height * 32, + 'l': Math.random() * 2.5, + 'xs': -4 + Math.random() * 4 + 2, + 'ys': Math.random() * 10 + 10 + }) + } + break; + case 'snow': + for (var a = 0; a < number; a++) { + core.animateFrame.weather.nodes.snow.push({ + 'x': Math.random() * core.bigmap.width * 32, + 'y': Math.random() * core.bigmap.height * 32, + 'r': Math.random() * 5 + 1, + 'd': Math.random() * Math.min(level, 200), + }) + } + break; + case 'fog': + if (core.animateFrame.weather.fog) { + core.animateFrame.weather.nodes[type] = [{ + 'level': number, + 'x': 0, + 'y': -core.__PIXELS__ / 2, + 'dx': -Math.random() * 1.5, + 'dy': Math.random(), + 'delta': 0.001, + }]; + } + break; + case 'cloud': + if (core.animateFrame.weather.cloud) { + core.animateFrame.weather.nodes[type] = [{ + 'level': number, + 'x': 0, + 'y': -core.__PIXELS__ / 2, + 'dx': -Math.random() * 1.5, + 'dy': Math.random(), + 'delta': 0.001, + }]; + } + break; + case 'sun': + if (core.animateFrame.weather.sun) { + // 直接绘制 + core.clearMap('weather' + type); + core.setAlpha('weather' + type, level / 10); + core.drawImage('weather' + type, core.animateFrame.weather.sun, 0, 0, + core.animateFrame.weather.sun.width, core.animateFrame.weather.sun.height, 0, 0, core.__PIXELS__, core.__PIXELS__); + core.setAlpha('weather' + type, 1); + } + break; + } + }; + core.registerAnimationFrame("weather", true, function (timestamp) { + var weather = core.animateFrame.weather; + if (!weather.type) return; + weather.type.forEach(function (one) { + if (timestamp - weather.time[one] <= 30 || !core.dymCanvas["weather" + one]) return; + core.control["_animationFrame_weather_" + one](); + weather.time[one] = timestamp; + }); + }); + // 雨 + control.prototype._animationFrame_weather_rain = function () { + var ctx = core.dymCanvas.weatherrain, + ox = core.bigmap.offsetX, + oy = core.bigmap.offsetY; + core.clearMap('weatherrain'); + ctx.strokeStyle = 'rgba(174,194,224,0.8)'; + ctx.lineWidth = 1; + ctx.lineCap = 'round'; + core.animateFrame.weather.nodes.rain.forEach(function (p) { + ctx.beginPath(); + ctx.moveTo(p.x - ox, p.y - oy); + ctx.lineTo(p.x + p.l * p.xs - ox, p.y + p.l * p.ys - oy); + ctx.stroke(); + p.x += p.xs; + p.y += p.ys; + if (p.x > core.bigmap.width * 32 || p.y > core.bigmap.height * 32) { + p.x = Math.random() * core.bigmap.width * 32; + p.y = -10; + } + }); + ctx.fill(); + }; + // 雪 + control.prototype._animationFrame_weather_snow = function () { + var ctx = core.dymCanvas.weathersnow, + ox = core.bigmap.offsetX, + oy = core.bigmap.offsetY; + core.clearMap('weathersnow'); + ctx.fillStyle = "rgba(255, 255, 255, 0.8)"; + ctx.beginPath(); + if (!core.animateFrame.weather.data) core.animateFrame.weather.data = {}; + core.animateFrame.weather.data.snow = core.animateFrame.weather.data.snow || 0; + core.animateFrame.weather.data.snow += 0.01; + var angle = core.animateFrame.weather.data.snow; + core.animateFrame.weather.nodes.snow.forEach(function (p) { + ctx.moveTo(p.x - ox, p.y - oy); + ctx.arc(p.x - ox, p.y - oy, p.r, 0, Math.PI * 2, true); + // update + p.x += Math.sin(angle) * core.animateFrame.weather.level.snow; + p.y += Math.cos(angle + p.d) + 1 + p.r / 2; + if (p.x > core.bigmap.width * 32 + 5 || p.x < -5 || p.y > core.bigmap.height * 32) { + if (Math.random() > 1 / 3) { + p.x = Math.random() * core.bigmap.width * 32; + p.y = -10; + } else { + if (Math.sin(angle) > 0) + p.x = -5; + else + p.x = core.bigmap.width * 32 + 5; + p.y = Math.random() * core.bigmap.height * 32; + } + } + }); + ctx.fill(); + }; + // 图片天气 + control.prototype.__animateFrame_weather_image = function (image, type) { + if (!image) return; + var node = core.animateFrame.weather.nodes[type][0]; + core.setAlpha('weather' + type, node.level / 500); + var wind = 1.5; + var width = image.width, + height = image.height; + node.x += node.dx * wind; + node.y += (2 * node.dy - 1) * wind; + if (node.x + 3 * width <= core.__PIXELS__) { + node.x += 4 * width; + while (node.x > 0) node.x -= width; + } + node.dy += node.delta; + if (node.dy >= 1) { + node.delta = -0.001; + } else if (node.dy <= 0) { + node.delta = 0.001; + } + if (node.y + 3 * height <= core.__PIXELS__) { + node.y += 4 * height; + while (node.y > 0) node.y -= height; + } else if (node.y >= 0) { + node.y -= height; + } + for (var i = 0; i < 3; ++i) { + for (var j = 0; j < 3; ++j) { + if (node.x + (i + 1) * width <= 0 || node.x + i * width >= core.__PIXELS__ || + node.y + (j + 1) * height <= 0 || node.y + j * height >= core.__PIXELS__) + continue; + core.drawImage('weather' + type, image, node.x + i * width, node.y + j * height); + } + } + core.setAlpha('weather' + type, 1); + }; + // 雾 + control.prototype._animationFrame_weather_fog = function () { + core.clearMap('weatherfog'); + this.__animateFrame_weather_image(core.animateFrame.weather.fog, 'fog'); + }; + // 云 + control.prototype._animationFrame_weather_cloud = function () { + core.clearMap('weathercloud'); + this.__animateFrame_weather_image(core.animateFrame.weather.cloud, 'cloud'); + } +} +} \ No newline at end of file diff --git a/styles.css b/styles.css index 89ddc05..e7ba189 100644 --- a/styles.css +++ b/styles.css @@ -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; -} \ No newline at end of file + transition: transform 1.5s ease-out; + -webkit-transition: transform 1.5s ease-out; +}