993
edições
Sem resumo de edição |
Sem resumo de edição |
||
Linha 45: | Linha 45: | ||
</div> | </div> | ||
</form> | </form> | ||
<script> | |||
// Função para formatar numeros para o padrão decimal | |||
const formatNumber = (number) => Number(number).toLocaleString("pt-BR", { style: "decimal" }); | |||
// Função que retorna o calculo de gasto para boostar um pokemon (Forma normal) | |||
function calcNormalBoost(initBoost, endBoost, boostType, stonePrice, boostStonePrice) { | |||
const responseBoost = []; | |||
let usedNormalStones = 0; | |||
let usedBoostStones = 0; | |||
let stonesForBoost = 0; | |||
for (i = 1; i <= initBoost; i++) { | |||
if (i % boostType === 0) stonesForBoost++; | |||
} | |||
for (i = initBoost + 1; i <= endBoost; i++) { | |||
if (i % boostType != 0 && i != initBoost) stonesForBoost++; | |||
if ((stonesForBoost * stonePrice) < boostStonePrice) { | |||
usedNormalStones += stonesForBoost; | |||
} else { | |||
usedBoostStones++; | |||
} | |||
responseBoost.push( | |||
{ | |||
price: formatNumber((usedNormalStones * stonePrice) + (usedBoostStones * boostStonePrice)), | |||
normal_stones: usedNormalStones, | |||
boost_stones: usedBoostStones, | |||
boost: i | |||
} | |||
); | |||
} | |||
return responseBoost; | |||
} | |||
// Função que retorna o calculo de gasto para boostar um pokemon (Exceção) | |||
function calcExceptionBoost(initBoost, endBoost, boostType, stonePrice, boostStonePrice) { | |||
const responseBoost = []; | |||
let usedStones = 0; | |||
let usedNormalStones = 0; | |||
let usedBoostStones = 0; | |||
let stonesForBoost = 1; | |||
for (i = 1; i <= initBoost; i++) { | |||
if (i < 10) continue; | |||
if (i % boostType === 0) stonesForBoost++; | |||
} | |||
for (i = initBoost + 1; i <= endBoost; i++) { | |||
if (i < 10) { | |||
if (!(i % 2 === 0)) { | |||
responseBoost.push( | |||
{ | |||
price: null, | |||
necessary_stones: null, | |||
boost: i | |||
} | |||
); | |||
continue; | |||
} | |||
if ((stonesForBoost * stonePrice) < boostStonePrice) { | |||
usedNormalStones += stonesForBoost; | |||
} else { | |||
usedBoostStones++; | |||
} | |||
responseBoost.push( | |||
{ | |||
price: formatNumber((usedNormalStones * stonePrice) + (usedBoostStones * boostStonePrice)), | |||
normal_stones: usedNormalStones, | |||
boost_stones: usedBoostStones, | |||
boost: i | |||
} | |||
); | |||
continue; | |||
} | |||
if ((stonesForBoost * stonePrice) < boostStonePrice) { | |||
usedNormalStones += stonesForBoost; | |||
} else { | |||
usedBoostStones++; | |||
} | |||
if (i % boostType === 0) stonesForBoost++; | |||
responseBoost.push( | |||
{ | |||
price: formatNumber((usedNormalStones * stonePrice) + (usedBoostStones * boostStonePrice)), | |||
normal_stones: usedNormalStones, | |||
boost_stones: usedBoostStones, | |||
boost: i | |||
} | |||
); | |||
} | |||
return responseBoost; | |||
} | |||
document.addEventListener('DOMContentLoaded', function () { | |||
const form = document.querySelector("[data-target='calcBoostForm']"); | |||
form.addEventListener("submit", function (e) { | |||
e.preventDefault(); | |||
const formData = new FormData(form); | |||
const boostType = formData.get("boostType"); | |||
const specialBoost = formData.get("specialBoost"); | |||
const stonePrice = formData.get("stonePrice"); | |||
const boostStonePrice = formData.get("boostStonePrice"); | |||
const startBoost = formData.get("startBoost"); | |||
const endBoost = formData.get("endBoost"); | |||
if (startBoost > endBoost) { | |||
alert("O boost inicial não pode ser maior do que o final"); | |||
return; | |||
} | |||
if (specialBoost == "on") { | |||
console.log(calcExceptionBoost(startBoost, endBoost, boostType, stonePrice, boostStonePrice)); | |||
} else { | |||
console.log(calcNormalBoost(startBoost, endBoost, boostType, stonePrice, boostStonePrice)); | |||
} | |||
}); | |||
}); | |||
</script> |