MediaWiki:Common.js

De Wiki Gla
Revisão de 00h56min de 19 de agosto de 2021 por Miza (discussão | contribs)
Ir para navegação Ir para pesquisar

Nota: Após salvar, você pode ter que limpar o "cache" do seu navegador para ver as alterações.

  • Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
  • Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
  • Internet Explorer/Edge: PressioneCtrl enquanto clica Recarregar, ou Pressione Ctrl-F5
  • Opera: Pressione Ctrl-F5.
$(function () {
	var myElement = document.getElementById('mw-calculator');
	myElement.innerHTML = 'any HTML';
}());{

    const levelMaximo = 100


    //Colocar classe active no tier ativo
    $('.radios label').click(function(){
        if($(barra).hasClass("darkmode-ativo")){
            $('.radios label').removeClass('active');
            $(this).addClass('active');
            $('.radios label.active').css('border-color','white')
        }
        else{
            $('.radios label').removeClass('active');
            $(this).addClass('active');
            $('.radios label.active').css('border-color','rgb(94, 93, 93)')
        }
    })


    //Dinamiza o background conforme o tier muda
    /*
    $('input[type=radio]').click(function(){
        var body = $('body')
        if ($('#tier1').is(":checked")){
            body.css('background-color','rgba(132, 255, 255, 0.5)')
        }
        if ($('#tier2').is(":checked")){
            body.css('background-color','rgba(255, 229, 127, 0.5)')
        }
        if ($('#tier3').is(":checked")){
            body.css('background-color','rgba(173, 168, 168, 0.5)')
        }
        if ($('#tier4').is(":checked")){
            body.css('background-color','rgba(133, 119, 89, 0.5)')
        }
    })
    */
    //Funções de verificação


    function verificaLevel(levelAtual){
        if(levelAtual == ''){
            return false
        }
        levelAtual = parseInt(levelAtual)
        if(levelAtual > levelMaximo || levelAtual <= 0){
            return false
        }
    }
    function verificaLevelDeseja(lvlDeseja){
        if(lvlDeseja == ''){
            return false
        }
        lvlDeseja = parseInt(lvlDeseja)
        if(lvlDeseja > levelMaximo || lvlDeseja <= 0 || lvlDeseja <= parseInt($('input[name=levelAtual]').val())){
            return false
        }
    }

    function verificaPorcentoFalta(porcentoFalta){
        if(porcentoFalta == ''){
            return false
        }
        porcentoFalta = parseInt(porcentoFalta)
        if(porcentoFalta > 100 || porcentoFalta <= 0){
            return false
        }
    }

    //Funções de estilização
    
    function aplicarCampoInvalido(el){
        el.css('border','2px solid red')
        return false
    }

    function resetarCampoInvalido(el){
        el.css('border','1px solid #ccc')
    }

    $('input[name=levelAtual]').focus(function(){
        resetarCampoInvalido($(this))
    })

    $('input[name=lvlDeseja]').focus(function(){
        resetarCampoInvalido($(this))
    })

    $('input[name=porcentoFalta]').focus(function(){
        resetarCampoInvalido($(this))
    })

    function elementoFocado(el){
        el.css('border','1px solid #3394CE')
    }
    function elementoDesfocado(el) {
        el.css('border','1px solid #7e7e7e')
    }
    $('input[type=number]').focus(function(){
        elementoFocado($(this))
    })
    $('input[type=number]').blur(function(){
        elementoDesfocado($(this))
    })

    $('form').submit(function(e){
        e.preventDefault()
        //Verifica se os dados passados estão corretos
        if(verificaLevel($('input[name=levelAtual]').val()) == false){
            aplicarCampoInvalido($('input[name=levelAtual]'))
        }
        if(verificaPorcentoFalta($('input[name=porcentoFalta]').val()) == false){
            aplicarCampoInvalido($('input[name=porcentoFalta]'))
        }
        if(verificaLevelDeseja($('input[name=lvlDeseja]').val()) == false){
            aplicarCampoInvalido($('input[name=lvlDeseja]'))
        }

        
        //Pega o valor do tier
        if ($('#tier1').is(":checked")){
            var tier = parseFloat($('#tier1').val())
        }else if ($('#tier2').is(":checked")){
            var tier = parseInt($('#tier2').val())
        }else if ($('#tier3').is(":checked")){
            var tier = parseInt($('#tier3').val())
        }else if ($('#tier4').is(":checked")){
            var tier = parseInt($('#tier4').val())
        }
        if(tier == undefined){
            return false
        }
        //Pega os dados e transforma em variaveis
        var levelAtual = parseInt($('input[name=levelAtual]').val())
        var porcentoFalta = parseInt($('input[name=porcentoFalta]').val())
        var lvlDeseja = parseInt($('input[name=lvlDeseja]').val())
        var potP = $('input[name=potP]').val()
        var potM = $('input[name=potM]').val()
        var potG = $('input[name=potG]').val()
        var xpTem = 100 - porcentoFalta //Xp atual (%) que ele tem agora, será usada depois pra ficar mais precisa a variavel xp
        var box = $('#box')
        //Caso o usúario deixe as poções vazias o sistema interpreta que ele queria deixar como 0 caso não tenha feito isso ele pega o valor deixado pelo usúario
        if(potP == '' || potP < 0){
            potP = 0
        }else{
            potP = parseInt($('input[name=potP]').val())
        }
        if(potM == '' || potM < 0){
            potM = 0
        }else{
            potM = parseInt($('input[name=potM]').val())
        }
        if(potG == '' || potG < 0){
            potG = 0
        }else{
            potG = parseInt($('input[name=potG]').val())
        }

        //Pega o valor da xp atual dele por meio de uma formula
        var xp = ((50 * ((levelAtual - 1) ** 3) - 150 * ((levelAtual - 1) ** 2) + 400 * (levelAtual - 1)) / 3) + ((50 * levelAtual ** 2 - 150 * levelAtual + 200) * xpTem / 100)
        //Pega a xp que ele precisa ter para chegar no level desejado
        var xpDesejada = (50 * ((lvlDeseja - 1) ** 3) - 150 * ((lvlDeseja - 1) ** 2) + 400 * (lvlDeseja - 1)) / 3
        console.log(xpDesejada)
        //A xp que falta para ele ir da xp atual para a xp desejada
        var xpFaltante = Math.round((xpDesejada - xp) - ((potP * (1000 * tier)) + (potM * (10000 * tier)) + (potG * (100000 * tier))))
        //Pega quantas poções ele precisa usar com base no tier e na xp que falta
        var potPFalta = Math.ceil((xpFaltante / (1000 * tier)))
        var potMFalta = (xpFaltante / (10000 * tier)).toFixed(1)
        var potGFalta = (xpFaltante / (100000 * tier)).toFixed(2)
        

        
        //Usado pra verificar se precisa-se colocar o excedente de poções ou não
        potPFalta = potPFalta.toString()

        console.log(potPFalta.lastIndexOf('0')) 
        console.log(potPFalta.lastIndexOf('0') + 1)
        console.log(potPFalta.length)
        //Se tiver zero e esse zero tiver no final ele informa que n haverá excedente de poção pequena
        if((potPFalta.indexOf('0') != -1) && potPFalta.lastIndexOf('0') + 1 == potPFalta.length){
            var potPFaltaExcedeu = 0
            potPFalta = parseInt(potPFalta)
            potMFalta = parseFloat(potMFalta)
            potMFalta = Math.ceil(potMFalta)
            var notPotPFaltaExcedeu = true
        }else{
            potPFalta = parseInt(potPFalta)
            potMFalta = Math.floor(potMFalta)
            var potPFaltaExcedeu = potPFalta - potMFalta * 10
        }
        
        
        potMFalta = potMFalta.toString()
        
        if((potMFalta.indexOf('0') != -1) && potMFalta.lastIndexOf('0') + 1 == potMFalta.length){
            potMFaltaExcedeu = 0
            potMFalta = parseFloat(potMFalta)
            potMFalta = Math.ceil(potMFalta)    
            potGFalta = Math.floor(potGFalta)
            var notPotMFaltaExcedeu = true
        }
        else{
            potGFalta = Math.floor(potGFalta)
            var potMFaltaExcedeu = potMFalta - potGFalta * 10
        }
        
        
        if(potPFalta > 1){
            var potPFaltaStr = 'poções pequenas'
        }else{
            var potPFaltaStr = 'poção pequena'
        }

        if(potMFalta > 1){
            var potMFaltaStr = 'poções médias'
        }else{
            var potMFaltaStr = 'poção média'
        }

        if(potGFalta > 1){
            var potGFaltaStr = 'poções grandes'
        }else{
            var potGFaltaStr = 'poção grande'
        }

        //Pega com base nas poções que ele gastou quanta xp ele ganhou
        var xpGanhou = (xp + ((potP * 1000 * tier) + (potM * 10000 * tier) + (potG * 100000 * tier)))


        //vai ocorrer um laço 70 vezes para ver em qual lvl o xpGanhou se encaixa
        for(var c = 0; c <= levelMaximo; c++){
            /*Formula pra saber o level que chegou com base na xp que ganhou, se a xp que ganhou for maior que a xp de um certo level esse certo level "c" é o level que ele conseguio */
            if(xpGanhou >= (50 * ((c - 1) ** 3) - 150 * ((c - 1) ** 2) + 400 * (c - 1)) / 3){
                var levelConseguiu = c  
                xpGanhou = xpGanhou
            /*Agora se a xp ganhou for maior ou igual a xp do level que ele conseguio vai criar um variavel xptonext*/
            }
        }
        //xptonext é o valor da xp que falta para o príximo level chego nesse resultado fazendo a seguinte formula:
        var xptonext = (50 * (levelConseguiu) ** 2 - 150 * (levelConseguiu) + 200) - (xpGanhou - (50 * ((levelConseguiu - 1) ** 3) - 150 * ((levelConseguiu - 1) ** 2) + 400 * (levelConseguiu - 1)) / 3)
        
        //falttonext é a xp que falta do level que ele chegou para o próximo (valor como se fosse 100% de xp para upar)
        var falttonext = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200)

        for(var n = 1; n <= 100; n++){
            //Ele testa o xp de cada porcentagem ou seja quando n for 1 ele pega o xp de 1% do levelConseguiu e coloca na variavel resultado, caso resultado for menor ou igual ao xptonext, ou seja, quando ele chegar na porcentagem que mostra a porcentagem que falta para o próximo level a variavel porcento será n
            var resultado = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * n / 100
            if(xptonext >= resultado){
                var porcento = n
                resultado = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * n / 100
            //Caso o xptonext seja muito baixo ele vai colocar porcento como 1%
            }else if(((50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * 1 / 100) >= xptonext){
                resultado = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * 1 / 100
                var porcento = 1
            }
        }

        if(porcentoFalta && levelAtual != undefined && lvlDeseja != undefined && potP != undefined && potM != undefined && potG != undefined){
            if(verificaLevelDeseja($('input[name=lvlDeseja]').val()) == undefined && verificaPorcentoFalta($('input[name=porcentoFalta]').val()) == undefined && verificaLevel($('input[name=levelAtual]').val()) == undefined){
                box.fadeOut()
                $(box).empty();
                $(box).fadeIn();
                if(levelConseguiu == levelMaximo){
                    box.append('<h2 class="h2-max">Você chegou ao level '+ levelMaximo +'!'+'</h2>')
                }

                else if(levelConseguiu == levelAtual || levelConseguiu < lvlDeseja){
                    if(levelConseguiu == levelAtual){
                        if(potMFalta >= 1 || potGFalta >= 1){
                            box.append('Você não upou nenhum level e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções, você pode escolher entre:')
                        }else{
                            box.append('Você não upou nenhum level e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções pequenas:') 
                        }
                    }
                    else if(levelConseguiu < lvlDeseja){
                        if(potMFalta >= 1 || potGFalta >= 1){
                            box.append('<h2>Você Upou!</h2>'+'Você chegou ao level '+levelConseguiu+' e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções, você pode escolher entre:')
                        }else{
                            box.append('<h2>Você Upou!</h2>'+'Você chegou ao level '+levelConseguiu+' e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções pequenas:')
                        }
                    }
                    box.append("<p style=\"text-align: center\">(Os valores abaixo são aproximados)</p>")

                    if(potMFalta >= 1 & potGFalta >= 1){
                        if(notPotMFaltaExcedeu == true && notPotPFaltaExcedeu == true){
                            box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+'</p></div></div>')
                        }
                        else if(notPotMFaltaExcedeu == true){
                            box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div></div>')
                        }else if(notPotPFaltaExcedeu == true){
                            box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+' e'+'<img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFaltaExcedeu+' '+potMFaltaStr+'</p></div></div>')
                        }else{
                            box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+ potMFalta+'  '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+'<img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFaltaExcedeu+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div></div>')
                        }
                    }
                    else if(potMFalta >= 1){
                        if(notPotPFaltaExcedeu == true){
                            box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+'</p></div></div>')
                        }else{
                        box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div></div>')
                        }
                    }else{
                        box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' '+potPFaltaStr+'</p></div></div>')
                    }
                }
                else if(levelConseguiu >= lvlDeseja){
                    box.css('text-align','center')
                    box.append('<h2>Você Upou!</h2>'+'Você chegou ao level '+levelConseguiu+' e faltam '+porcento+'% para o próximo level!') 
                }
                
            }
        }
    })
        
})