277 lines
9.5 KiB
JavaScript
277 lines
9.5 KiB
JavaScript
let score = 0
|
|
|
|
// 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
|
|
|
|
let revenu_passif = 0
|
|
|
|
|
|
|
|
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]
|
|
|
|
// calcul du cout en fonction du nombre de collegue de ce type déjà acheté
|
|
|
|
if(key in sacado){
|
|
el.cout = el.cout * (1.1)**sacado[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.revenu_passif
|
|
const case_cout = document.createElement("td")
|
|
case_cout.innerText = el.cout
|
|
case_cout.id = "case_cout_"+key
|
|
|
|
// 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_wiki.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){
|
|
|
|
|
|
|
|
|
|
// 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
|
|
|
|
// narration seulement si c'est la première fois qu'on achète
|
|
if(!(key in sacado)){
|
|
ouvrirAlerte("Vous avez débloqué "+ c.nom+" !!"+collegues[key]["narration"])
|
|
ouvrirAlerte("Incrémentation de la rentabilité passive de "+c.revenu_passif+" points !!")
|
|
// et on ajoute l'amélioration dans l'abre des compétences débloquées
|
|
sacado[key] = 1
|
|
}else{
|
|
// on incrémente la qtt d'objet dans son sacado
|
|
sacado[key] += 1
|
|
}
|
|
|
|
// on change le futur cout dans le tableau
|
|
document.getElementById("case_cout_"+key).innerText = c.cout*(1.1)**sacado[key]
|
|
|
|
|
|
// augmentation du boost d'incrément
|
|
revenu_passif += c.revenu_passif
|
|
|
|
// 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)){
|
|
// 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)
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// fonction appelée à chaque clic de souris
|
|
function scoreCount(){
|
|
const score_aff = document.getElementById("score_affichage")
|
|
score += boost
|
|
score_aff.innerText="SCORE : " + Number(score).toFixed(1)
|
|
|
|
// check refresh la table magasin pour afficher une amélioration si un palier est atteint
|
|
remplirMagasinTechnologies()
|
|
remplirMagasinCollegues()
|
|
}
|
|
|
|
// revenu passif à chaque seconde
|
|
|
|
function augmenterScorePassivement(){
|
|
const score_aff = document.getElementById("score_affichage")
|
|
score += revenu_passif
|
|
console.log("nv score : ",score)
|
|
score_aff.innerText="SCORE : " + Number((score).toFixed(1));
|
|
|
|
setTimeout(() => {
|
|
augmenterScorePassivement()
|
|
}, 1000)
|
|
}
|
|
|