Outils pour utilisateurs

Outils du site


brouillon3

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
brouillon3 [2026/05/12 12:19] nanakibrouillon3 [2026/05/12 13:53] (Version actuelle) nanaki
Ligne 675: Ligne 675:
  
  
-// ===== ENCODE / DECODE ULTRA SIMPLE =====+// ===================================== 
 +// ENCODE / DECODE 
 +// ===================================== 
 function encodeBuild(data){ function encodeBuild(data){
-    return JSON.stringify(data);+    return encodeURIComponent(JSON.stringify(data));
 } }
  
 function decodeBuild(code){ function decodeBuild(code){
-    return JSON.parse(code);+    return JSON.parse(decodeURIComponent(code));
 } }
  
-// ===== EXPORT ===== +// ===================================== 
-function exportBuild(){+// BUILD DATA 
 +// =====================================
  
-let data = { +function getBuildData(){
-race: raceSelect.value, +
-stats: {}, +
-equip: {}, +
-skills: [], +
-spells: [] +
-};+
  
-for(let s in costTable)+    let data = 
-data.stats[s= +document.getElementById(s).value || 0; +        race: raceSelect.value, 
-}+        stats: {}, 
 +        equip: {}, 
 +        skills: [], 
 +        spells: [] 
 +    };
  
-Object.entries(slots).forEach(([k,s])=>+    // stats 
-data.equip[k] = s.value; +    for(let in costTable){ 
-});+        data.stats[s] = +document.getElementById(s).value || 0
 +    }
  
-document.querySelectorAll(".skill:checked").forEach(s=>+    // équipements 
-data.skills.push(s.dataset.name)+    Object.entries(slots).forEach(([k,s])=>{ 
-});+        data.equip[k] = s.value
 +    });
  
-document.querySelectorAll(".spell:checked").forEach(s=>+    // passifs 
-data.spells.push(+    document.querySelectorAll(".skill:checked").forEach(s=>
-dex: +s.dataset.dex, +        data.skills.push(s.dataset.name); 
-prot: +s.dataset.prot +    });
-}); +
-});+
  
-let code = encodeBuild(data);+    // sorts 
 +    document.querySelectorAll(".spell:checked").forEach(s=>
 +        data.spells.push({ 
 +            dex: +s.dataset.dex, 
 +            prot: +s.dataset.prot 
 +        }); 
 +    });
  
-// 🔥 important → stringify lisible +    return data;
-prompt("Copie ton build :", code);+
 } }
  
-// ===== IMPORT ===== +// ===================================== 
-function importBuild(codeInput){+// APPLY BUILD 
 +// =====================================
  
-let code = codeInput || prompt("Colle le code du build :")+function applyBuild(data){
-if(!code) return;+
  
-try{+    // race 
 +    raceSelect.value = data.race || "Elfe";
  
-code = code.trim();+    // recharge équipements race 
 +    resetSlots(); 
 +    fillEquip();
  
-let data = decodeBuild(code);+    // stats 
 +    for(let s in costTable){ 
 +        document.getElementById(s).value = 
 +            data.stats?.[s] || 0; 
 +    }
  
-raceSelect.value = data.race;+    // équipements 
 +    Object.entries(slots).forEach(([k,s])=>
 +        s.value = data.equip?.[k] || ""; 
 +    });
  
-for(let s in costTable){ +    // passifs 
-document.getElementById(s).value = data.stats[s] || 0;+    document.querySelectorAll(".skill").forEach(s=>
 +        s.checked = 
 +            data.skills?.includes(s.dataset.name)
 +    }); 
 + 
 +    // sorts 
 +    document.querySelectorAll(".spell").forEach(s=>
 + 
 +        s.checked = data.spells?.some(sp => 
 +            sp.dex == +s.dataset.dex && 
 +            sp.prot == +s.dataset.prot 
 +        ); 
 + 
 +    }); 
 + 
 +    displayBase(); 
 +    checkLimit(); 
 +    autoCalculate();
 } }
  
