<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Server</title> <script> var global = window; // function require (file) { // return window[file.replace(/^\.[\/\\]/,'').replace(/.js$/,'')]; // } function handleCardInfo() { // var defaultValueMap = { // "rarity": "LR", // "cardType": "SIGNI", // "color": "white", // "level": 0, // "limit": 0, // "power": 0, // "limiting": "", // "classes": [], // "costWhite": 0, // "costBlack": 0, // "costRed": 0, // "costBlue": 0, // "costGreen": 0, // "costColorless": 0, // "guardFlag": false, // "multiEner": false, // }; for (var x in CardInfo) { var info = CardInfo[x]; delete info.timestamp; delete info.kana; delete info.imgUrl; delete info.cardText; delete info.cardText_zh_CN; delete info.cardText_en; delete info.constEffects; delete info.actionEffects; delete info.startUpEffects; delete info.spellEffect; delete info.artsEffect; delete info.burstEffect delete info.faqs; delete info.cardSkills; delete info.growCondition; delete info.useCondition; delete info.costChange; delete info.costChangeBeforeUseAsyn; delete info.resonaPhase; delete info.resonaCondition; delete info.resonaAsyn; delete info.encore; delete info.bettedCost; if (info.rise) info.rise = true; // for (var key in defaultValueMap) { // if (info[key] === defaultValueMap[key]) { // delete info[key]; // } // } } // var textarea = document.createElement('textarea'); // textarea.value = JSON.stringify(CardInfo); // document.body.appendChild(textarea); // textarea.select(); } function handleCardInfo_ko(min, max) { var props = [ "name", "actionEffectTexts", "constEffectTexts", "startUpEffectTexts", "spellEffectTexts", "artsEffectTexts", "burstEffectTexts", "attachedEffectTexts", "extraTexts", ]; var suffix = [ "", "_zh_CN", "_en" ] var arr = []; for (var x in CardInfo) { // if (x <= 1762) continue; if (x < min || x > max) continue; var info = CardInfo[x]; var obj = { pid: info.pid, wxid: info.wxid, }; props.forEach(function(rawprop) { // suffix.forEach(function (suf) { // var prop = rawprop + suf; // if (!info[prop]) return; // obj[prop] = info[prop]; // }); obj[rawprop + "_ko"] = info[rawprop + "_en"]; }); arr.push(obj); } down(arr, `${min}-${max}.json`) } function fetchAndHandleRuJson(url) { let CardInfo_ru = {}; fetch(url).then(res => res.json()).then(arr => { arr.forEach(info => { let info_ru = {}; for (let prop in info) { if (!prop.match(/_ru$/)) continue; info_ru[prop] = info[prop]; } CardInfo_ru[info.pid] = info_ru; }); window.ru = JSON.stringify(CardInfo_ru); }); } function getPrCards() { let ids = []; for (let pid in CardInfo) { let card = CardInfo[pid]; let id = +card.wxid.replace('PR-', ''); if (id) ids.push(id); } ids.sort((a, b) => a - b); let ranges = []; let start = ids[0]; let end = ids[0]; ids.slice(1).concat(0).forEach(id => { if ((id - end) === 1) { end = id; } else { let range = `${('000'+start).slice(-3)}-${('000'+end).slice(-3)}`; if (start === end) range = ('000' + start).slice(-3); ranges.push(range); start = end = id; } }) return ranges; } function getUntestedPr() { let ids = []; for (let pid in CardInfo) { if (pid <= 1762) continue; let card = CardInfo[pid]; if (card.pid !== card.cid) continue; if (/^PR-/.test(card.wxid)) ids.push(card.wxid); } return ids; } function getNewCardNames() { let names = []; for (let pid in CardInfo) { if (pid <= 1762) continue; let card = CardInfo[pid]; if (card.pid !== card.cid) continue; names.push(card.name_zh_CN); } return names; } function down(content, filename = 'down.txt') { if (typeof content === 'object') { content = JSON.stringify(content, null, ' ') } let blob = new Blob([content], { type: 'application/octet-stream' }) let url = URL.createObjectURL(blob) let link = document.createElement('a') link.href = url link.download = filename link.click() } </script> <script src="util.js"></script> <script src="random.min.js"></script> <script src="Callback.js"></script> <script src="Game.js"></script> <script src="Phase.js"></script> <script src="IO.js"></script> <script src="Player.js"></script> <script src="Card.js"></script> <script src="Zone.js"></script> <script src="CardInfo.js"></script> <script src="Timming.js"></script> <script src="Mask.js"></script> <script src="ConstEffect.js"></script> <script src="ConstEffectManager.js"></script> <script src="Effect.js"></script> <script src="EffectManager.js"></script> <script src="FakeSocket.js"></script> <script src="Client.js"></script> <script src="Room.js"></script> <script src="RoomManager.js"></script> <script src="test.js"></script> <script src="testHelper.js"></script> </head> <body> <div class="flex"> <div class="helper"> <div class="flex row"> <div> <span> p1 </span> <select id="host-decks"></select> </div> <div> <span> p2 </span> <select id="guest-decks"></select> </div> </div> <div> <button id="oben" onclick="startBattle();">oben!</button> <button onclick="grow();">grow!</button> <button onclick="draw()">draw</button> <button onclick="charge();">ener charge</button> </div> <div class="flex row"> <div> <span>add</span> <input id="card-name" class="card-name" type="text" placeholder="wx15-001" /> </div> <div> <span>to</span> <select id="target-player" class="target-player"> <option value="">turn player's</option> <option value="opponent">opponent's</option> </select> </div> </div> <div> <button onclick="addTo('handZone');">hand</button> <button onclick="addTo('lifeClothZone');">life cloth</button> <button onclick="addTo('enerZone');">ener zone</button> <button onclick="addTo('trashZone');">trash zone</button> </div> <div> <button onclick="resetLrigDeck();">reset lrig deck</button> </div> <div class="flex-center"> <textarea id="log" readonly="readonly"></textarea> </div> <div class="language"> <span>Language:</span> <select id="select-language" onchange="changeLanguage();"> <option value="en">English</option> <option value="zh_CN">简体中文</option> <option value="zh_TW">繁體中文</option> <option value="jp">日本語</option> <option value="ko">한국어</option> <option value="ru">русский</option> <option value="it">Italiano</option> </select> </div> </div> <iframe id="deck-editor" src="./webxoss-client/DeckEditor/" scrolling="no" frameborder="no" border="0"></iframe> </div> </body> <style type="text/css"> .flex { display: flex; } .helper { display: flex; flex-direction: column; } .helper>div { padding: 0.5em; } .row>div { flex: 1; } .row>div>span { margin-right: 1em; } .card-name { border: none; border-bottom: 1px solid #000; text-align: center; width: 6em; } .target-player { appearance: none; -moz-appearance: none; /* Firefox */ -webkit-appearance: none; /* Safari 和 Chrome */ border: none; width: 7em; } .flex-center { display: flex; flex: 1; justify-content: center; } .language { text-align: right; } textarea { resize: none; height: auto; width: 100%; } button { padding: .5em 1em; color: #fff; border: 1px solid #999; border: transparent; background-color: #0078e7; text-decoration: none; border-radius: 2px; display: inline-block; zoom: 1; white-space: nowrap; vertical-align: middle; text-align: center; cursor: pointer; } button:disabled, button[disabled] { border: none; opacity: .4; cursor: not-allowed; } body { font-family: PingFangSC-Regular, 'Helvetica Neue', Tahoma, Arial, 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif; } </style> </html>