All data fields added and wired up for use

This commit is contained in:
Chris Ryan 2025-11-14 18:16:37 +10:00
parent 596e149968
commit fbd21274a6
5 changed files with 67 additions and 20 deletions

View file

@ -1993,6 +1993,7 @@
}, },
"actorName": "Actor Name", "actorName": "Actor Name",
"amount": "Amount", "amount": "Amount",
"angle": "Angle",
"any": "Any", "any": "Any",
"armor": "Armor", "armor": "Armor",
"armorFeatures": "Armor Features", "armorFeatures": "Armor Features",
@ -2015,6 +2016,7 @@
"damageType": "Damage Type", "damageType": "Damage Type",
"description": "Description", "description": "Description",
"difficulty": "Difficulty", "difficulty": "Difficulty",
"direction": "Direction",
"downtime": "Downtime", "downtime": "Downtime",
"dropActorsHere": "Drop Actors here", "dropActorsHere": "Drop Actors here",
"dropFeaturesHere": "Drop Features here", "dropFeaturesHere": "Drop Features here",
@ -2030,6 +2032,7 @@
"failure": "Failure", "failure": "Failure",
"fear": "Fear", "fear": "Fear",
"features": "Features", "features": "Features",
"fillColor": "Fill Color",
"formula": "Formula", "formula": "Formula",
"gm": "GM", "gm": "GM",
"healing": "Healing", "healing": "Healing",
@ -2113,6 +2116,7 @@
"value": "Value", "value": "Value",
"weaponFeatures": "Weapon Features", "weaponFeatures": "Weapon Features",
"weapons": "Weapons", "weapons": "Weapons",
"width": "Width",
"withThing": "With {thing}" "withThing": "With {thing}"
}, },
"ITEMS": { "ITEMS": {

View file

@ -1,3 +1,5 @@
import { buildTemplateDistance, buildTemplateType, buildTemplateAngle } from '../../helpers/templateUtils.mjs';
export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer { export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer {
static prepareSceneControls() { static prepareSceneControls() {
const sc = foundry.applications.ui.SceneControls; const sc = foundry.applications.ui.SceneControls;
@ -110,15 +112,22 @@ export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer
} }
const settings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.PresetTemplate); const settings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.PresetTemplate);
console.log("settings", settings); console.log("settings", settings);
const distance = buildTemplateDistance(settings.type, settings.range);
const usedType = buildTemplateType(settings.type);
const usedAngle = buildTemplateAngle(settings.type, settings.angle);
const { width, height } = game.canvas.scene.dimensions; const { width, height } = game.canvas.scene.dimensions;
const data = { const data = {
x: width / 2, x: width / 2,
y: height / 2, y: height / 2,
t: 'circle', t: usedType,
distance: 30, distance: distance,
fillColor: game.user.color || '#FF0000' fillColor: settings.fillColor,
angle: usedAngle,
width: settings.width,
direction: settings.direction
}; };
console.log("data", data);
CONFIG.ux.TemplateManager.createPreview(data); CONFIG.ux.TemplateManager.createPreview(data);
} }

View file

@ -1,4 +1,3 @@
export const presetTemplateTypes = { export const presetTemplateTypes = {
circle: { circle: {
id: 'circle', id: 'circle',
@ -14,6 +13,7 @@ export const presetTemplateTypes = {
export default class DhPresetTemplate extends foundry.abstract.DataModel { export default class DhPresetTemplate extends foundry.abstract.DataModel {
static defineSchema() { static defineSchema() {
const fields = foundry.data.fields; const fields = foundry.data.fields;
const fillColor = game.user?.color.toString() || '#777777';
return { return {
type: new fields.StringField({ type: new fields.StringField({
@ -25,8 +25,24 @@ export default class DhPresetTemplate extends foundry.abstract.DataModel {
range: new fields.StringField({ range: new fields.StringField({
required: true, required: true,
initial: "15", initial: "15",
label: 'DAGGERHEART.GENERAL.type' label: 'DAGGERHEART.GENERAL.range'
}),
angle: new fields.NumberField({
label: 'DAGGERHEART.GENERAL.angle'
}),
direction: new fields.NumberField({
initial: 0,
label: 'DAGGERHEART.GENERAL.direction'
}),
width: new fields.NumberField({
label: 'DAGGERHEART.GENERAL.width'
}),
fillColor: new fields.StringField({
required: true,
initial: fillColor,
label: 'DAGGERHEART.GENERAL.fillColor'
}) })
}; };
} }
} }

View file

@ -1,4 +1,5 @@
import { parseInlineParams } from './parser.mjs'; import { parseInlineParams } from './parser.mjs';
import { buildTemplateDistance, buildTemplateType, buildTemplateAngle } from '../helpers/templateUtils.mjs';
export default function DhTemplateEnricher(match, _options) { export default function DhTemplateEnricher(match, _options) {
const params = parseInlineParams(match[1]); const params = parseInlineParams(match[1]);
@ -56,21 +57,9 @@ export const renderMeasuredTemplate = async event => {
if (!type || !range || !game.canvas.scene) return; if (!type || !range || !game.canvas.scene) return;
const usedType = type === 'inFront' ? 'cone' : type === 'emanation' ? 'circle' : type; const usedType = buildTemplateType(type);
const usedAngle = const usedAngle = buildTemplateAngle(type, angle);
type === CONST.MEASURED_TEMPLATE_TYPES.CONE const distance = buildTemplateDistance(type, range);
? (angle ?? CONFIG.MeasuredTemplate.defaults.angle)
: type === CONFIG.DH.GENERAL.templateTypes.INFRONT
? '180'
: undefined;
let baseDistance = range;
if (Number.isNaN(Number(range))) {
baseDistance = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement[
range
];
}
const distance = type === CONFIG.DH.GENERAL.templateTypes.EMANATION ? baseDistance + 2.5 : baseDistance;
const { width, height } = game.canvas.scene.dimensions; const { width, height } = game.canvas.scene.dimensions;
const data = { const data = {

View file

@ -0,0 +1,29 @@
export function buildTemplateDistance(type, range) {
console.log("type", type);
console.log("range", range);
let baseDistance = range;
if (Number.isNaN(Number(range))) {
baseDistance = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement[
range
];
}
const distance = type === CONFIG.DH.GENERAL.templateTypes.EMANATION ? baseDistance + 2.5 : baseDistance;
return distance;
}
export function buildTemplateType(type) {
const usedType = type === 'inFront' ? 'cone' : type === 'emanation' ? 'circle' : type;
return usedType;
}
export function buildTemplateAngle(type, angle) {
const usedAngle =
type === CONST.MEASURED_TEMPLATE_TYPES.CONE
? (angle ?? CONFIG.MeasuredTemplate.defaults.angle)
: type === CONFIG.DH.GENERAL.templateTypes.INFRONT
? '180'
: undefined;
return usedAngle;
}