Table de resolution
commande: /table rdd
This commit is contained in:
parent
a0f878add7
commit
464a409eda
125
module/rdd-roll-resolution.js
Normal file
125
module/rdd-roll-resolution.js
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
import { ChatUtility } from "./chat-utility.js";
|
||||||
|
import { Misc } from "./misc.js";
|
||||||
|
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extend the base Dialog entity to select roll parameters
|
||||||
|
* @extends {Dialog}
|
||||||
|
*/
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
export class RdDRollResolution extends Dialog {
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static async open() {
|
||||||
|
let rollData = RdDRollResolution._prepareDefaultOptions();
|
||||||
|
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-roll-resolution.html', rollData);
|
||||||
|
const dialog = new RdDRollResolution(rollData, html);
|
||||||
|
dialog.render(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static _prepareDefaultOptions() {
|
||||||
|
let rollData = {
|
||||||
|
ajustementsConditions: CONFIG.RDD.ajustementsConditions,
|
||||||
|
difficultesLibres: CONFIG.RDD.difficultesLibres,
|
||||||
|
etat: 0,
|
||||||
|
moral: 0,
|
||||||
|
carac: {},
|
||||||
|
finalLevel: 0,
|
||||||
|
diffConditions: 0,
|
||||||
|
diffLibre: 0
|
||||||
|
}
|
||||||
|
for (let i = 1; i < 21; i++) {
|
||||||
|
rollData.carac[i] = { type: "number", value: i, label: i }
|
||||||
|
}
|
||||||
|
rollData.selectedCarac = rollData.carac[10];
|
||||||
|
return rollData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
constructor(rollData, html) {
|
||||||
|
|
||||||
|
let conf = {
|
||||||
|
title: 'Lancer les dés',
|
||||||
|
content: html,
|
||||||
|
buttons: {
|
||||||
|
'lancer': { label: 'Lancer les dés', callback: html => this.onAction(html) }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
super(conf, { classes: ["rdddialog"], width: 800, height: 800, 'z-index': 99999 });
|
||||||
|
|
||||||
|
this.rollData = rollData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
async onAction(html) {
|
||||||
|
await RdDResolutionTable.rollData(this.rollData);
|
||||||
|
console.log("RdDRollResolution -=>", this.rollData, this.rollData.rolled);
|
||||||
|
const message = {
|
||||||
|
content: "Table de résolution: " + RdDResolutionTable.explainRollData(this.rollData)
|
||||||
|
};
|
||||||
|
ChatUtility.chatWithRollMode(message, game.user.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
activateListeners(html) {
|
||||||
|
super.activateListeners(html);
|
||||||
|
|
||||||
|
this.bringToTop();
|
||||||
|
|
||||||
|
var rollData = this.rollData;
|
||||||
|
var dialog = this;
|
||||||
|
|
||||||
|
function updateRollResult(rollData) {
|
||||||
|
rollData.caracValue = parseInt(rollData.selectedCarac.value)
|
||||||
|
rollData.finalLevel = dialog._computeFinalLevel(rollData);
|
||||||
|
|
||||||
|
// Mise à jour valeurs
|
||||||
|
$("#carac").val(rollData.caracValue);
|
||||||
|
$("#roll-param").text(rollData.selectedCarac.value + " / " + Misc.toSignedString(rollData.finalLevel));
|
||||||
|
$(".table-resolution").remove();
|
||||||
|
$("#resolutionTable").append(RdDResolutionTable.buildHTMLTable(rollData.caracValue, rollData.finalLevel, 1, 20, -10, 10));
|
||||||
|
$(".span-valeur").remove();
|
||||||
|
$("#resolutionValeurs").append(RdDResolutionTable.buildHTMLResults(rollData.caracValue, rollData.finalLevel));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup everything onload
|
||||||
|
$(function () {
|
||||||
|
$("#diffLibre").val(Misc.toInt(rollData.diffLibre));
|
||||||
|
$("#diffConditions").val(Misc.toInt(rollData.diffConditions));
|
||||||
|
updateRollResult(rollData);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Update !
|
||||||
|
html.find('#diffLibre').change((event) => {
|
||||||
|
rollData.diffLibre = Misc.toInt(event.currentTarget.value);
|
||||||
|
updateRollResult(rollData);
|
||||||
|
});
|
||||||
|
html.find('#diffConditions').change((event) => {
|
||||||
|
rollData.diffConditions = Misc.toInt(event.currentTarget.value);
|
||||||
|
updateRollResult(rollData);
|
||||||
|
});
|
||||||
|
html.find('#carac').change((event) => {
|
||||||
|
let caracKey = event.currentTarget.value;
|
||||||
|
this.rollData.selectedCarac = rollData.carac[caracKey];
|
||||||
|
updateRollResult(rollData);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
_computeFinalLevel(rollData) {
|
||||||
|
const diffConditions = Misc.toInt(rollData.diffConditions);
|
||||||
|
const diffLibre = this._computeDiffLibre(rollData);
|
||||||
|
|
||||||
|
return diffLibre + diffConditions;
|
||||||
|
}
|
||||||
|
|
||||||
|
_computeDiffLibre(rollData) {
|
||||||
|
return Misc.toInt(rollData.diffLibre);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
_getTitle(rollData) {
|
||||||
|
return 'Table de résolution';
|
||||||
|
}
|
||||||
|
}
|
@ -5,6 +5,7 @@ import { RdDRollTables } from "./rdd-rolltables.js";
|
|||||||
import { ChatUtility } from "./chat-utility.js";
|
import { ChatUtility } from "./chat-utility.js";
|
||||||
import { RdDItemCompetence } from "./item-competence.js";
|
import { RdDItemCompetence } from "./item-competence.js";
|
||||||
import { RdDCombat } from "./rdd-combat.js";
|
import { RdDCombat } from "./rdd-combat.js";
|
||||||
|
import { RdDRollResolution } from "./rdd-roll-resolution.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
const level_category = {
|
const level_category = {
|
||||||
@ -91,9 +92,10 @@ const fatigueMarche = { "aise": { "4":1, "6":2, "8":3, "10":4, "12":6 },
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/* Static tables for commands /table */
|
/* Static tables for commands /table */
|
||||||
const table2func = { "queues": {descr: "queues : Tire une queue de Dragon", func: RdDRollTables.getQueue},
|
const table2func = { "rdd": { descr: "rdd: Ouvre la table de résolution", func: RdDRollResolution.open },
|
||||||
|
"queues": { descr: "queues: Tire une queue de Dragon", func: RdDRollTables.getQueue},
|
||||||
"ombre": { descr: "ombre: Tire une Ombre de Dragon", func: RdDRollTables.getOmbre },
|
"ombre": { descr: "ombre: Tire une Ombre de Dragon", func: RdDRollTables.getOmbre },
|
||||||
"tetehr": {descr: "tetehr: Tire une Tête de Dragon pour Hauts Revants", fund: RdDRollTables.getTeteHR},
|
"tetehr": { descr: "tetehr: Tire une Tête de Dragon pour Hauts Revants", fund: RdDRollTables.getTeteHR},
|
||||||
"tete" : { descr: "tete: Tire une Tête de Dragon", func: RdDRollTables.getTete},
|
"tete" : { descr: "tete: Tire une Tête de Dragon", func: RdDRollTables.getTete},
|
||||||
"souffle": { descr: "souffle: Tire un Souffle de Dragon", func: RdDRollTables.getSouffle},
|
"souffle": { descr: "souffle: Tire un Souffle de Dragon", func: RdDRollTables.getSouffle},
|
||||||
"tarot" : { descr: "tarot: Tire une carte de Tarot Dracnique", func: RdDRollTables.getTarot} };
|
"tarot" : { descr: "tarot: Tire une carte de Tarot Dracnique", func: RdDRollTables.getTarot} };
|
||||||
@ -173,6 +175,7 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/sort-tmr.html',
|
'systems/foundryvtt-reve-de-dragon/templates/sort-tmr.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/niveau-ethylisme.html',
|
'systems/foundryvtt-reve-de-dragon/templates/niveau-ethylisme.html',
|
||||||
// Dialogs
|
// Dialogs
|
||||||
|
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-resolution.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/dialog-competence.html',
|
'systems/foundryvtt-reve-de-dragon/templates/dialog-competence.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-carac.html',
|
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-carac.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-sort.html',
|
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-sort.html',
|
||||||
|
36
templates/dialog-roll-resolution.html
Normal file
36
templates/dialog-roll-resolution.html
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<form class="resolution-roll-dialog">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="categorie">Caractéristique </label>
|
||||||
|
<select name="carac" id="carac" data-dtype="String">
|
||||||
|
{{#select carac}}
|
||||||
|
{{#each carac as |caracitem key|}}
|
||||||
|
<option value={{key}}>{{caracitem.label}}</option>
|
||||||
|
{{/each}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
<label></label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="categorie">Difficulté libre</label>
|
||||||
|
<select name="diffLibre" id="diffLibre" data-dtype="number">
|
||||||
|
{{#select diffLibre}}
|
||||||
|
{{#each difficultesLibres as |key|}}
|
||||||
|
<option value={{key}}>{{numberFormat key decimals=0 sign=true}}</option>
|
||||||
|
{{/each}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
<label for="categorie"> Conditions</label>
|
||||||
|
<select name="diffConditions" id="diffConditions" data-dtype="number">
|
||||||
|
{{#select diffConditions}}
|
||||||
|
{{#each ajustementsConditions as |key|}}
|
||||||
|
<option value={{key}}>{{numberFormat key decimals=0 sign=true}}</option>
|
||||||
|
{{/each}}
|
||||||
|
{{/select}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div id="resolutionTable">
|
||||||
|
</div>
|
||||||
|
<div id="resolutionValeurs">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
Loading…
Reference in New Issue
Block a user