-Object.entries(slots).forEach(([k,s])=>{ +// ===================================== 
-s.value data.equip[k] || ""; +// EXPORT 
-});+// =====================================
  
-document.querySelectorAll(".skill").forEach(s=>{ +function exportBuild(){
-s.checked = data.skills.includes(s.dataset.name); +
-});+
  
-document.querySelectorAll(".spell").forEach(s=>{ +    let data getBuildData();
-s.checked = data.spells.some(sp => +
-sp.dex == +s.dataset.dex && sp.prot == +s.dataset.prot +
-); +
-});+
  
-displayBase(); +    let code = encodeBuild(data);
-checkLimit(); +
-autoCalculate();+
  
-}catch(e){ +    prompt("Copie ton build :", code);
-alert("❌ Code invalide"); +
-console.log(e); +
-}+
 } }
  
-// ===== LIEN PARTAGE ===== +// ===================================== 
-function copyLink(){+// IMPORT 
 +// ===================================== 
 + 
 +function importBuild(codeInput){ 
 + 
 +    let code = codeInput; 
 + 
 +    if(!code){ 
 +        code = prompt("Colle le code du build :"); 
 +    } 
 + 
 +    if(!code) return; 
 + 
 +    try{ 
 + 
 +        code = code.trim(); 
 + 
 +        let data = decodeBuild(code); 
 + 
 +        applyBuild(data); 
 + 
 +        alert("✅ Build importé"); 
 + 
 +    }catch(e){
  
-let data = { +        console.log(e);
-race: raceSelect.value, +
-stats: {}, +
-equip: {}, +
-skills: [], +
-spells: [] +
-};+
  
-for(let s in costTable){ +        alert("❌ Code invalide"); 
-data.stats[s] = +document.getElementById(s).value || 0;+    }
 } }
  
-Object.entries(slots).forEach(([k,s])=>{ +// ===================================== 
-data.equip[k] s.value; +// LIEN PARTAGE 
-});+// =====================================
  
-document.querySelectorAll(".skill:checked").forEach(s=>+function copyLink(){ 
-data.skills.push(s.dataset.name); + 
-});+    let data = getBuildData(); 
 + 
 +    let code = encodeBuild(data)
 + 
 +    let url = 
 +        window.location.origin + 
 +        window.location.pathname + 
 +        "?id=simulateur&build=" + code;
  
-document.querySelectorAll(".spell:checked").forEach(s=>{ +    navigator.clipboard.writeText(url).then(()=>{
-data.spells.push({ +
-dex: +s.dataset.dex, +
-prot: +s.dataset.prot +
-}); +
-});+
  
-let code = encodeBuild(data);+        alert("🔗 Lien copié !");
  
-// 🔥 ENCODAGE URL OBLIGATOIRE +    }).catch(()=>{
-let url = window.location.origin + window.location.pathname + "?build=" + encodeURIComponent(code);+
  
-navigator.clipboard.writeText(url).catch(()=>+        prompt("Copie ce lien :", url);
-    prompt("Copie ce lien :", url); +
-});+
  
-alert("🔗 Lien copié !");+    });
 } }
  
-// ===== AUTO LOAD URL =====+// ===================================== 
 +// AUTO LOAD URL 
 +// ===================================== 
 (function(){ (function(){
  
-let params = new URLSearchParams(window.location.search); +    try{
-let code = params.get("build");+
  
-if(!codereturn;+        let params = 
 +            new URLSearchParams(window.location.search);
  
-try{ +        let code = params.get("build"); 
-code = decodeURIComponent(code); + 
-importBuild(code); +        if(!code) return
-}catch(e){ + 
-console.log("Erreur chargement URL"); +        let data = decodeBuild(code); 
-}+ 
 +        applyBuild(data); 
 + 
 +        console.log("✅ Build URL chargé"); 
 + 
 +    }catch(e){ 
 + 
 +        console.log("Erreur chargement URL", e); 
 + 
 +    }
  
 })(); })();
brouillon3.1778581144.txt.gz · Dernière modification : 2026/05/12 12:19 de nanaki