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";
|
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,
|
||||||
};
|
};
|
||||||
|
|
@ -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}`);
|
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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}}
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 }}
|
||||||
|
|
|
||||||
|
|
@ -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}}
|
||||||
|
|
|
||||||
|
|
@ -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"}}:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue