From 856abcba678f790b65a79b037cce90db897be675 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Tue, 21 Apr 2026 17:25:06 +0200 Subject: [PATCH] Restructured getTemplateShape to be a lot more readable --- module/canvas/placeables/regionLayer.mjs | 52 +++++++++++++++--------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/module/canvas/placeables/regionLayer.mjs b/module/canvas/placeables/regionLayer.mjs index bbd78ef1..bdc9eee0 100644 --- a/module/canvas/placeables/regionLayer.mjs +++ b/module/canvas/placeables/regionLayer.mjs @@ -97,15 +97,9 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer { } static getTemplateShape({ type, angle, range, direction } = {}) { - const { line, rectangle, inFront, cone } = CONFIG.DH.GENERAL.templateTypes; - - const usedAngle = - type === cone.id - ? (angle ?? CONFIG.MeasuredTemplate.defaults.angle) - : type === inFront.id - ? '180' - : undefined; + const { line, rectangle, inFront, cone, circle, emanation } = CONFIG.DH.GENERAL.templateTypes; + /* Length calculation */ const { grid, distance } = CONFIG.Scene.documentClass.schema.fields.grid.fields; const sceneGridSize = canvas.scene?.grid.size ?? grid.size.initial; const sceneGridDistance = canvas.scene?.grid.distance ?? distance.getInitialValue(); @@ -117,12 +111,9 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer { (!Number.isNaN(rangeNumber) ? rangeNumber : settings ? settings[range] : 0) * dimensionConstant; const length = baseDistance; - const radius = length; + /*----*/ - const shapeWidth = type === line.id ? 5 * dimensionConstant : type === rectangle.id ? length : undefined; - const shapeType = type === inFront.id ? cone.id : type; - - return { + const shapeData = { ...canvas.mousePosition, base: { type: 'token', @@ -132,13 +123,36 @@ export default class DhRegionLayer extends foundry.canvas.layers.RegionLayer { height: 1, shape: game.canvas.grid.isHexagonal ? CONST.TOKEN_SHAPES.ELLIPSE_1 : CONST.TOKEN_SHAPES.RECTANGLE_1 }, - length: length, - width: shapeWidth, - height: length, - angle: usedAngle, - radius: radius, + type: type, direction: direction ?? 0, - type: shapeType }; + + switch(type) { + case cone.id: + shapeData.angle = angle ?? CONFIG.MeasuredTemplate.defaults.angle; + shapeData.radius = length; + break; + case inFront.id: + shapeData.angle = '180'; + shapeData.radius = length; + shapeData.type = cone.id; + break; + case circle.id: + shapeData.radius = length; + break; + case emanation.id: + shapeData.radius = length; + break; + case rectangle.id: + shapeData.width = length; + shapeData.height = length; + break; + case line.id: + shapeData.length = length; + shapeData.width = 5 * dimensionConstant; + break; + } + + return shapeData; } }