mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-12 03:31:07 +01:00
Set command codeblock to expandable
This commit is contained in:
parent
5c3a2cf060
commit
958dd8b1d0
7 changed files with 58 additions and 17 deletions
|
|
@ -1226,7 +1226,10 @@
|
||||||
},
|
},
|
||||||
"fearRoll": {
|
"fearRoll": {
|
||||||
"label": "Fear Roll",
|
"label": "Fear Roll",
|
||||||
"hint": "this: Action\nroll: DhRoll\nactor: DhActor"
|
"hint": "this: Action, roll: DhRoll, actor: DhActor"
|
||||||
|
},
|
||||||
|
"triggerTexts": {
|
||||||
|
"strangePatternsContent": "Increase Hope or clear stress?"
|
||||||
},
|
},
|
||||||
"triggerError": "{trigger} trigger failed for {actor}. It's probably configured wrong."
|
"triggerError": "{trigger} trigger failed for {actor}. It's probably configured wrong."
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2)
|
||||||
|
|
||||||
this.action = action;
|
this.action = action;
|
||||||
this.openSection = null;
|
this.openSection = null;
|
||||||
|
this.openTrigger = this.action.triggers.length > 0 ? 0 : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
get title() {
|
get title() {
|
||||||
|
|
@ -31,7 +32,8 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2)
|
||||||
addDamage: this.addDamage,
|
addDamage: this.addDamage,
|
||||||
removeDamage: this.removeDamage,
|
removeDamage: this.removeDamage,
|
||||||
addTrigger: this.addTrigger,
|
addTrigger: this.addTrigger,
|
||||||
removeTrigger: this.removeTrigger
|
removeTrigger: this.removeTrigger,
|
||||||
|
expandTrigger: this.expandTrigger
|
||||||
},
|
},
|
||||||
form: {
|
form: {
|
||||||
handler: this.updateForm,
|
handler: this.updateForm,
|
||||||
|
|
@ -126,9 +128,10 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2)
|
||||||
context.baseAttackBonus = this.action.actor?.system.attack?.roll.bonus;
|
context.baseAttackBonus = this.action.actor?.system.attack?.roll.bonus;
|
||||||
context.hasRoll = this.action.hasRoll;
|
context.hasRoll = this.action.hasRoll;
|
||||||
context.triggerOptions = CONFIG.DH.TRIGGER.triggers;
|
context.triggerOptions = CONFIG.DH.TRIGGER.triggers;
|
||||||
context.triggers = context.source.triggers.map(trigger => ({
|
context.triggers = context.source.triggers.map((trigger, index) => ({
|
||||||
...trigger,
|
...trigger,
|
||||||
hint: CONFIG.DH.TRIGGER.triggers[trigger.trigger].hint
|
hint: CONFIG.DH.TRIGGER.triggers[trigger.trigger].hint,
|
||||||
|
revealed: this.openTrigger === index
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const settingsTiers = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LevelTiers).tiers;
|
const settingsTiers = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LevelTiers).tiers;
|
||||||
|
|
@ -245,7 +248,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2)
|
||||||
|
|
||||||
static addTrigger() {
|
static addTrigger() {
|
||||||
const data = this.action.toObject();
|
const data = this.action.toObject();
|
||||||
data.triggers.push({ hook: CONFIG.DH.TRIGGER.triggers.dualityRoll.id });
|
data.triggers.push({ trigger: CONFIG.DH.TRIGGER.triggers.dualityRoll.id });
|
||||||
this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) });
|
this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -267,6 +270,33 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2)
|
||||||
this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) });
|
this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async expandTrigger(_event, button) {
|
||||||
|
const index = Number.parseInt(button.dataset.index);
|
||||||
|
const toggle = (element, codeMirror) => {
|
||||||
|
codeMirror.classList.toggle('revealed');
|
||||||
|
const button = element.querySelector('a > i');
|
||||||
|
button.classList.toggle('fa-angle-up');
|
||||||
|
button.classList.toggle('fa-angle-down');
|
||||||
|
};
|
||||||
|
|
||||||
|
const fieldset = button.closest('fieldset');
|
||||||
|
const codeMirror = fieldset.querySelector('.code-mirror-wrapper');
|
||||||
|
toggle(fieldset, codeMirror);
|
||||||
|
|
||||||
|
if (this.openTrigger !== null && this.openTrigger !== index) {
|
||||||
|
const previouslyExpanded = fieldset
|
||||||
|
.closest(`section`)
|
||||||
|
.querySelector(`fieldset[data-index="${this.openTrigger}"]`);
|
||||||
|
const codeMirror = previouslyExpanded.querySelector('.code-mirror-wrapper');
|
||||||
|
toggle(previouslyExpanded, codeMirror);
|
||||||
|
this.openTrigger = index;
|
||||||
|
} else if (this.openTrigger === index) {
|
||||||
|
this.openTrigger = null;
|
||||||
|
} else {
|
||||||
|
this.openTrigger = index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Specific implementation in extending classes **/
|
/** Specific implementation in extending classes **/
|
||||||
static async addEffect(_event) {}
|
static async addEffect(_event) {}
|
||||||
static removeEffect(_event, _button) {}
|
static removeEffect(_event, _button) {}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ export default class TriggerField extends foundry.data.fields.SchemaField {
|
||||||
{
|
{
|
||||||
trigger: new foundry.data.fields.StringField({
|
trigger: new foundry.data.fields.StringField({
|
||||||
nullable: false,
|
nullable: false,
|
||||||
|
blank: false,
|
||||||
initial: CONFIG.DH.TRIGGER.triggers.dualityRoll.id,
|
initial: CONFIG.DH.TRIGGER.triggers.dualityRoll.id,
|
||||||
choices: CONFIG.DH.TRIGGER.triggers
|
choices: CONFIG.DH.TRIGGER.triggers
|
||||||
}),
|
}),
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@
|
||||||
"triggers": [
|
"triggers": [
|
||||||
{
|
{
|
||||||
"trigger": "dualityRoll",
|
"trigger": "dualityRoll",
|
||||||
"command": "/* Check if there's a Strange Pattern match */\nconst dice = [roll.dFear.total, roll.dHope.total];\nconst resource = this.parent.resource?.diceStates ? Object.values(this.parent.resource.diceStates).map(x => x.value)[0] : null;\nconst diceMatch = dice.includes(resource);\n\nif (!diceMatch) return;\n\n/* Create a dialog to choose Hope or Stress - or to cancel*/\nconst choice = await foundry.applications.api.DialogV2.wait({\n classes: ['dh-style', 'two-big-buttons'],\n window: { title: 'Strange Patterns' },\n content: 'Increase Hope or clear stress?',\n buttons: [\n {\n action: 'hope',\n label: 'Hope',\n icon: 'fa-solid fa-plus'\n },\n {\n action: 'stress',\n label: 'Stress',\n icon: 'fa-solid fa-book'\n }\n ]\n});\n \nif (!choice) return;\n\n/* Return resource update according to choice */\nconst isHope = choice === 'hope';\nreturn [{ key: choice, value: isHope ? 1 : -1, total: isHope ? -1 : 1, enabled: true }];"
|
"command": "/* Check if there's a Strange Pattern match */\nconst dice = [roll.dFear.total, roll.dHope.total];\nconst resource = this.parent.resource?.diceStates ? Object.values(this.parent.resource.diceStates).map(x => x.value)[0] : null;\nconst diceMatch = dice.includes(resource);\n\nif (!diceMatch) return;\n\n/* Create a dialog to choose Hope or Stress - or to cancel*/\nconst choice = await foundry.applications.api.DialogV2.wait({\n classes: ['dh-style', 'two-big-buttons'],\n window: { title: this.item.name },\n content: game.i18n.localize('DAGGERHEART.CONFIG.Triggers.triggerTexts.strangePatternsContent'),\n buttons: [\n {\n action: 'hope',\n label: game.i18n.localize('DAGGERHEART.GENERAL.hope'),\n icon: 'fa-solid fa-hands-holding'\n },\n {\n action: 'stress',\n label: game.i18n.localize('DAGGERHEART.GENERAL.stress'),\n icon: 'fa-solid fa-bolt-lightning'\n }\n ]\n});\n \nif (!choice) return;\n\n/* Return resource update according to choice */\nconst isHope = choice === 'hope';\nreturn [{ key: choice, value: isHope ? 1 : -1, total: isHope ? -1 : 1, enabled: true }];"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -545,11 +545,6 @@
|
||||||
font-size: var(--font-size-12);
|
font-size: var(--font-size-12);
|
||||||
padding-left: 3px;
|
padding-left: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
code-mirror {
|
|
||||||
width: 100%;
|
|
||||||
height: 500px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.application.setting.dh-style {
|
.application.setting.dh-style {
|
||||||
|
|
|
||||||
|
|
@ -21,4 +21,15 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.code-mirror-wrapper {
|
||||||
|
width: 100%;
|
||||||
|
height: 0;
|
||||||
|
min-height: 0;
|
||||||
|
transition: height 0.1s ease-in-out;
|
||||||
|
|
||||||
|
&.revealed {
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,23 +3,24 @@
|
||||||
data-group="primary"
|
data-group="primary"
|
||||||
data-tab="trigger"
|
data-tab="trigger"
|
||||||
>
|
>
|
||||||
<button data-action="addTrigger">{{localize "Add Trigger"}} <i class="fa-solid fa-plus icon-button"></i></button>
|
<button type="button" data-action="addTrigger">{{localize "Add Trigger"}} <i class="fa-solid fa-plus icon-button"></i></button>
|
||||||
|
|
||||||
{{#each @root.triggers as |trigger index|}}
|
{{#each @root.triggers as |trigger index|}}
|
||||||
<fieldset class="one-column">
|
<fieldset class="one-column" data-index="{{index}}">
|
||||||
<legend><a data-action="removeTrigger" data-index="{{index}}"><i class="fa-solid fa-trash"></i></a></legend>
|
<legend><a data-action="removeTrigger" data-index="{{index}}"><i class="fa-solid fa-trash"></i></a></legend>
|
||||||
|
|
||||||
<div class="trigger-data">
|
<div class="trigger-data">
|
||||||
<select name="{{concat "triggers." index ".trigger"}}">
|
{{formInput @root.fields.triggers.element.fields.trigger value=trigger.trigger name=(concat "triggers." index ".trigger") blank=false localize=true}}
|
||||||
{{selectOptions @root.triggerOptions seleced=trigger.trigger localize=true}}
|
|
||||||
</select>
|
|
||||||
<div class="hint-section">
|
<div class="hint-section">
|
||||||
<strong>{{localize "Context: "}}</strong>
|
<strong>{{localize "Context: "}}</strong>
|
||||||
<span class="hint">{{localize trigger.hint}}</span>
|
<span class="hint">{{localize trigger.hint}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<a data-action="expandTrigger" data-index="{{index}}"><i class="fa-solid fa-angle-down"></i></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{formInput @root.fields.triggers.element.fields.command value=trigger.command elementType="code-mirror" name=(concat "triggers." index ".command") aria=(object label=(localize "Test"))}}
|
<div class="code-mirror-wrapper {{#if trigger.revealed}}revealed{{/if}}">
|
||||||
|
{{formInput @root.fields.triggers.element.fields.command value=trigger.command elementType="code-mirror" name=(concat "triggers." index ".command") aria=(object label=(localize "Test")) }}
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</section>
|
</section>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue