Refactor the handlebars helpers to namespace using dd instead of dotdungeon because it's so long

This commit is contained in:
Oliver-Akins 2023-12-30 22:15:23 -07:00
parent d4531f089a
commit 38952c61b4
11 changed files with 52 additions and 39 deletions

View file

@ -5,10 +5,11 @@ import { objectValue } from "./objectValue.mjs";
import { toFriendlyDuration } from "./toFriendlyDuration.mjs"; import { toFriendlyDuration } from "./toFriendlyDuration.mjs";
export default { export default {
"dotdungeon-schemaOptions": schemaOptions, "dd-schemaOptions": schemaOptions,
"dotdungeon-array": createArray, "dd-array": createArray,
"dotdungeon-toFriendlyDuration": toFriendlyDuration, "dd-toFriendlyDuration": toFriendlyDuration,
"dotdungeon-objectValue": objectValue, "dd-objectValue": objectValue,
"dotdungeon-stringify": v => JSON.stringify(v, null, ` `), "dd-expanded": detailsExpanded,
"dotdungeon-expanded": detailsExpanded, "dd-stringify": v => JSON.stringify(v, null, ` `),
"dd-negate": v => !v,
}; };

View file

@ -21,25 +21,42 @@ export class GenericActorSheet extends ActorSheet {
ctx.meta = { ctx.meta = {
expanded: this._expanded, expanded: this._expanded,
idp: this.actor.uuid,
}; };
return ctx; return ctx;
}; };
activateListeners(html) { activateListeners(html) {
super.activateListeners(html);
if (this.document.isEmbedded) return; if (this.document.isEmbedded) return;
if (!this.isEditable) return; if (!this.isEditable) return;
console.debug(`.dungeon | Generic sheet adding listeners`); console.debug(`.dungeon | Generic sheet adding listeners`);
html.find(`.roll`).on(`click`, this._handleRoll); html.find(`summary`).on(`click`, this._handleSummaryToggle.bind(this));
html.find(`summary`).on(`click`, this._handleSummaryToggle); html.find(`.roll`).on(`click`, this._handleRoll.bind(this));
}; };
async _handleRoll($e) {
let data = $e.target.dataset;
if (!data.roll) return;
console.debug(`.dungeon | Attempting to roll with formula "${data.roll}"`);
game.i18n
let roll = new Roll(data.roll);
await roll.evaluate();
await roll.toMessage({
speaker: ChatMessage.getSpeaker({ actor: this.actor }),
});
};
_handleSummaryToggle($e) { _handleSummaryToggle($e) {
let data = $e.target.dataset; let data = $e.target.dataset;
let open = $e.target.parentNode.open; let open = $e.target.parentNode.open;
console.debug(`.dungeon | Collapse ID: ${data.collapseId} (open: ${open})`); console.debug(`.dungeon | Collapse ID: ${data.collapseId} (open: ${open})`);
/* /*
This seeming inversion of logic is due to the fact that this handler This seeming inversion of logic is due to the fact that this handler
gets called before the element is updated to include/reflect the gets called before the element is updated to include/reflect the
@ -51,12 +68,5 @@ export class GenericActorSheet extends ActorSheet {
} else { } else {
this._expanded.delete(data.collapseId); this._expanded.delete(data.collapseId);
}; };
}
_handleRoll($e) {
let data = $e.target.dataset;
if (!data.roll) return;
console.debug(`.dungeon | Attempting to roll ${data.roll}`);
}; };
} };

View file

@ -22,9 +22,6 @@ export class PlayerSheet extends GenericActorSheet {
/* /*
Toggles the expanded state for the detail elements in the sheet. Toggles the expanded state for the detail elements in the sheet.
*/ */
html.find(`summary`).on(`click`, ($e) => {
});
}; };
#syncValue() { #syncValue() {
@ -47,12 +44,12 @@ export class PlayerSheet extends GenericActorSheet {
canChangeGroup: ctx.settings.playersCanChangeGroup || ctx.isGM, canChangeGroup: ctx.settings.playersCanChangeGroup || ctx.isGM,
}; };
ctx.meta.idp = this.actor.uuid;
console.groupCollapsed(`PlayerSheet.getData`); console.groupCollapsed(`PlayerSheet.getData`);
console.log(`ctx`, ctx); console.log(`ctx`, ctx);
console.log(`actor`, actor); console.log(`actor`, actor);
console.groupEnd(); console.groupEnd();
return ctx; return ctx;
}; };
}; };

View file

