// 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 = {}

// premet de ne pas laisser le joueur acheter html 5 si il n'a pas débloqué html 1.0 etc..
let evolution = 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[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 = {}
                    remplirMagasin()

                    // 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 += 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 === 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[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 tech = data["collegues"]

    for(const key in tech){
        // 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 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 collegues(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
                    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 += 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 === 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[key] = true

                test.appendChild(btn_acheter)
    
    
                tr.appendChild(case_nom)
                tr.appendChild(case_boost)
                tr.appendChild(case_cout)
                tr.appendChild(test)
                
                table.appendChild(tr)
            }
        }
        

    }

}
