MediaWiki:ARKCode.js
ナビゲーションに移動
検索に移動
注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
- Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
- Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
- Internet Explorer / Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
- Opera: Ctrl-F5を押してください
// Used by [[Template:ARKCode]]
$(function(){
var ARKCodeImages = [
'https://ark.wiki.gg/images/6/6f/ARKCode0.png',
'https://ark.wiki.gg/images/b/b3/ARKCode1.png',
'https://ark.wiki.gg/images/a/aa/ARKCode2.png',
'https://ark.wiki.gg/images/4/40/ARKCode3.png'
];
function ARKCodeDecode(input) {
var code = input.children[0].children[1].value;
var codeRep = input.children[1].children[1];
var outputEl = input.children[2].children[1];
codeRep.innerHTML = '';
code = code.replace(/[^wasd \n]/g, '');
var output = '';
var codeRepOutput = '';
var ii = 0;
var c = 0;
for (var i = 0; i < code.length; i++) {
if (code[i] == ' ' || code[i] == '\n') {
output += ' ';
ii = 0;
if (code[i] == '\n') {
codeRepOutput += '<br/>';
}
continue;
}
var add = 0;
switch (code[i]) {
case 'd':
add = 1;
break;
case 's':
add = 2;
break;
case 'w':
add = 3;
break;
}
c = c * 4 + add;
codeRepOutput += '<img alt="' + add + '" src="' + ARKCodeImages[add] + '" width="46" height="24">';
if (ii == 3 || i == code.length - 1) {
ii = 0;
if (c > 31 && c < 127) {
output += String.fromCharCode(c);
}
c = 0;
} else {
ii++;
}
}
outputEl.innerHTML = output;
codeRep.innerHTML = codeRepOutput;
}
// replace the textarea div(s) with an actual textarea
Array.from(document.getElementsByClassName('ARKCode-textarea')).forEach(function(textDiv){
var newNode = document.createElement('textarea');
newNode.setAttribute('style', textDiv.getAttribute('style'));
newNode.value = textDiv.textContent;
newNode.classList = textDiv.classList;
textDiv.parentElement.appendChild(newNode);
newNode.addEventListener('input', function(){ARKCodeDecode(newNode.parentElement.parentElement)});
textDiv.remove();
});
// replace the button div(s) with an actual button
Array.from(document.getElementsByClassName('ARKCode-button')).forEach(function(buttonDiv) {
var newNode = document.createElement('input');
newNode.type = 'button';
newNode.classList = buttonDiv.classList;
newNode.value = buttonDiv.textContent;
buttonDiv.parentElement.appendChild(newNode);
addEventListener('click', function(){ARKCodeDecode(newNode.parentElement.parentElement)});
buttonDiv.remove();
});
});