diff --git a/RdD.geany b/RdD.geany index f92d893d..3e22e4ea 100644 --- a/RdD.geany +++ b/RdD.geany @@ -27,17 +27,18 @@ long_line_behaviour=1 long_line_column=72 [files] -current_page=6 -FILE_NAME_0=8094;JSON;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplate.json;0;2 -FILE_NAME_1=0;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Factor-sheet.js;0;2 -FILE_NAME_2=4774;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Factor-sheet.html;0;2 -FILE_NAME_3=13265;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Frdd-utility.js;0;2 -FILE_NAME_4=985;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Fsimple.js;0;2 -FILE_NAME_5=6984;CSS;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fstyles%2Fsimple.css;0;2 -FILE_NAME_6=8465;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Factor.js;0;2 -FILE_NAME_7=1134;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2FWFRP-4th-Edition-FoundryVTT_SLADECRAVEN%2Ftemplates%2Factors%2Factor-skills.html;0;2 -FILE_NAME_8=7542;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2FWFRP-4th-Edition-FoundryVTT_SLADECRAVEN%2Fscripts%2Factor%2Fsheet%2Fcharacter-sheet.js;0;2 -FILE_NAME_9=956;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Fdialog-competence.html;0;2 +current_page=10 +FILE_NAME_0=8019;JSON;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplate.json;0;2 +FILE_NAME_1=2995;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Factor-sheet.js;0;2 +FILE_NAME_2=9441;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Factor-sheet.html;0;2 +FILE_NAME_3=6869;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Factor.js;0;2 +FILE_NAME_4=6424;CSS;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fstyles%2Fsimple.css;0;2 +FILE_NAME_5=4430;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Frdd-utility.js;0;2 +FILE_NAME_6=1134;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2FWFRP-4th-Edition-FoundryVTT_SLADECRAVEN%2Ftemplates%2Factors%2Factor-skills.html;0;2 +FILE_NAME_7=7542;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2FWFRP-4th-Edition-FoundryVTT_SLADECRAVEN%2Fscripts%2Factor%2Fsheet%2Fcharacter-sheet.js;0;2 +FILE_NAME_8=705;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Fdialog-competence.html;0;2 +FILE_NAME_9=985;Javascript;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Fmodule%2Fsimple.js;0;2 +FILE_NAME_10=795;HTML;0;EUTF-8;0;1;0;%2Fhome%2Fsigmar%2Fwork%2Ffoundryvtt%2Ffoundryvtt-reve-de-dragon%2Ftemplates%2Fitem-arme-sheet.html;0;2 [VTE] last_dir=/home/sigmar diff --git a/module/actor.js b/module/actor.js index 5d41b4bc..830953be 100644 --- a/module/actor.js +++ b/module/actor.js @@ -4,6 +4,7 @@ */ import { RdDUtility } from "./rdd-utility.js"; +import { RdDRollDialog } from "./rdd-roll-dialog.js"; export class RdDActor extends Actor { @@ -40,6 +41,7 @@ export class RdDActor extends Actor { if (actorData.type === 'personnage') this._prepareCharacterData(actorData); } + /* -------------------------------------------- */ /** * Prepare Character type specific data */ @@ -178,97 +180,26 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ rollArme( armeName ) { - // TODO : Search the weapon in the items - - // TODO : Get the associated compentence - - // TODO call rollCompetence with the comp+arme - + let armeItem = RdDUtility.findCompetence( this.data.items, armeName); + this.rollCompetence( armeItem.data.competence, armeItem ); } /* -------------------------------------------- */ - async rollCompetence( compName, arme ) { + async rollCompetence( compName, armeItem ) { let compItem = RdDUtility.findCompetence( this.data.items, compName); let rollData = { "competence": compItem, + "arme": armeItem, "carac": this.data.data.carac, "bonusmalusTable": CONFIG.RDD.bonusmalus, "etat": this.data.data.compteurs.etat.value, "bmValue": 0, - "arme": arme, "finalLevel": 0 } - let dlg = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-competence.html', rollData); - let mydialog = new Dialog( - { - title: "Test de compétence", - content: dlg, - buttons: - { - rollButton: - { - label: "Lancer", - callback: html => this.performRoll(html) - } - }, - default: "rollButton" - }, { - classes: ["rdddialog"], - width: 600, - height: 360 - } ); - - mydialog.data.rollData = rollData; - mydialog.data.actor = this; - mydialog.activateListeners = function(html) { - // Get the rollData stuff - var rollData = this.data.rollData; - - function updateRollResult( rollData ) { - rollData.finalLevel = parseInt(rollData.competence.data.niveau) + parseInt(rollData.bmValue) + parseInt(rollData.etat); - rollData.finalLevelStr = (rollData.finalLevel >= 0 ) ? "+" + rollData.finalLevel : rollData.finalLevel; - $("#roll-param").text( rollData.selectedCarac.value + " / " + rollData.finalLevelStr ); - rollData.rollTarget = game.data.RdDUtility.getResolutionField( rollData.selectedCarac.value, rollData.finalLevel); - let niveauStr = (rollData.competence.data.niveau >= 0) ? "+" + rollData.competence.data.niveau : rollData.competence.data.niveau; - $("#compdialogTitle").text( rollData.competence.name + " - " + niveauStr + " - " + rollData.selectedCarac.label ); - $(".table-resolution").remove(); - game.data.RdDUtility.makeHTMLResolutionTable( $("#resolutionTable"), rollData.selectedCarac.value-2, parseInt(rollData.selectedCarac.value) + 2, -10, 11, - rollData.selectedCarac.value, rollData.finalLevel ); - } - - // Setup everything onload - $(function() { - // Set the default carac from the competence item - rollData.selectedCarac = rollData.carac[rollData.competence.data.carac_defaut]; - // Update html, according to data - $("#carac").val( rollData.competence.data.carac_defaut ); - $("#bonusmalus").val( rollData.bmValue ); - updateRollResult(rollData); - }); - - - // Replace again the button action, as i overwritten it - $('button').click((event) => { - mydialog.data.actor.performRoll(rollData); - }); - - // Update ! - $('#bonusmalus').click((event) => { - rollData.bmValue = event.currentTarget.value; // Update the selected bonus/malus - //console.log("BM CLICKED !!!", rollData.bmValue, rollData.competence.data.niveau, parseInt(rollData.competence.data.niveau) + parseInt(rollData.bmValue) ); - updateRollResult(rollData); - }); - $('#carac').click((event) => { - let caracKey = event.currentTarget.value; - rollData.selectedCarac = rollData.carac[caracKey]; // Update the selectedCarac - //console.log("CARAC CLICKED !!!", rollData.selectedCarac, rollData.competence.data.niveau, rollData.bmValue); - updateRollResult(rollData); - }); - } - - mydialog.render(true); + let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-competence.html', rollData); + new RdDRollDialog("competence", html, rollData, this ).render(true); } /* -------------------------------------------- */ diff --git a/module/rdd-roll-dialog.js b/module/rdd-roll-dialog.js new file mode 100644 index 00000000..d52411ba --- /dev/null +++ b/module/rdd-roll-dialog.js @@ -0,0 +1,93 @@ +/** + * Extend the base Dialog entity by defining a custom window to perform roll. + * @extends {Dialog} + */ + +export class RdDRollDialog extends Dialog { + + /* -------------------------------------------- */ + constructor(mode, html, rollData, actor) { + + // Common conf + let dialogConf = { + content: html, + buttons: + { + rollButton: + { + label: "Lancer", + callback: html => this.performRoll(html) + } + }, + default: "rollButton" + } + let dialogOptions = { classes: [ "rdddialog"] } + + // Select proper roll dialog template and stuff + if (mode == "competence" ) { + dialogConf.title = "Test de compétence", + dialogOptions.width = 600; + dialogOptions.height = 360; + } + super(dialogConf, dialogOptions); + + this.mode = mode; + this.rollData = rollData; + this.actor = actor; + } + + /* -------------------------------------------- */ + performRoll (html) { + this.actor.performRoll( this.rollData ); + } + + /* -------------------------------------------- */ + + activateListeners(html) { + super.activateListeners(html); + + // Get the rollData stuff + var rollData = this.rollData; + + function updateRollResult( rollData ) { + rollData.finalLevel = parseInt(rollData.competence.data.niveau) + parseInt(rollData.bmValue) + parseInt(rollData.etat); + rollData.finalLevelStr = (rollData.finalLevel >= 0 ) ? "+" + rollData.finalLevel : rollData.finalLevel; + $("#roll-param").text( rollData.selectedCarac.value + " / " + rollData.finalLevelStr ); + rollData.rollTarget = game.data.RdDUtility.getResolutionField( rollData.selectedCarac.value, rollData.finalLevel); + let niveauStr = (rollData.competence.data.niveau >= 0) ? "+" + rollData.competence.data.niveau : rollData.competence.data.niveau; + $("#compdialogTitle").text( rollData.competence.name + " - " + niveauStr + " - " + rollData.selectedCarac.label ); + $(".table-resolution").remove(); + game.data.RdDUtility.makeHTMLResolutionTable( $("#resolutionTable"), rollData.selectedCarac.value-2, parseInt(rollData.selectedCarac.value) + 2, -10, 11, + rollData.selectedCarac.value, rollData.finalLevel ); + } + + // Setup everything onload + $(function() { + // Set the default carac from the competence item + rollData.selectedCarac = rollData.carac[rollData.competence.data.carac_defaut]; + // Update html, according to data + $("#carac").val( rollData.competence.data.carac_defaut ); + $("#bonusmalus").val( rollData.bmValue ); + updateRollResult(rollData); + }); + + // Replace again the button action, as i overwritten it + //$('button').click((event) => { + //mydialog.data.actor.performRoll(rollData); + //}); + + // Update ! + $('#bonusmalus').click((event) => { + rollData.bmValue = event.currentTarget.value; // Update the selected bonus/malus + //console.log("BM CLICKED !!!", rollData.bmValue, rollData.competence.data.niveau, parseInt(rollData.competence.data.niveau) + parseInt(rollData.bmValue) ); + updateRollResult(rollData); + }); + $('#carac').click((event) => { + let caracKey = event.currentTarget.value; + rollData.selectedCarac = rollData.carac[caracKey]; // Update the selectedCarac + //console.log("CARAC CLICKED !!!", rollData.selectedCarac, rollData.competence.data.niveau, rollData.bmValue); + updateRollResult(rollData); + }); + } + +} diff --git a/template.json b/template.json index 36bc4e85..ee2c0c33 100644 --- a/template.json +++ b/template.json @@ -303,7 +303,7 @@ "dommages": 0, "force": 0, "resistance": 0, - "famille": "", + "competence": "", "cout": 0 }, "munition": { diff --git a/templates/arme-competence.html b/templates/arme-competence.html new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/templates/arme-competence.html @@ -0,0 +1 @@ + diff --git a/templates/item-arme-sheet.html b/templates/item-arme-sheet.html new file mode 100644 index 00000000..3436fb3f --- /dev/null +++ b/templates/item-arme-sheet.html @@ -0,0 +1,49 @@ +
+
+ +
+

+
+
+ + {{!-- Sheet Body --}} +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ Description : +
+
+ {{editor content=data.description target="data.description" button=true owner=owner editable=editable}} +
+
+ +