Skip to content

Commit

Permalink
V12 compatability. Added Grid Settings for combat
Browse files Browse the repository at this point in the history
  • Loading branch information
WBHarry committed Aug 4, 2024
1 parent 285f07e commit 7b743c9
Show file tree
Hide file tree
Showing 9 changed files with 113 additions and 19 deletions.
6 changes: 1 addition & 5 deletions combat-hp-display.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useTemplatesPath } from './scripts/combat-hp-display-helpers.js';
import { registerGameSettings, migrateDataStructures } from './scripts/setup.js';
import { deleteCombatUpdate, deleteCombatantUpdate, startCombatUpdate, joinCombatUpdate } from './module/DisplayBarHandler.js';
import { deleteCombatUpdate, startCombatUpdate, joinCombatUpdate } from './module/DisplayBarHandler.js';

Hooks.once('init', function() {
registerGameSettings();
Expand All @@ -24,8 +24,4 @@ Hooks.on('updateCombat', async combat => {

Hooks.on('deleteCombat', async combat => {
await deleteCombatUpdate(combat);
});

Hooks.on('deleteCombatant', async combatant => {
await deleteCombatantUpdate(combatant);
});
5 changes: 4 additions & 1 deletion lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"to": "To",
"convertAll": "Convert All Actors",
"convertMap": "Convert All Actors On Map",
"disabledTooltip": "Select at least one token disposition"
"disabledTooltip": "Select at least one token disposition"
},
"hpDisplaySettings": {
"label": "",
Expand All @@ -20,6 +20,9 @@
"friendlyTokens": "Friendly Token Settings",
"neutralTokens": "Neutral Token Settings",
"hostileTokens": "Hostile Token Settings"
},
"gridSettings": {
"title": "Grid Settings"
}
}
}
7 changes: 3 additions & 4 deletions module.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,17 @@
"name": "combat-hp-display",
"title": "Combat HP Display",
"description": "A module for automatically changing how displaybars such as HP are shown on tokens when entering and leaving combat.",
"version": "1.2.0",
"version": "1.3.0",
"authors": [
{
"name": "HarryBoy"
}
],
"compatibility": {
"minimum": 10,
"verified": "10.288",
"maximum": 10
"verified": "12.330",
"maximum": 12
},
"minimumCoreVersion": 10,
"esmodules": [
"combat-hp-display.js"
],
Expand Down
16 changes: 10 additions & 6 deletions module/DisplayBarHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ import { translateCustomDisplayModes, getDisplayMode } from '../scripts/combat-h

export const startCombatUpdate = async (combat) => {
if(game.user.isGM && combat.previous.round === 0 && combat.current.round === 1){
const gridSettings = await game.settings.get('combat-hp-display', 'grid-display');
if(gridSettings.enabled && game.combat.scene){
await game.combat.scene.update({ 'grid.alpha': gridSettings.opacity });
}

const combatants = Array.from(combat.combatants);
await combatUpdate(combatants);
}
Expand Down Expand Up @@ -54,16 +59,15 @@ const diplayBarUpdate = async (combatant, inCombat) => {
};

export const deleteCombatUpdate = async (combat) => {
const gridSettings = await game.settings.get('combat-hp-display', 'grid-display');
if(gridSettings.enabled && combat.scene){
await combat.scene.update({ 'grid.alpha': 0 });
}

const combatants = Array.from(combat.combatants);
await updateDisplayMode(combatants);
}

export const deleteCombatantUpdate = async (combatant) => {
if(combatant.parent.started){
await updateDisplayMode([combatant]);
}
}

const updateDisplayMode = async (combatants) => {
for(var i = 0; i < combatants.length; i++) {
const combatant = combatants[i];
Expand Down
49 changes: 49 additions & 0 deletions module/GridSettingsMenu.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { useTemplatesPath } from '../scripts/combat-hp-display-helpers.js';

export default class GridSettingsMenu extends FormApplication {
constructor() {
super({}, {title: game.i18n.localize('combat-hp-display.gridSettings.title')});
const settings = game.settings.get('combat-hp-display', 'grid-display');
this.gridSettings = {
...settings,
};
}

static get defaultOptions() {
const defaults = super.defaultOptions;
const overrides = {
height: 'auto',
width: 300,
id: 'resource-display-menu',
template: useTemplatesPath('gridMenu.hbs'),
closeOnSubmit: false,
submitOnChange: true,
classes: ["combat-hp-display", "grid-menu"],
};

const mergedOptions = foundry.utils.mergeObject(defaults, overrides);

return mergedOptions;
}

getData() {
return {
grid: this.gridSettings,
}
}

async _updateObject(event, formData) {
this.gridSettings = foundry.utils.expandObject(formData).grid;

this.render();
}

activateListeners(html) {
super.activateListeners(html);

$(html).find('#save').click(event => {
game.settings.set('combat-hp-display', 'grid-display', this.gridSettings);
this.close();
});
}
}
23 changes: 23 additions & 0 deletions scripts/setup.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import DisplayBarConvertionMenu from '../module/DisplayBarConvertionMenu.js';
import DisplayBarSettingsMenu from '../module/DisplayBarSettingsMenu.js';
import GridSettingsMenu from '../module/GridSettingsMenu.js';

export const registerGameSettings = () => {
game.settings.registerMenu("combat-hp-display", "hp-display-settings", {
Expand All @@ -10,6 +11,16 @@ export const registerGameSettings = () => {
type: DisplayBarSettingsMenu,
restricted: true
});

game.settings.registerMenu("combat-hp-display", "grid-settings", {
name: game.i18n.localize('combat-hp-display.hpDisplaySettings.label'),
label: game.i18n.localize('combat-hp-display.hpDisplaySettings.title'),
hint: "",
icon: "fa-solid fa-border-all",
type: GridSettingsMenu,
restricted: true
});

if(!game.modules.get("barbrawl")?.active){
game.settings.registerMenu("combat-hp-display", "actor-converter", {
name: game.i18n.localize('combat-hp-display.actorConverter.label'),
Expand All @@ -33,6 +44,18 @@ export const registerGameSettings = () => {
hostile: { value: 50, gmOnly: false },
},
});

game.settings.register("combat-hp-display", "grid-display", {
name: "Combat Grid Display",
hint: "Scene grid behavior used when in combat",
scope: "world",
config: false,
type: Object,
default: {
enabled: false,
opacity: 0.2,
},
});
};

export const migrateDataStructures = async () => {
Expand Down
20 changes: 20 additions & 0 deletions templates/gridMenu.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<form class={{cssClass}} autocomplete="off" onsubmit="event.preventDefault();">
<div class="flexcol">
<div class="form-group">
<label><strong>{{localize "Enabled"}}</strong></label>
<div class="form-fields">
<input type="checkbox" name="grid.enabled" {{checked grid.enabled}} />
</div>
</div>
<div class="form-group">
<label><strong>{{localize "Opacity"}}</strong></label>
<div class="form-fields">
<label>{{grid.opacity}}</label>
<input type="range" name="grid.opacity" value="{{grid.opacity}}" min="0" max="1" step="0.1" />
</div>
</div>
</div>
<footer class="sheet-footer flexrow">
<button id="save"><i class="far fa-save"></i>Save Changes</button>
</footer>
</form>
4 changes: 2 additions & 2 deletions templates/partials/convertDisplayValue.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
</i>
</button>
<select name="from.{{this.type}}" {{#unless (lookup this.dispositions this.type)}}disabled{{/unless}}>
{{selectOptions this.displayChoisesFrom selected=this.outOfCombatSelected nameAttr="value" labelAttr="name"}}
{{selectOptions this.displayChoisesFrom selected=this.outOfCombatSelected valueAttr="value" labelAttr="name"}}
</select>
<select name="to.{{this.type}}" {{#unless (lookup this.dispositions this.type)}}disabled{{/unless}}>
{{selectOptions this.displayChoisesTo selected=this.combatSelected nameAttr="value" labelAttr="name"}}
{{selectOptions this.displayChoisesTo selected=this.combatSelected valueAttr="value" labelAttr="name"}}
</select>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion templates/partials/tokenDisplayValues.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
{{#if (eq this.type 'neutral')}}<i class="far fa-meh token-display-icon flex0" title="{{localize "combat-hp-display.hpDisplaySettings.neutralTokens"}}"></i>{{/if}}
{{#if (eq this.type 'hostile')}}<i class="far fa-angry token-display-icon flex0" title="{{localize "combat-hp-display.hpDisplaySettings.hostileTokens"}}"></i>{{/if}}
<select name="combat.{{this.type}}.value" class="flex1">
{{selectOptions this.displayChoisesTo selected=combatSelected nameAttr="value" labelAttr="name"}}
{{selectOptions this.displayChoisesTo selected=combatSelected valueAttr="value" labelAttr="name"}}
</select>
{{#if barbrawl}}<input id="gmOnly" type="checkbox" name="combat.{{this.type}}.gmOnly" data-dtype="Boolean" class="gm-row" {{checked gmOnly}} />{{/if}}
</div>

0 comments on commit 7b743c9

Please sign in to comment.