@ -1,6 +1,6 @@
import { GenericSheet } from "../GenericSheet.mjs"; import { GenericActorSheet } from "../GenericActorSheet.mjs";
export class AbstractSyncSheet extends GenericSheet { export class AbstractSyncSheet extends GenericActorSheet {
static get defaultOptions() { static get defaultOptions() {
let opts = mergeObject( let opts = mergeObject(
super.defaultOptions, super.defaultOptions,

View file

@ -19,7 +19,7 @@
{{localize "dotdungeon.actor.pc.aspect.duration"}} {{localize "dotdungeon.actor.pc.aspect.duration"}}
{{#if system.aspect.deactivateAfter}} {{#if system.aspect.deactivateAfter}}
<span class="friendly-duration aspect__duration--friendly"> <span class="friendly-duration aspect__duration--friendly">
({{dotdungeon-toFriendlyDuration system.aspect.deactivateAfter}}) ({{dd-toFriendlyDuration system.aspect.deactivateAfter}})
</span> </span>
{{/if}} {{/if}}
<input <input

View file

@ -1,5 +1,5 @@
{{#> dotdungeon.panel class="weapons" title="dotdungeon.actor.pc.panel.weapons"}} {{#> dotdungeon.panel class="weapons" title="dotdungeon.actor.pc.panel.weapons"}}
<details class="mainHand" {{dotdungeon-expanded meta.expanded "weapons.mainHand"}}> <details class="mainHand" {{dd-expanded meta.expanded "weapons.mainHand"}}>
<summary data-collapse-id="weapons.mainHand"> <summary data-collapse-id="weapons.mainHand">
{{localize "dotdungeon.actor.pc.weapon.mainHand"}} {{localize "dotdungeon.actor.pc.weapon.mainHand"}}
</summary> </summary>
@ -24,7 +24,7 @@
<select name="system.weapon.mainHand.damage"> <select name="system.weapon.mainHand.damage">
{{#select system.weapon.mainHand.damage}} {{#select system.weapon.mainHand.damage}}
<option value="">Select...</option> <option value="">Select...</option>
{{#each (dotdungeon-array "slashing" "piercing" "smashing" "gun" "neon" "shadow" "solar")}} {{#each (dd-array "slashing" "piercing" "smashing" "gun" "neon" "shadow" "solar")}}
<option value="{{this}}"> <option value="{{this}}">
{{localize (concat "dotdungeon.actor.pc.weapon.damage-type." this)}} {{localize (concat "dotdungeon.actor.pc.weapon.damage-type." this)}}
</option> </option>
@ -69,7 +69,7 @@
{{/if}} {{/if}}
</div> </div>
</details> </details>
<details {{dotdungeon-expanded meta.expanded "weapons.offHand"}}> <details {{dd-expanded meta.expanded "weapons.offHand"}}>
<summary data-collapse-id="weapons.offHand"> <summary data-collapse-id="weapons.offHand">
{{localize "dotdungeon.actor.pc.weapon.offHand"}} {{localize "dotdungeon.actor.pc.weapon.offHand"}}
</summary> </summary>
@ -93,7 +93,7 @@
<select name="system.weapon.offHand.damage"> <select name="system.weapon.offHand.damage">
{{#select system.weapon.offHand.damage}} {{#select system.weapon.offHand.damage}}
<option value="">Select...</option> <option value="">Select...</option>
{{#each (dotdungeon-array "slashing" "piercing" "smashing" "gun" "neon" "shadow" "solar")}} {{#each (dd-array "slashing" "piercing" "smashing" "gun" "neon" "shadow" "solar")}}
<option value="{{this}}"> <option value="{{this}}">
{{localize (concat "dotdungeon.actor.pc.weapon.damage-type." this)}} {{localize (concat "dotdungeon.actor.pc.weapon.damage-type." this)}}
</option> </option>

View file

@ -1,7 +1,7 @@
<select name="{{fieldToUpdate}}"> <select name="{{fieldToUpdate}}">
{{#select selected}} {{#select selected}}
<option value="">---</option> <option value="">---</option>
{{#each (dotdungeon-array "d4" "d6" "d8" "d10" "d12" "d20")}} {{#each (dd-array "d4" "d6" "d8" "d10" "d12" "d20")}}
<option value="{{this}}">{{this}}</option> <option value="{{this}}">{{this}}</option>
{{/each}} {{/each}}
{{/select}} {{/select}}

View file

@ -5,7 +5,7 @@
aria-label="{{localize "dotdungeon.aria.actor.pc.skill.button.roll" skill=name}}" aria-label="{{localize "dotdungeon.aria.actor.pc.skill.button.roll" skill=name}}"
> >
{{localize (concat "dotdungeon.actor.pc.skill." name)}} {{localize (concat "dotdungeon.actor.pc.skill." name)}}
{{#with (dotdungeon-objectValue system (concat "stats." stat)) as | die |}} {{#with (dd-objectValue system (concat "stats." stat)) as | die |}}
{{#if die}} {{#if die}}
({{die}}) ({{die}})
{{/if}} {{/if}}
@ -16,7 +16,7 @@
class="skill__select" class="skill__select"
aria-label="{{localize "dotdungeon.aria.actor.pc.skill.dropdown" skill=name}}" aria-label="{{localize "dotdungeon.aria.actor.pc.skill.dropdown" skill=name}}"
> >
{{#select (dotdungeon-objectValue system (concat "skills." stat "." name))}} {{#select (dd-objectValue system (concat "skills." stat "." name))}}
<option value="">Novice (+0)</option> <option value="">Novice (+0)</option>
<option value="+2">Trained (+2)</option> <option value="+2">Trained (+2)</option>
<option value="+4">Expert (+4)</option> <option value="+4">Expert (+4)</option>
@ -29,7 +29,7 @@
This would be nice to get working at some point, but it's not something This would be nice to get working at some point, but it's not something
that is MVP that is MVP
<img src="icons/dice/{{dotdungeon-objectValue system (concat "system.skills." stat "." name)}}black.svg"> <img src="icons/dice/{{dd-objectValue system (concat "system.skills." stat "." name)}}black.svg">
--}} --}}
Roll Roll
</button> </button>

View file

@ -1,5 +1,10 @@
<label class="stat stat--{{name}}"> <label class="stat stat--{{name}}">
<button class="roll-stat" data-stat="{{name}}"> <button
class="roll"
data-stat="{{name}}"
data-roll-formula="1{{value}}"
{{disabled (dd-negate (dd-objectValue system (concat "stats." name)))}}
>
{{localize (concat "dotdungeon.actor.pc.stat." name)}} {{localize (concat "dotdungeon.actor.pc.stat." name)}}
</button> </button>
{{> dotdungeon.dice_choice fieldToUpdate=(concat "system.stats." name) selected=value }} {{> dotdungeon.dice_choice fieldToUpdate=(concat "system.stats." name) selected=value }}

View file

@ -4,7 +4,7 @@
{{#> dotdungeon.panel class="stats" title="dotdungeon.actor.pc.panel.statistics"}} {{#> dotdungeon.panel class="stats" title="dotdungeon.actor.pc.panel.statistics"}}
{{#each system.stats }} {{#each system.stats }}
{{> dotdungeon.stat name=@key value=this}} {{> dotdungeon.stat system=../system name=@key value=this}}
{{/each}} {{/each}}
{{/ dotdungeon.panel}} {{/ dotdungeon.panel}}
@ -43,21 +43,21 @@
<div class="debug-data" style="grid-column: 1 / span 3"> <div class="debug-data" style="grid-column: 1 / span 3">
<div> <div>
Settings: Settings:
<pre><code>{{dotdungeon-stringify settings}}</code></pre> <pre><code>{{dd-stringify settings}}</code></pre>
</div> </div>
<div> <div>
Meta: Meta:
<pre><code>{{dotdungeon-stringify meta}}</code></pre> <pre><code>{{dd-stringify meta}}</code></pre>
</div> </div>
<hr> <hr>
<div> <div>
System: System:
<pre><code>{{dotdungeon-stringify system}}</code></pre> <pre><code>{{dd-stringify system}}</code></pre>
</div> </div>
<hr> <hr>
<div> <div>
Actor: Actor:
<pre><code>{{dotdungeon-stringify actor}}</code></pre> <pre><code>{{dd-stringify actor}}</code></pre>
</div> </div>
</div> </div>
{{/if}} {{/if}}

View file

@ -15,7 +15,7 @@
name="system.deactivateAfter" name="system.deactivateAfter"
value="{{system.deactivateAfter}}" value="{{system.deactivateAfter}}"
> >
{{dotdungeon-toFriendlyDuration system.deactivateAfter}} {{dd-toFriendlyDuration system.deactivateAfter}}
</label> </label>
<label> <label>
{{localize "dotdungeon.item.aspect.description"}}: {{localize "dotdungeon.item.aspect.description"}}: