From ef111392c202c421346fe72b7ac2d3938a1f1d8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois-Xavier=20Guillois?= Date: Tue, 29 Aug 2023 17:19:11 +0200 Subject: [PATCH] roll dialog box --- css/vermine2047.css | 12 +++- module/sheets/character-sheet.mjs | 12 ++++ module/system/config.mjs | 14 ----- module/system/dialogs.mjs | 29 +++++---- module/system/handlebars-manager.mjs | 8 ++- templates/actor/parts/character-features.hbs | 8 +-- templates/roll.hbs | 63 +++++++++++++------- 7 files changed, 93 insertions(+), 53 deletions(-) diff --git a/css/vermine2047.css b/css/vermine2047.css index 2bfa3ee..e6f53fd 100644 --- a/css/vermine2047.css +++ b/css/vermine2047.css @@ -80,10 +80,20 @@ ul.unstyled li { .system-vermine2047 .dialog .window-content { background: url(/systems/vermine2047/assets/images/ui/fond_chat_box.webp); - padding: 0; + padding: 0.5rem; overflow-y: hidden; } +.window-content .row.smb { + margin-bottom:0.25rem; +} +.window-content .row.mdb { + margin-bottom:0.5rem; +} +.window-content .row.lgb { + margin-bottom:1rem; +} + .actor.sheet form .form { display: grid; /*grid: diff --git a/module/sheets/character-sheet.mjs b/module/sheets/character-sheet.mjs index 759b1ff..6c7befb 100644 --- a/module/sheets/character-sheet.mjs +++ b/module/sheets/character-sheet.mjs @@ -218,14 +218,26 @@ export class VermineCharacterSheet extends VermineActorSheet { // Handle rolls that supply the formula directly. if (dataset.label) { + dataset.rollType = dataset.type; /*const label = game.i18n.localize(dataset.label) ? `[ability] ${game.i18n.localize(dataset.label)}` : ''; console.log($(element).attr('for')); const NoD = this.actor.system.skills[$(element).attr('for').split('.')[2]]?.value || 0 return game.vermine2047.VermineRoll.roll(this.actor.id, label, NoD, 0, {});*/ let data = { actorId: this.actor.id, + abilities: this.actor.system.abilities, + skills: this.actor.system.skills, + rollType: dataset.rollType, + labelKey: dataset.label, + abilityScore: 0, + skillScore: 0, label: game.i18n.localize(dataset.label) }; + if (dataset.type == 'ability'){ + data.abilityScore = this.actor.system.abilities[dataset.label].value; + } else if (dataset.type == 'skill'){ + data.skillScore = this.actor.system.skills[dataset.label].value; + } getRollBox(data); return true; } diff --git a/module/system/config.mjs b/module/system/config.mjs index 7301ab8..595079e 100644 --- a/module/system/config.mjs +++ b/module/system/config.mjs @@ -22,20 +22,6 @@ VERMINE.DifficultyLevels = { 5:{ "label":"DIFFICULTY_LEVELS.impossible", "difficulty":10} }, -VERMINE.Instincts = { - 1:{ "key":"architect"}, - 2:{ "key":"sword"}, - 3:{ "key":"flail"}, - 4:{ "key":"man"}, - 5:{ "key":"keeper"}, - 6:{ "key":"hand"}, - 7:{ "key":"mask"}, - 8:{ "key":"void"}, - 9:{ "key":"bone"}, - 0:{ "key":"traveller"} -} - - VERMINE.abilityCategories = { "physical": { "label":"VERMINE.ability_category.physical" diff --git a/module/system/dialogs.mjs b/module/system/dialogs.mjs index da330c9..e9a6d06 100644 --- a/module/system/dialogs.mjs +++ b/module/system/dialogs.mjs @@ -58,6 +58,7 @@ // difficulty data.difficulty = (formData.difficulty != undefined) ? formData.difficulty : 7; // maîtrise bonus + // TODO : utiliser la configuration des niveaux de compétences plutôt if (formData.skill > 0 && formData.skill < 3){ NoD += 1; } else if (formData.skill > 2 && formData.skill < 5){ @@ -95,17 +96,25 @@ label: game.i18n.localize('Close'), callback: () => { } } - }, + }, render: function (h) { - h.find("#skills-radio input").change(function () { - let s = $(this).attr("data-skill"); - h.find(".trait-list .hidden").removeClass("show"); - let f = h.find(".trait-list ." + s); - f.addClass("show"); - if (f.length == 0) { - h.find(".use-trait input").attr("disabled", "disabled").prop("checked", false); - } else - h.find(".use-trait input").attr("disabled", null); + h.find('select[name="skill"]').change((event) => { + if (data.rollType == 'skill' && event.target.value != undefined){ + const skillScore = data.skills[event.target.value].value; + // on enregistre la valeur de la compétence + h.find('input[name="skillScore"]').val(skillScore); + // on met à jour les infos de niveaux de compétence + const skillLevel = CONFIG.VERMINE.SkillLevels[skillScore]; + if (skillLevel != undefined){ + h.find('#skillLevel').text(game.i18n.localize(skillLevel.label)); + h.find('#skillDicePool').text(skillLevel.dicePool); + h.find('#skillReroll').text(skillLevel.reroll); + } else { + h.find('#skillLevel').text('Inconnu'); + h.find('#skillDicePool').text(0); + h.find('#skillReroll').text(0); + } + } }); } }); diff --git a/module/system/handlebars-manager.mjs b/module/system/handlebars-manager.mjs index a9ab99a..6c191d6 100644 --- a/module/system/handlebars-manager.mjs +++ b/module/system/handlebars-manager.mjs @@ -50,8 +50,12 @@ export const registerHandlebarsHelpers = function () { Handlebars.registerHelper('skillLevel', function (property, level, options) { if (level < 1 || level > 5) return ""; - let levelData = CONFIG.VERMINE.SkillLevels[level]; - return (levelData !== undefined) ? levelData[property] : ""; + let levelData = CONFIG.VERMINE.SkillLevels[level]; + if (property == 'label'){ + return (levelData !== undefined) ? game.i18n.localize(levelData[property]) : ""; + } else { + return (levelData !== undefined) ? levelData[property] : ""; + } }); // return diff level information diff --git a/templates/actor/parts/character-features.hbs b/templates/actor/parts/character-features.hbs index 657bb89..8940c1c 100644 --- a/templates/actor/parts/character-features.hbs +++ b/templates/actor/parts/character-features.hbs @@ -7,8 +7,8 @@ {{#each @root.system.abilities as |ability key|}} {{#if (eq ability.category ackey) }}
- - + +
{{/if}} {{/each}} @@ -24,11 +24,11 @@ {{#if (eq skill.category sckey) }}
-
{{/if}} {{/each}} diff --git a/templates/roll.hbs b/templates/roll.hbs index ed52c88..cefa293 100644 --- a/templates/roll.hbs +++ b/templates/roll.hbs @@ -1,9 +1,17 @@
- + + + +
-
+
+ Type de jet {{#if (eq rollType 'skill')}}{{ localize 'VERMINE.skill_title' }}{{else}}{{ localize 'VERMINE.ability' }}{{/if}} + {{#if (eq rollType 'skill')}}{{ localize 'VERMINE.skill_title' }}{{else}}{{ localize 'VERMINE.ability' }}{{/if}} + {{#if (eq rollType 'skill')}}{{ smarttl "SKILLS" label }}{{else}}{{ smarttl "ABILITIES" label }}{{/if}} +
+
- {{#select difficulty }} @@ -16,37 +24,48 @@ -
- - +
+ +
-
- - + {{#if (eq rollType 'skill')}} +
+ +
-
- - {{localize 'VERMINE.bonus'}} : / {{localize 'VERMINE.reroll'}} : -
-
- +
+ {{#if (ne skillScore 0)}}{{ skillLevel 'label' skillScore }}{{/if}} + {{localize 'VERMINE.bonus'}} : {{#if (ne skillScore 0)}}{{ skillLevel 'dicePool' skillScore }}{{else}}0{{/if}} + {{localize 'VERMINE.reroll'}} : {{#if (ne skillScore 0)}}{{ skillLevel 'reroll' skillScore }}{{else}}0{{/if}} +
+
+
-
- + {{/if}} +
+
-
- +
+
-
+
-
+
- +