<!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&#39;s</option>
            <option value="opponent">opponent&#39;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>