MediaWiki:ARKCode.js

Da ARK Wiki.
Jump to navigation Jump to search

In altre lingue: DeutschEnglishEspañolFrançaisPolskiPortuguês do BrasilРусский


Le modifiche ai file CSS e Javascript devono essere conformi alle regole di design del wiki.


Nota: dopo aver salvato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tenere premuto il tasto delle maiuscole Shift e fare clic su Ricarica, oppure premere Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premere Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer: tenere premuto il tasto Ctrl e fare clic su Aggiorna, oppure premere Ctrl-F5
  • Opera: svuotare completamente la cache dal menu Strumenti → Preferenze
// 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();
    });
});