projet-clicodrome/js/main.js
2024-11-29 09:37:23 +01:00

100 lines
3.2 KiB
JavaScript

// stoque les ameliorations deja disponibles dans le magasin pour ne pas le faire clignoter
let magasin = {}
// stoquer les ameliorations deja achetees pour ne pas les afficher dans le magasin
let sacado = {}
async function remplirMagasin(){
const table= document.getElementById("table_magasin_body")
let data = await fetch("../bdd/arbre.json")
data = await data.json()
let tech = data["technologies"]
for(const key in tech){
console.log(sacado)
console.log(magasin)
// ne va pas s'embeter à proecess si on a deja acheté l'amelioration
if(!sacado[key] && !magasin[key]){
el = tech[key]
const tr = document.createElement("tr")
const nom = document.createElement("td")
nom.innerText = el.nom
const boost = document.createElement("td")
boost.innerText = el.boost
const cout = document.createElement("td")
cout.innerText = el.cout
const test = document.createElement("td")
const btn_acheter = document.createElement("button")
// stoquage temporaire de la clé JSON correspondant à la technologie à débloquer
// pour éviter de référencer key, qui va sauter sur sa valeur finale
let tmp = key
let t = new Technologie(tmp)
// charge les propriétés de la technologie depuis la bdd sans mettre à jour le style directement après
await t.chargerDepuisBdd(false)
/* fonction qui va s'activer lorsqu'on achète l'objet*/
btn_acheter.addEventListener("click", (event) =>{
// ne laisse acheter que si on a l'argent
if(score >= t.cout){
// on améliore le style de la page :)
t.appliquerAmeliorationStyle()
// et on ajouter l'amélioration dans l'abre des compétences débloquées
sacado[key] = true
// on refresh le magasin pour enlever l'amelioration de la liste
// vide le ventre du magasin
table.innerHTML = ""
magasin = {}
remplirMagasin()
// finalement, on lui débit son compte de points tel un vendeur de voitures
score -= t.cout
}else{
// PAS ASSEZ RICHE !!!!!
alert("PAS ASSEZ RICHE !!!!!!!!!!!!")
}
})
btn_acheter.innerText = "Acheter"
// n'afficher l'amélioration que si le score est assez élevé
if(t.props.borne <= score){
// met à jour le contenu du magasin
// pour ne pas re-afficher cette ligne et éviter un clignotement
magasin[key] = true
test.appendChild(btn_acheter)
tr.appendChild(nom)
tr.appendChild(boost)
tr.appendChild(cout)
tr.appendChild(test)
table.appendChild(tr)
}
}
}
}