Refactor the handlebars helpers to namespace using dd instead of dotdungeon because it's so long
This commit is contained in:
parent
d4531f089a
commit
38952c61b4
11 changed files with 52 additions and 39 deletions
|
|
@ -5,10 +5,11 @@ import { objectValue } from "./objectValue.mjs";
|
|||
import { toFriendlyDuration } from "./toFriendlyDuration.mjs";
|
||||
|
||||
export default {
|
||||
"dotdungeon-schemaOptions": schemaOptions,
|
||||
"dotdungeon-array": createArray,
|
||||
"dotdungeon-toFriendlyDuration": toFriendlyDuration,
|
||||
"dotdungeon-objectValue": objectValue,
|
||||
"dotdungeon-stringify": v => JSON.stringify(v, null, ` `),
|
||||
"dotdungeon-expanded": detailsExpanded,
|
||||
"dd-schemaOptions": schemaOptions,
|
||||
"dd-array": createArray,
|
||||
"dd-toFriendlyDuration": toFriendlyDuration,
|
||||
"dd-objectValue": objectValue,
|
||||
"dd-expanded": detailsExpanded,
|
||||
"dd-stringify": v => JSON.stringify(v, null, ` `),
|
||||
"dd-negate": v => !v,
|
||||
};
|
||||
|
|
@ -21,25 +21,42 @@ export class GenericActorSheet extends ActorSheet {
|
|||
|
||||
ctx.meta = {
|
||||
expanded: this._expanded,
|
||||
idp: this.actor.uuid,
|
||||
};
|
||||
|
||||
return ctx;
|
||||
};
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
if (this.document.isEmbedded) return;
|
||||
if (!this.isEditable) return;
|
||||
console.debug(`.dungeon | Generic sheet adding listeners`);
|
||||
|
||||
html.find(`.roll`).on(`click`, this._handleRoll);
|
||||
html.find(`summary`).on(`click`, this._handleSummaryToggle);
|
||||
html.find(`summary`).on(`click`, this._handleSummaryToggle.bind(this));
|
||||
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) {
|
||||
let data = $e.target.dataset;
|
||||
let open = $e.target.parentNode.open;
|
||||
console.debug(`.dungeon | Collapse ID: ${data.collapseId} (open: ${open})`);
|
||||
|
||||
/*
|
||||
This seeming inversion of logic is due to the fact that this handler
|
||||
gets called before the element is updated to include/reflect the
|
||||
|
|
@ -51,12 +68,5 @@ export class GenericActorSheet extends ActorSheet {
|
|||
} else {
|
||||
this._expanded.delete(data.collapseId);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
_handleRoll($e) {
|
||||
let data = $e.target.dataset;
|
||||
if (!data.roll) return;
|
||||
console.debug(`.dungeon | Attempting to roll ${data.roll}`);
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
@ -22,9 +22,6 @@ export class PlayerSheet extends GenericActorSheet {
|
|||
/*
|
||||
Toggles the expanded state for the detail elements in the sheet.
|
||||
*/
|
||||
html.find(`summary`).on(`click`, ($e) => {
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
#syncValue() {
|
||||
|
|
@ -47,12 +44,12 @@ export class PlayerSheet extends GenericActorSheet {
|
|||
canChangeGroup: ctx.settings.playersCanChangeGroup || ctx.isGM,
|
||||
};
|
||||
|
||||
ctx.meta.idp = this.actor.uuid;
|
||||
|
||||
console.groupCollapsed(`PlayerSheet.getData`);
|
||||
console.log(`ctx`, ctx);
|
||||
console.log(`actor`, actor);
|
||||
console.groupEnd();
|
||||
return ctx;
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
|
|
@ -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() {
|
||||
let opts = mergeObject(
|
||||
super.defaultOptions,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
{{localize "dotdungeon.actor.pc.aspect.duration"}}
|
||||
{{#if system.aspect.deactivateAfter}}
|
||||
<span class="friendly-duration aspect__duration--friendly">
|
||||
({{dotdungeon-toFriendlyDuration system.aspect.deactivateAfter}})
|
||||
({{dd-toFriendlyDuration system.aspect.deactivateAfter}})
|
||||
</span>
|
||||
{{/if}}
|
||||
<input
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{{#> 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">
|
||||
{{localize "dotdungeon.actor.pc.weapon.mainHand"}}
|
||||
</summary>
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
<select name="system.weapon.mainHand.damage">
|
||||
{{#select system.weapon.mainHand.damage}}
|
||||
<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}}">
|
||||
{{localize (concat "dotdungeon.actor.pc.weapon.damage-type." this)}}
|
||||
</option>
|
||||
|
|
@ -69,7 +69,7 @@
|
|||
{{/if}}
|
||||
</div>
|
||||
</details>
|
||||
<details {{dotdungeon-expanded meta.expanded "weapons.offHand"}}>
|
||||
<details {{dd-expanded meta.expanded "weapons.offHand"}}>
|
||||
<summary data-collapse-id="weapons.offHand">
|
||||
{{localize "dotdungeon.actor.pc.weapon.offHand"}}
|
||||
</summary>
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
<select name="system.weapon.offHand.damage">
|
||||
{{#select system.weapon.offHand.damage}}
|
||||
<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}}">
|
||||
{{localize (concat "dotdungeon.actor.pc.weapon.damage-type." this)}}
|
||||
</option>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<select name="{{fieldToUpdate}}">
|
||||
{{#select selected}}
|
||||
<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>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
aria-label="{{localize "dotdungeon.aria.actor.pc.skill.button.roll" 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}}
|
||||
({{die}})
|
||||
{{/if}}
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
class="skill__select"
|
||||
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="+2">Trained (+2)</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
|
||||
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
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
<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)}}
|
||||
</button>
|
||||
{{> dotdungeon.dice_choice fieldToUpdate=(concat "system.stats." name) selected=value }}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
{{#> dotdungeon.panel class="stats" title="dotdungeon.actor.pc.panel.statistics"}}
|
||||
{{#each system.stats }}
|
||||
{{> dotdungeon.stat name=@key value=this}}
|
||||
{{> dotdungeon.stat system=../system name=@key value=this}}
|
||||
{{/each}}
|
||||
{{/ dotdungeon.panel}}
|
||||
|
||||
|
|
@ -43,21 +43,21 @@
|
|||
<div class="debug-data" style="grid-column: 1 / span 3">
|
||||
<div>
|
||||
Settings:
|
||||
<pre><code>{{dotdungeon-stringify settings}}</code></pre>
|
||||
<pre><code>{{dd-stringify settings}}</code></pre>
|
||||
</div>
|
||||
<div>
|
||||
Meta:
|
||||
<pre><code>{{dotdungeon-stringify meta}}</code></pre>
|
||||
<pre><code>{{dd-stringify meta}}</code></pre>
|
||||
</div>
|
||||
<hr>
|
||||
<div>
|
||||
System:
|
||||
<pre><code>{{dotdungeon-stringify system}}</code></pre>
|
||||
<pre><code>{{dd-stringify system}}</code></pre>
|
||||
</div>
|
||||
<hr>
|
||||
<div>
|
||||
Actor:
|
||||
<pre><code>{{dotdungeon-stringify actor}}</code></pre>
|
||||
<pre><code>{{dd-stringify actor}}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
name="system.deactivateAfter"
|
||||
value="{{system.deactivateAfter}}"
|
||||
>
|
||||
{{dotdungeon-toFriendlyDuration system.deactivateAfter}}
|
||||
{{dd-toFriendlyDuration system.deactivateAfter}}
|
||||
</label>
|
||||
<label>
|
||||
{{localize "dotdungeon.item.aspect.description"}}:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue