// stoque les ameliorations deja disponibles dans le magasin pour ne pas le faire clignoter let magasin_tech = {} let magasin_coll = {} // stoquer les ameliorations deja achetees pour ne pas les afficher dans le magasin let sacado = {} // premet de ne pas laisser le joueur acheter html 5 si il n'a pas débloqué html 1.0 etc.. let evolution_tech = 0 let evolution_coll = 0 // variable qui permet d'augmenter la taille de l'incrément du score pour chaque clic, en fonction de la technlologie déloquée let boost = 1 async function remplirMagasinTechnologies(){ const table= document.getElementById("table_magasin_technologies_body") let data = await fetch("../bdd/arbre.json") data = await data.json() let tech = data["technologies"] for(const key in tech){ // ne va pas s'embeter à proecess si on a deja acheté l'amelioration if(!sacado[key] && !magasin_tech[key]){ el = tech[key] const tr = document.createElement("tr") const case_nom = document.createElement("td") case_nom.innerText = el.nom const case_boost = document.createElement("td") case_boost.innerText = el.boost const case_cout = document.createElement("td") case_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_tech = {} remplirMagasinTechnologies() // finalement, on lui débit son compte de points tel un vendeur de voitures score -= t.cout const score_aff = document.getElementById("score_affichage") score_aff.innerText="SCORE : " + score // augmentation du boost d'incrément ouvrirAlerte("Incrémentation de la rentabilité de tes clicks de "+t.boost+" points !!") if(t.props.evolution == 0){ boost += t.boost -1 // car sinon, le premier boost ne va pas entrainer un nombre rond de points par click :) }else{ boost += t.boost } // incrémente le score implicite d'evolution pour permettre à la prochaine amelioration de s'afficher evolution_tech += 1 }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) && (evolution_tech === parseInt(t.props.evolution))){ ouvrirAlerte(tech[key]["narration"]) // met à jour le contenu du magasin // pour ne pas re-afficher cette ligne et éviter un clignotement magasin_tech[key] = true test.appendChild(btn_acheter) tr.appendChild(case_nom) tr.appendChild(case_boost) tr.appendChild(case_cout) tr.appendChild(test) table.appendChild(tr) } } } } async function remplirMagasinCollegues(){ const table= document.getElementById("table_magasin_collegues_body") let data = await fetch("../bdd/arbre.json") data = await data.json() let collegues = data["collegues"] for(const key in collegues){ // ne va pas s'embeter à proecess si on a deja acheté l'amelioration if(!sacado[key] && !magasin_coll[key]){ el = collegues[key] const tr = document.createElement("tr") const case_nom = document.createElement("td") case_nom.innerText = el.nom const case_boost = document.createElement("td") case_boost.innerText = el.boost const case_cout = document.createElement("td") case_cout.innerText = el.cout // case contenant un lien vers la page wikipédia du personnage const case_wiki = document.createElement("td") let a = document.createElement("a") a.href = el.wikipedia a.innerText = el.nom case_cout.appendChild(a) 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 c = new Collegue(tmp) // charge les propriétés de la technologie depuis la bdd sans mettre à jour le style directement après await c.chargerDepuisBdd() /* 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 >= c.cout){ // on améliore le style de la page :) c.appliquerAmeliorationStyle() // et on ajouter l'amélioration dans l'abre des compétences débloquées sacado[key] = true // finalement, on lui débit son compte de points tel un vendeur de voitures score -= c.cout const score_aff = document.getElementById("score_affichage") score_aff.innerText="SCORE : " + score // augmentation du boost d'incrément ouvrirAlerte("Incrémentation de la rentabilité de tes clicks de "+c.boost+" points !!") boost += c.boost // incrémente le score implicite d'evolution pour permettre à la prochaine amelioration de s'afficher evolution_coll += 1 }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(evolution_coll === parseInt(c.props.evolution)){ ouvrirAlerte("Vous avez débloqué "+ c.nom+" !!"+collegues[key]["narration"]) // met à jour le contenu du magasin // pour ne pas re-afficher cette ligne et éviter un clignotement magasin_coll[key] = true test.appendChild(btn_acheter) tr.appendChild(case_nom) tr.appendChild(case_boost) tr.appendChild(case_cout) tr.appendChild(test) tr.appendChild(case_wiki) table.appendChild(tr) } } } }