diff --git a/game/game.js b/game/game.js index d95200bbf..3c111b0bd 100644 --- a/game/game.js +++ b/game/game.js @@ -1,100 +1,101 @@ -"use strict"; - -new Promise(resolve => { - // 客户端自带core.js的请注意跟进 - if ('__core-js_shared__' in window) resolve(null); - else { - const nonameInitialized = localStorage.getItem('noname_inited'); - const assetURL = typeof nonameInitialized != 'string' || nonameInitialized == 'nodejs' ? '' : nonameInitialized; - const coreJSBundle = document.createElement('script'); - coreJSBundle.onerror = coreJSBundle.onload = resolve; - coreJSBundle.src = `${assetURL}game/core-js-bundle.js`; - document.head.appendChild(coreJSBundle); - } -}).then(() => { - const nonameInitialized = localStorage.getItem('noname_inited'); - const assetURL = typeof nonameInitialized != 'string' || nonameInitialized == 'nodejs' ? '' : nonameInitialized; - const userAgent = navigator.userAgent.toLowerCase(); - - const exit = () => { - const ios = userAgent.includes('iphone') || userAgent.includes('ipad') || userAgent.includes('macintosh'); - //electron - if (typeof window.process == 'object' && typeof window.require == 'function') { - const versions = window.process.versions; - // @ts-ignore - const electronVersion = parseFloat(versions.electron); - let remote; - if (electronVersion >= 14) { - // @ts-ignore - remote = require('@electron/remote'); - } else { - // @ts-ignore - remote = require('electron').remote; - } - const thisWindow = remote.getCurrentWindow(); - thisWindow.destroy(); - window.process.exit(); - } - //android-cordova环境 - //ios-cordova环境或ios浏览器环境 - //非ios的网页版 - else if (!ios) { - window.close(); - } - }; - - if (!localStorage.getItem('gplv3_noname_alerted')) { - if (confirm('①无名杀是一款基于GPLv3协议的开源软件!\n你可以在遵守GPLv3协议的基础上任意使用,修改并转发《无名杀》,以及所有基于《无名杀》开发的拓展。\n点击“确定”即代表您认可并接受GPLv3协议↓️\nhttps://www.gnu.org/licenses/gpl-3.0.html\n②无名杀官方发布地址仅有GitHub仓库!\n其他所有的所谓“无名杀”社群(包括但不限于绝大多数“官方”QQ群、QQ频道等)均为玩家自发组织,与无名杀官方无关!')) { - // @ts-ignore - localStorage.setItem('gplv3_noname_alerted', true); - } - else { - exit(); - } - } - window['b' + 'ann' + 'e' + 'dE' + 'x' + 'ten' + 's' + 'i' + 'o' + 'ns'] = ['\u4fa0\u4e49', '\u5168\u6559\u7a0b']; - - /** - * - * @returns {["firefox" | "chrome" | "safari" | "other", number]} - */ - function coreInfo() { - const regex = /(firefox|chrome|safari)\/([\d.]+)/; - let result; - if (!(result = userAgent.match(regex))) return ["other", NaN]; - if (result[1] !== "safari") return [result[1], parseInt(result[2])]; - result = userAgent.match(/version\/([\d.]+).*safari/); - // @ts-ignore - return ["safari", parseInt(result[1])]; - } - const [core, version] = coreInfo(); - const supportMap = { - "firefox": 60, - "chrome": 61, - // 因为coreInfo不考虑子版本,故就强行只能以11运行 - "safari": 11 - } - - if (core in supportMap && supportMap[core] > version) { - const tip = '检测到您的浏览器内核版本无法支持ES Module,请立即升级浏览器或手机webview内核!'; - console.error(tip); - const redirect_tip = '您使用的浏览器或无名杀客户端内核版本过低,已经无法正常运行无名杀!\n点击“确认”以前往GitHub下载最新版无名杀客户端(可能需要科学上网)。\n稍后您的无名杀将自动退出(可能的话)'; - if (confirm(redirect_tip)) { - window.open('https://github.com/libccy/noname/releases/tag/chromium77-client'); - } - exit() - } - else { - const script = document.createElement('script') - script.type = "module"; - script.src = `${assetURL}game/entry.js` - script.async = true - script.onerror = (event) => { - console.error(event) - const message = `您使用的浏览器或无名杀客户端加载内容失败!\n报错内容: \n${event}\n若该BUG不为您个人原因造成的,请及时反馈给无名杀开发组!`; - alert(message); - exit() - } - document.head.appendChild(script) - } -}); +"use strict"; + +new Promise(resolve => { + // 客户端自带core.js的请注意跟进 + if ('__core-js_shared__' in window) resolve(null); + else { + const nonameInitialized = localStorage.getItem('noname_inited'); + const assetURL = typeof nonameInitialized != 'string' || nonameInitialized == 'nodejs' ? '' : nonameInitialized; + const coreJSBundle = document.createElement('script'); + coreJSBundle.onerror = coreJSBundle.onload = resolve; + coreJSBundle.src = `${assetURL}game/core-js-bundle.js`; + document.head.appendChild(coreJSBundle); + } +}).then(() => { + const nonameInitialized = localStorage.getItem('noname_inited'); + const assetURL = typeof nonameInitialized != 'string' || nonameInitialized == 'nodejs' ? '' : nonameInitialized; + const userAgent = navigator.userAgent.toLowerCase(); + + const exit = () => { + const ios = userAgent.includes('iphone') || userAgent.includes('ipad') || userAgent.includes('macintosh'); + //electron + if (typeof window.process == 'object' && typeof window.require == 'function') { + const versions = window.process.versions; + // @ts-ignore + const electronVersion = parseFloat(versions.electron); + let remote; + if (electronVersion >= 14) { + // @ts-ignore + remote = require('@electron/remote'); + } else { + // @ts-ignore + remote = require('electron').remote; + } + const thisWindow = remote.getCurrentWindow(); + thisWindow.destroy(); + window.process.exit(); + } + //android-cordova环境 + //ios-cordova环境或ios浏览器环境 + //非ios的网页版 + else if (!ios) { + window.close(); + } + }; + + if (!localStorage.getItem('gplv3_noname_alerted')) { + if (confirm('①无名杀是一款基于GPLv3协议的开源软件!\n你可以在遵守GPLv3协议的基础上任意使用,修改并转发《无名杀》,以及所有基于《无名杀》开发的拓展。\n点击“确定”即代表您认可并接受GPLv3协议↓️\nhttps://www.gnu.org/licenses/gpl-3.0.html\n②无名杀官方发布地址仅有GitHub仓库!\n其他所有的所谓“无名杀”社群(包括但不限于绝大多数“官方”QQ群、QQ频道等)均为玩家自发组织,与无名杀官方无关!')) { + // @ts-ignore + localStorage.setItem('gplv3_noname_alerted', true); + } + else { + exit(); + } + } + window['b' + 'ann' + 'e' + 'dE' + 'x' + 'ten' + 's' + 'i' + 'o' + 'ns'] = ['\u4fa0\u4e49', '\u5168\u6559\u7a0b']; + + /** + * + * @returns {["firefox" | "chrome" | "safari" | "other", number]} + */ + function coreInfo() { + const regex = /(firefox|chrome|safari)\/([\d.]+)/; + let result; + if (!(result = userAgent.match(regex))) return ["other", NaN]; + if (result[1] !== "safari") return [result[1], parseInt(result[2])]; + result = userAgent.match(/version\/([\d.]+).*safari/); + // @ts-ignore + return ["safari", parseInt(result[1])]; + } + const [core, version] = coreInfo(); + const supportMap = { + "firefox": 60, + "chrome": 61, + // 因为coreInfo不考虑子版本,故就强行只能以11运行 + "safari": 11 + } + + if (core in supportMap && supportMap[core] > version) { + const tip = '检测到您的浏览器内核版本无法支持ES Module,请立即升级浏览器或手机webview内核!'; + console.error(tip); + const redirect_tip = '您使用的浏览器或无名杀客户端内核版本过低,已经无法正常运行无名杀!\n点击“确认”以前往GitHub下载最新版无名杀客户端(可能需要科学上网)。\n稍后您的无名杀将自动退出(可能的话)'; + if (confirm(redirect_tip)) { + window.open('https://github.com/libccy/noname/releases/tag/chromium77-client'); + } + exit() + } + else { + const script = document.createElement('script') + script.type = "module"; + script.src = `${assetURL}game/entry.js` + script.async = true + script.onerror = (event) => { + console.error(event) + const message = `您使用的浏览器或无名杀客户端加载内容失败!\n请检查游戏环境以及"(游戏根目录)/game/entry.js"文件的位置\n若该BUG不为您个人原因造成的,请及时反馈给无名杀开发组!`; + console.error(message); + alert(message); + exit() + } + document.head.appendChild(script) + } +});