| @@ -101,4 +101,5 @@ Please refer to existing files. | |||
| * [pad-rikuu](//github.com/kiootic/pad-rikuu) //Parse data | |||
| * [html2canvas](//github.com/niklasvh/html2canvas) //Capture Image | |||
| * [localforage](//github.com/localForage/localForage) //Easy IndexedDB | |||
| * [pako](//github.com/nodeca/pako) //Deflate URL length | |||
| * [aaa](//github.com/jy4340132/aaa) //Play voice(ADPCM wav) | |||
| @@ -19,6 +19,7 @@ const teamsCount = 2; | |||
| <script type="text/javascript" src="script.js"></script> | |||
| <script type="text/javascript" src="library/localforage.min.js"></script> | |||
| <script type="text/javascript" src="library/html2canvas.min.js"></script> | |||
| <script type="text/javascript" src="library/pako.min.js"></script> | |||
| <!--▼ADPCM播放相关--> | |||
| <script type="text/javascript" src="library/jy4340132-aaa/std.js"></script> | |||
| <script type="text/javascript" src="library/jy4340132-aaa/pcm_player.js"></script> | |||
| @@ -88,6 +88,13 @@ function getQueryString(name,url) { | |||
| } | |||
| } | |||
| function Uint8ArrayToString(fileData){ | |||
| return Array.from(fileData).map(int=>String.fromCharCode(int)).join(''); | |||
| } | |||
| function stringToUint8Array(str){ | |||
| const codeArr = Array.from(str).map(chr=>chr.charCodeAt(0)); | |||
| return new Uint8Array(codeArr); | |||
| } | |||
| //数组去重 | |||
| /* https://www.cnblogs.com/baiyangyuanzi/p/6726258.html | |||
| * 实现思路:获取没重复的最右一值放入新数组。 | |||
| @@ -111,15 +118,15 @@ Array.prototype.uniq = function() | |||
| const pcmMemory = new WebAssembly.Memory({initial: 256, maximum: 256}); | |||
| const pcmImportObj = { | |||
| env: { | |||
| abortStackOverflow: () => { throw new Error("overflow"); }, | |||
| table: new WebAssembly.Table({ initial: 0, maximum: 0, element: "anyfunc" }), | |||
| tableBase: 0, | |||
| memory: pcmMemory, | |||
| memoryBase: 102400, | |||
| STACKTOP: 0, | |||
| STACK_MAX: pcmMemory.buffer.byteLength, | |||
| } | |||
| env: { | |||
| abortStackOverflow: () => { throw new Error("overflow"); }, | |||
| table: new WebAssembly.Table({ initial: 0, maximum: 0, element: "anyfunc" }), | |||
| tableBase: 0, | |||
| memory: pcmMemory, | |||
| memoryBase: 102400, | |||
| STACKTOP: 0, | |||
| STACK_MAX: pcmMemory.buffer.byteLength, | |||
| } | |||
| }; | |||
| let pcmPlayer = null; | |||
| @@ -127,33 +134,33 @@ let adpcm_wasm = null; | |||
| function decodeAudio(fileName, decodeCallback) | |||
| { | |||
| if(pcmPlayer != null) | |||
| { | |||
| pcmPlayer.close(); | |||
| } | |||
| pcmPlayer = new PCMPlayer(1, 44100); | |||
| fetch(fileName).then((response) => response.arrayBuffer()) | |||
| .then((bytes) => { | |||
| let audioData = new Uint8Array(bytes); | |||
| let step = 160; | |||
| for(let i = 0; i < audioData.byteLength; i += step) | |||
| { | |||
| let pcm16BitData = decodeCallback(audioData.slice(i, i + step)); | |||
| let pcmFloat32Data = Std.shortToFloatData(pcm16BitData); | |||
| pcmPlayer.feed(pcmFloat32Data); | |||
| } | |||
| }); | |||
| if(pcmPlayer != null) | |||
| { | |||
| pcmPlayer.close(); | |||
| } | |||
| pcmPlayer = new PCMPlayer(1, 44100); | |||
| fetch(fileName).then((response) => response.arrayBuffer()) | |||
| .then((bytes) => { | |||
| let audioData = new Uint8Array(bytes); | |||
| let step = 160; | |||
| for(let i = 0; i < audioData.byteLength; i += step) | |||
| { | |||
| let pcm16BitData = decodeCallback(audioData.slice(i, i + step)); | |||
| let pcmFloat32Data = Std.shortToFloatData(pcm16BitData); | |||
| pcmPlayer.feed(pcmFloat32Data); | |||
| } | |||
| }); | |||
| } | |||
| fetch("library/jy4340132-aaa/adpcm.wasm").then((response) => response.arrayBuffer()) | |||
| .then((bytes) => WebAssembly.instantiate(bytes, pcmImportObj)) | |||
| .then((wasm) => { | |||
| adpcm_wasm = wasm; | |||
| /*addButton("adpcm").onclick = function () { | |||
| let decoder = new Adpcm(wasm, pcmImportObj); | |||
| decoder.resetDecodeState(new Adpcm.State(0, 0)); | |||
| decodeAudio("demo.adpcm", decoder.decode.bind(decoder)); | |||
| }*/ | |||
| /*addButton("adpcm").onclick = function () { | |||
| let decoder = new Adpcm(wasm, pcmImportObj); | |||
| decoder.resetDecodeState(new Adpcm.State(0, 0)); | |||
| decodeAudio("demo.adpcm", decoder.decode.bind(decoder)); | |||
| }*/ | |||
| }); | |||
| //▲ADPCM播放相关 | |||
| function latentUseHole(latentId) | |||
| @@ -519,7 +526,7 @@ function countTeamHp(memberArr, leader1id, leader2id, solo) | |||
| return hp; | |||
| }); | |||
| console.log(mHpArr); | |||
| console.log('单个队伍血量:',mHpArr); | |||
| function memberHpMul(card,ls,memberArr,solo) | |||
| { | |||
| @@ -597,9 +597,14 @@ function reloadFormationData() | |||
| let formationData; | |||
| try | |||
| { | |||
| const parameterDataString = getQueryString("d") || getQueryString("data"); | |||
| let parameterDataString = getQueryString("d") || getQueryString("data"); | |||
| if (parameterDataString) | |||
| { | |||
| if (parameterDataString.charAt(0) != '{') | |||
| { | |||
| parameterDataString = pako.inflate(parameterDataString,{to:'string'}) | |||
| console.log('数据字符串解压结果:',parameterDataString); | |||
| } | |||
| formationData = JSON.parse(parameterDataString); | |||
| } | |||
| }catch(e) | |||
| @@ -626,7 +631,14 @@ function creatNewUrl(arg){ | |||
| const newSearch = new URLSearchParams(); | |||
| if (language_i18n) newSearch.set("l",language_i18n); | |||
| if (datasource && datasource!="ja") newSearch.set("s",datasource); | |||
| if (outObj) newSearch.set("d", JSON.stringify(outObj)); | |||
| const dataJsonStr = JSON.stringify(outObj); //数据部分的字符串 | |||
| const deflate = pako.deflate(dataJsonStr,{to:'string'}); | |||
| if (outObj) newSearch.set("d", | |||
| deflate.length < dataJsonStr.length ? //压缩后长度小于压缩前长度 | |||
| deflate : //使用压缩字符串 | |||
| dataJsonStr); //使用原始字符串 | |||
| const newUrl = (arg.url || "") + '?' + newSearch.toString(); | |||
| @@ -19,6 +19,7 @@ const teamsCount = 1; | |||
| <script type="text/javascript" src="script.js"></script> | |||
| <script type="text/javascript" src="library/localforage.min.js"></script> | |||
| <script type="text/javascript" src="library/html2canvas.min.js"></script> | |||
| <script type="text/javascript" src="library/pako.min.js"></script> | |||
| <!--▼ADPCM播放相关--> | |||
| <script type="text/javascript" src="library/jy4340132-aaa/std.js"></script> | |||
| <script type="text/javascript" src="library/jy4340132-aaa/pcm_player.js"></script> | |||
| @@ -19,6 +19,7 @@ const teamsCount = 3; | |||
| <script type="text/javascript" src="script.js"></script> | |||
| <script type="text/javascript" src="library/localforage.min.js"></script> | |||
| <script type="text/javascript" src="library/html2canvas.min.js"></script> | |||
| <script type="text/javascript" src="library/pako.min.js"></script> | |||
| <!--▼ADPCM播放相关--> | |||
| <script type="text/javascript" src="library/jy4340132-aaa/std.js"></script> | |||
| <script type="text/javascript" src="library/jy4340132-aaa/pcm_player.js"></script> | |||