From 29f44bcb5e4344a9ccb0dd11b167c510ccce2fe8 Mon Sep 17 00:00:00 2001 From: craftidore Date: Mon, 24 Nov 2025 15:58:48 -0600 Subject: [PATCH 01/13] Add dumb origin marker --- client/src/game/layers/variants/grid.ts | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/client/src/game/layers/variants/grid.ts b/client/src/game/layers/variants/grid.ts index 66bf72533..37a3345ac 100644 --- a/client/src/game/layers/variants/grid.ts +++ b/client/src/game/layers/variants/grid.ts @@ -4,6 +4,9 @@ import { floorState } from "../../systems/floors/state"; import { positionState } from "../../systems/position/state"; import { locationSettingsState } from "../../systems/settings/location/state"; import { playerSettingsState } from "../../systems/settings/players/state"; +import { g2l, g2lz } from "../../../core/conversions"; +import { toGP } from "../../../core/geometry"; +import type { GlobalPoint } from "../../../core/geometry"; import { Layer } from "./layer"; @@ -95,6 +98,30 @@ export class GridLayer extends Layer implements IGridLayer { ctx.lineWidth = 1; ctx.stroke(); } + const showOrigin = true;// CRAFITMARK: WARN: Debug value; + console.log(`x,y: ${positionState.readonly.panX},${positionState.readonly.panY}`); + if (showOrigin) { + // Get Info + const ctx = this.ctx; + const centerLocal = g2l({x:0,y:0}); + const radius = g2lz(20); + console.log(`centerLocal: ${centerLocal.x},${centerLocal.y}`) + const state = positionState.readonly; + const pixelRatio = playerSettingsState.devicePixelRatio.value; + // Push settings + const oldFillStyle = ctx.fillStyle; + ctx.setTransform(pixelRatio, 0, 0, pixelRatio, centerLocal.x * pixelRatio, centerLocal.y * pixelRatio); + // Draw + ctx.fillStyle = "rgb(255,0,0)"; + ctx.moveTo(0, 0); + ctx.beginPath(); + ctx.arc(0, 0, radius, 0, Math.PI * 2); + ctx.fill(); + ctx.stroke(); + // Pop setting changes + ctx.resetTransform(); + ctx.fillStyle = oldFillStyle; + } this.valid = true; } } From 2ec8c59b65a6cc0b12151846db3ff96b779b7aea Mon Sep 17 00:00:00 2001 From: craftidore Date: Mon, 24 Nov 2025 16:05:16 -0600 Subject: [PATCH 02/13] Remove debug lines from layout/variants/grid.ts and apply prettier --- client/src/game/layers/variants/grid.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/client/src/game/layers/variants/grid.ts b/client/src/game/layers/variants/grid.ts index 37a3345ac..c6d90807d 100644 --- a/client/src/game/layers/variants/grid.ts +++ b/client/src/game/layers/variants/grid.ts @@ -98,14 +98,12 @@ export class GridLayer extends Layer implements IGridLayer { ctx.lineWidth = 1; ctx.stroke(); } - const showOrigin = true;// CRAFITMARK: WARN: Debug value; - console.log(`x,y: ${positionState.readonly.panX},${positionState.readonly.panY}`); + const showOrigin = true; // CRAFITMARK: WARN: Debug value; if (showOrigin) { // Get Info const ctx = this.ctx; - const centerLocal = g2l({x:0,y:0}); + const centerLocal = g2l({ x: 0, y: 0 }); const radius = g2lz(20); - console.log(`centerLocal: ${centerLocal.x},${centerLocal.y}`) const state = positionState.readonly; const pixelRatio = playerSettingsState.devicePixelRatio.value; // Push settings From ec0975cec9aca4f066538ba472732c6a5295e4dc Mon Sep 17 00:00:00 2001 From: craftidore Date: Mon, 24 Nov 2025 16:26:18 -0600 Subject: [PATCH 03/13] Resolve typescript errors in layers/variants/grid.ts --- client/src/game/layers/variants/grid.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/client/src/game/layers/variants/grid.ts b/client/src/game/layers/variants/grid.ts index c6d90807d..c0c3376e1 100644 --- a/client/src/game/layers/variants/grid.ts +++ b/client/src/game/layers/variants/grid.ts @@ -6,7 +6,6 @@ import { locationSettingsState } from "../../systems/settings/location/state"; import { playerSettingsState } from "../../systems/settings/players/state"; import { g2l, g2lz } from "../../../core/conversions"; import { toGP } from "../../../core/geometry"; -import type { GlobalPoint } from "../../../core/geometry"; import { Layer } from "./layer"; @@ -102,9 +101,8 @@ export class GridLayer extends Layer implements IGridLayer { if (showOrigin) { // Get Info const ctx = this.ctx; - const centerLocal = g2l({ x: 0, y: 0 }); + const centerLocal = g2l(toGP(0, 0)); const radius = g2lz(20); - const state = positionState.readonly; const pixelRatio = playerSettingsState.devicePixelRatio.value; // Push settings const oldFillStyle = ctx.fillStyle; From 061dcff3cb1c728fee1c3a1d70d2d4a12c72f125 Mon Sep 17 00:00:00 2001 From: craftidore Date: Mon, 24 Nov 2025 16:34:21 -0600 Subject: [PATCH 04/13] Fix lint errors in layouts/variants/grid.ts --- client/src/game/layers/variants/grid.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/game/layers/variants/grid.ts b/client/src/game/layers/variants/grid.ts index c0c3376e1..405622de5 100644 --- a/client/src/game/layers/variants/grid.ts +++ b/client/src/game/layers/variants/grid.ts @@ -1,11 +1,11 @@ +import { g2l, g2lz } from "../../../core/conversions"; +import { toGP } from "../../../core/geometry"; import { DEFAULT_HEX_RADIUS, DEFAULT_GRID_SIZE, SQRT3, GridType } from "../../../core/grid"; import type { IGridLayer } from "../../interfaces/layers/grid"; import { floorState } from "../../systems/floors/state"; import { positionState } from "../../systems/position/state"; import { locationSettingsState } from "../../systems/settings/location/state"; import { playerSettingsState } from "../../systems/settings/players/state"; -import { g2l, g2lz } from "../../../core/conversions"; -import { toGP } from "../../../core/geometry"; import { Layer } from "./layer"; From 4630fba8785cb53a22ec8ad30ead710ae7d4c40d Mon Sep 17 00:00:00 2001 From: Craftidore Date: Sat, 17 Jan 2026 14:02:05 -0600 Subject: [PATCH 05/13] Origin mark shows as black square --- client/src/fa.ts | 2 ++ client/src/game/layers/variants/grid.ts | 25 +++++-------------- .../game/shapes/variants/fontAwesomeIcon.ts | 2 +- 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/client/src/fa.ts b/client/src/fa.ts index 3be3155db..15a0b3fd4 100644 --- a/client/src/fa.ts +++ b/client/src/fa.ts @@ -34,6 +34,7 @@ import { faCog, faCogs, faCommentDots, + faMapPin, faCut, faDiceSix, faDoorClosed, @@ -123,6 +124,7 @@ export function loadFontAwesome(): void { faCopy, faCompass, faCommentDots, + faMapPin, faCut, faDAndD, faDiceD20, diff --git a/client/src/game/layers/variants/grid.ts b/client/src/game/layers/variants/grid.ts index 405622de5..f47a0e7ab 100644 --- a/client/src/game/layers/variants/grid.ts +++ b/client/src/game/layers/variants/grid.ts @@ -6,10 +6,13 @@ import { floorState } from "../../systems/floors/state"; import { positionState } from "../../systems/position/state"; import { locationSettingsState } from "../../systems/settings/location/state"; import { playerSettingsState } from "../../systems/settings/players/state"; +import { FontAwesomeIcon } from "../../shapes/variants/fontAwesomeIcon"; import { Layer } from "./layer"; export class GridLayer extends Layer implements IGridLayer { + originIcon: FontAwesomeIcon = new FontAwesomeIcon({ prefix: "fas", iconName: "sticky-note" }, toGP(-10, -10), 20) // 20 == width + invalidate(): void { this.valid = false; } @@ -21,6 +24,7 @@ export class GridLayer extends Layer implements IGridLayer { draw(_doClear?: boolean): void { if (!this.valid) { + this.clear(); if (locationSettingsState.raw.useGrid.value) { const activeFowFloor = floorState.currentFloor.value!.id; @@ -30,7 +34,6 @@ export class GridLayer extends Layer implements IGridLayer { this.canvas.style.display = "none"; const ctx = this.ctx; - this.clear(); ctx.beginPath(); const state = positionState.readonly; @@ -97,26 +100,10 @@ export class GridLayer extends Layer implements IGridLayer { ctx.lineWidth = 1; ctx.stroke(); } - const showOrigin = true; // CRAFITMARK: WARN: Debug value; + const showOrigin = true; // CRAFTIMARK: WARN: Debug value; if (showOrigin) { - // Get Info const ctx = this.ctx; - const centerLocal = g2l(toGP(0, 0)); - const radius = g2lz(20); - const pixelRatio = playerSettingsState.devicePixelRatio.value; - // Push settings - const oldFillStyle = ctx.fillStyle; - ctx.setTransform(pixelRatio, 0, 0, pixelRatio, centerLocal.x * pixelRatio, centerLocal.y * pixelRatio); - // Draw - ctx.fillStyle = "rgb(255,0,0)"; - ctx.moveTo(0, 0); - ctx.beginPath(); - ctx.arc(0, 0, radius, 0, Math.PI * 2); - ctx.fill(); - ctx.stroke(); - // Pop setting changes - ctx.resetTransform(); - ctx.fillStyle = oldFillStyle; + this.originIcon.draw(ctx, true); } this.valid = true; } diff --git a/client/src/game/shapes/variants/fontAwesomeIcon.ts b/client/src/game/shapes/variants/fontAwesomeIcon.ts index b31f24cb6..61df2ae6f 100644 --- a/client/src/game/shapes/variants/fontAwesomeIcon.ts +++ b/client/src/game/shapes/variants/fontAwesomeIcon.ts @@ -20,6 +20,7 @@ function getFaBlobUrl(iconDef: IconDefinition): string { path.setAttribute("stroke-width", "20"); const blob = new Blob([svg.outerHTML], { type: "image/svg+xml;charset=utf-8" }); const url = URL.createObjectURL(blob); + console.log(url); faBlobs.set(name, url); return url; } @@ -37,7 +38,6 @@ export class FontAwesomeIcon extends Asset implements IAsset { const iconDef = findIconDefinition(icon); const h = w * (iconDef.icon[1] / iconDef.icon[0]); image.src = getFaBlobUrl(iconDef); - super(image, topleft, w, h, { isSnappable: false, ...options }); } } From 74c50c8d84979f7f1b0942c1b43b565668554d83 Mon Sep 17 00:00:00 2001 From: Craftidore Date: Sat, 17 Jan 2026 14:29:52 -0600 Subject: [PATCH 06/13] Working map pin icon --- client/src/game/layers/variants/grid.ts | 6 +++--- .../game/shapes/variants/fontAwesomeIcon.ts | 21 ++++++++++++------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/client/src/game/layers/variants/grid.ts b/client/src/game/layers/variants/grid.ts index f47a0e7ab..de8f18e72 100644 --- a/client/src/game/layers/variants/grid.ts +++ b/client/src/game/layers/variants/grid.ts @@ -1,4 +1,3 @@ -import { g2l, g2lz } from "../../../core/conversions"; import { toGP } from "../../../core/geometry"; import { DEFAULT_HEX_RADIUS, DEFAULT_GRID_SIZE, SQRT3, GridType } from "../../../core/grid"; import type { IGridLayer } from "../../interfaces/layers/grid"; @@ -11,7 +10,7 @@ import { FontAwesomeIcon } from "../../shapes/variants/fontAwesomeIcon"; import { Layer } from "./layer"; export class GridLayer extends Layer implements IGridLayer { - originIcon: FontAwesomeIcon = new FontAwesomeIcon({ prefix: "fas", iconName: "sticky-note" }, toGP(-10, -10), 20) // 20 == width + originIcon: FontAwesomeIcon = new FontAwesomeIcon({ prefix: "fas", iconName: "map-pin" }, toGP(-5, -16), 10, { svgDisplayOverrides: { fill: "red", stroke: "black", strokeWidth: "10" } }) // 20 == width invalidate(): void { this.valid = false; @@ -103,7 +102,8 @@ export class GridLayer extends Layer implements IGridLayer { const showOrigin = true; // CRAFTIMARK: WARN: Debug value; if (showOrigin) { const ctx = this.ctx; - this.originIcon.draw(ctx, true); + // Pop setting changes + this.originIcon.draw(ctx, false); } this.valid = true; } diff --git a/client/src/game/shapes/variants/fontAwesomeIcon.ts b/client/src/game/shapes/variants/fontAwesomeIcon.ts index 61df2ae6f..bbe0b2d2d 100644 --- a/client/src/game/shapes/variants/fontAwesomeIcon.ts +++ b/client/src/game/shapes/variants/fontAwesomeIcon.ts @@ -1,23 +1,30 @@ import { type IconLookup, findIconDefinition, icon, type IconDefinition } from "@fortawesome/fontawesome-svg-core"; - import type { GlobalPoint } from "../../../core/geometry"; import type { GlobalId, LocalId } from "../../../core/id"; import type { IAsset } from "../../interfaces/shapes/asset"; import type { SHAPE_TYPE } from "../types"; +type SvgDisplayOverrides = { + fill: string; + stroke: string; + strokeWidth: string; +}; + import { Asset } from "./asset"; const faBlobs = new Map(); -function getFaBlobUrl(iconDef: IconDefinition): string { +function getFaBlobUrl(iconDef: IconDefinition, displayOverrides: SvgDisplayOverrides = { fill: "white", stroke: "black", strokeWidth: "20" }): string { const name = `${iconDef.prefix}-${iconDef.iconName}`; if (faBlobs.has(name)) return faBlobs.get(name)!; const svg = icon(iconDef).node[0] as SVGElement; + svg.setAttribute("xmlns", "http://www.w3.org/2000/svg"); const path = svg.firstChild as SVGTextPathElement; - path.setAttribute("fill", "white"); - path.setAttribute("stroke", "black"); - path.setAttribute("stroke-width", "20"); + path.setAttribute("fill", displayOverrides.fill); + path.setAttribute("stroke", displayOverrides.stroke); + path.setAttribute("stroke-width", displayOverrides.strokeWidth); + console.log(svg.outerHTML) const blob = new Blob([svg.outerHTML], { type: "image/svg+xml;charset=utf-8" }); const url = URL.createObjectURL(blob); console.log(url); @@ -32,12 +39,12 @@ export class FontAwesomeIcon extends Asset implements IAsset { icon: IconLookup, topleft: GlobalPoint, w: number, - options?: { id?: LocalId; uuid?: GlobalId; isSnappable?: boolean; parentId?: LocalId }, + options?: { id?: LocalId; uuid?: GlobalId; isSnappable?: boolean; parentId?: LocalId; svgDisplayOverrides?: SvgDisplayOverrides }, ) { const image = new Image(); const iconDef = findIconDefinition(icon); const h = w * (iconDef.icon[1] / iconDef.icon[0]); - image.src = getFaBlobUrl(iconDef); + image.src = getFaBlobUrl(iconDef, options?.svgDisplayOverrides); super(image, topleft, w, h, { isSnappable: false, ...options }); } } From 0271fe8dfc0ee70df54a31ef6c03b9b24406f986 Mon Sep 17 00:00:00 2001 From: Craftidore Date: Wed, 21 Jan 2026 19:04:43 -0600 Subject: [PATCH 07/13] origin marker transparency, zoom-independent size, and final icon --- client/src/fa.ts | 4 ++-- client/src/game/layers/variants/grid.ts | 18 +++++++++++------- .../game/shapes/variants/fontAwesomeIcon.ts | 4 ++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/client/src/fa.ts b/client/src/fa.ts index 15a0b3fd4..8340e5d4d 100644 --- a/client/src/fa.ts +++ b/client/src/fa.ts @@ -34,7 +34,7 @@ import { faCog, faCogs, faCommentDots, - faMapPin, + faLocationDot, faCut, faDiceSix, faDoorClosed, @@ -124,7 +124,7 @@ export function loadFontAwesome(): void { faCopy, faCompass, faCommentDots, - faMapPin, + faLocationDot, faCut, faDAndD, faDiceD20, diff --git a/client/src/game/layers/variants/grid.ts b/client/src/game/layers/variants/grid.ts index de8f18e72..06d12616f 100644 --- a/client/src/game/layers/variants/grid.ts +++ b/client/src/game/layers/variants/grid.ts @@ -6,11 +6,14 @@ import { positionState } from "../../systems/position/state"; import { locationSettingsState } from "../../systems/settings/location/state"; import { playerSettingsState } from "../../systems/settings/players/state"; import { FontAwesomeIcon } from "../../shapes/variants/fontAwesomeIcon"; +import type { SvgDisplayOverrides } from "../../shapes/variants/fontAwesomeIcon"; import { Layer } from "./layer"; export class GridLayer extends Layer implements IGridLayer { - originIcon: FontAwesomeIcon = new FontAwesomeIcon({ prefix: "fas", iconName: "map-pin" }, toGP(-5, -16), 10, { svgDisplayOverrides: { fill: "red", stroke: "black", strokeWidth: "10" } }) // 20 == width + displayOverrides: SvgDisplayOverrides = { fill: "rgba(255,0,0,0.4)", stroke: "black", strokeWidth: "10" }; + originIcon: FontAwesomeIcon = new FontAwesomeIcon({ prefix: "fas", iconName: "location-dot" }, toGP(0,0), 40, { svgDisplayOverrides: this.displayOverrides }) + originIconSize = { width: 30, height: 40 }; invalidate(): void { this.valid = false; @@ -24,6 +27,13 @@ export class GridLayer extends Layer implements IGridLayer { draw(_doClear?: boolean): void { if (!this.valid) { this.clear(); + const showOrigin = true; // CRAFTIMARK: WARN: Debug value; + if (showOrigin) { + const ctx = this.ctx; + const state = positionState.readonly; + console.log(state.zoom) + this.originIcon.draw(ctx, false, { center: toGP(0,-20/state.zoom), width: this.originIconSize.width, height: this.originIconSize.height }); + } if (locationSettingsState.raw.useGrid.value) { const activeFowFloor = floorState.currentFloor.value!.id; @@ -99,12 +109,6 @@ export class GridLayer extends Layer implements IGridLayer { ctx.lineWidth = 1; ctx.stroke(); } - const showOrigin = true; // CRAFTIMARK: WARN: Debug value; - if (showOrigin) { - const ctx = this.ctx; - // Pop setting changes - this.originIcon.draw(ctx, false); - } this.valid = true; } } diff --git a/client/src/game/shapes/variants/fontAwesomeIcon.ts b/client/src/game/shapes/variants/fontAwesomeIcon.ts index bbe0b2d2d..5f8fc5bc1 100644 --- a/client/src/game/shapes/variants/fontAwesomeIcon.ts +++ b/client/src/game/shapes/variants/fontAwesomeIcon.ts @@ -4,7 +4,7 @@ import type { GlobalId, LocalId } from "../../../core/id"; import type { IAsset } from "../../interfaces/shapes/asset"; import type { SHAPE_TYPE } from "../types"; -type SvgDisplayOverrides = { +export type SvgDisplayOverrides = { fill: string; stroke: string; strokeWidth: string; @@ -15,7 +15,7 @@ import { Asset } from "./asset"; const faBlobs = new Map(); function getFaBlobUrl(iconDef: IconDefinition, displayOverrides: SvgDisplayOverrides = { fill: "white", stroke: "black", strokeWidth: "20" }): string { - const name = `${iconDef.prefix}-${iconDef.iconName}`; + const name = `${iconDef.prefix}-${iconDef.iconName}-${displayOverrides.fill}-${displayOverrides.stroke}-${displayOverrides.strokeWidth}`; if (faBlobs.has(name)) return faBlobs.get(name)!; const svg = icon(iconDef).node[0] as SVGElement; From abc5686a570b6cc435e692bbf7d94b0bfb186e0b Mon Sep 17 00:00:00 2001 From: Craftidore Date: Wed, 21 Jan 2026 20:11:20 -0600 Subject: [PATCH 08/13] Non-functional location setting for use_origin_marker --- client/src/apiTypes.ts | 4 +++- client/src/game/systems/settings/location/index.ts | 9 +++++++++ client/src/game/systems/settings/location/models.ts | 1 + client/src/game/systems/settings/location/state.ts | 1 + client/src/game/ui/settings/location/GridSettings.vue | 7 +++++++ client/src/locales/en.json | 1 + server/src/api/models/location/settings.py | 2 ++ server/src/api/socket/location.py | 10 ++++++++++ server/src/db/models/location_options.py | 3 +++ server/src/save.py | 9 ++++++++- 10 files changed, 45 insertions(+), 2 deletions(-) diff --git a/client/src/apiTypes.ts b/client/src/apiTypes.ts index 32d79a79b..309dd5d9c 100644 --- a/client/src/apiTypes.ts +++ b/client/src/apiTypes.ts @@ -846,7 +846,7 @@ export interface ToggleCompositeVariant { shape: GlobalId; variant: GlobalId; } -export interface TypeIdModel {} +export interface TypeIdModel { } export interface ApiLocation { id: number; name: string; @@ -857,6 +857,7 @@ export interface ApiOptionalLocationOptions { unit_size?: number | null; unit_size_unit?: string | null; use_grid?: boolean | null; + use_origin_marker?: boolean | null; full_fow?: boolean | null; fow_opacity?: number | null; fow_los?: boolean | null; @@ -881,6 +882,7 @@ export interface ApiLocationOptions { unit_size: number; unit_size_unit: string; use_grid: boolean; + use_origin_marker: boolean; full_fow: boolean; fow_opacity: number; fow_los: boolean; diff --git a/client/src/game/systems/settings/location/index.ts b/client/src/game/systems/settings/location/index.ts index a5bfa9f80..cf09d03b1 100644 --- a/client/src/game/systems/settings/location/index.ts +++ b/client/src/game/systems/settings/location/index.ts @@ -26,6 +26,7 @@ class LocationSettingsSystem implements System { gridType: this.setGridType.bind(this), unitSize: this.setUnitSize.bind(this), unitSizeUnit: this.setUnitSizeUnit.bind(this), + useOriginMarker: this.setUseOriginMarker.bind(this), dropRatio: this.setDropRatio.bind(this), fullFow: this.setFullFow.bind(this), fowLos: this.setFowLos.bind(this), @@ -138,6 +139,14 @@ class LocationSettingsSystem implements System { if (sync) sendLocationOption("unit_size_unit", unitSizeUnit, location); } + setUseOriginMarker(useOriginMarker: boolean | undefined, location: number | undefined, sync: boolean): void { + if (!this.setValue($.useOriginMarker, useOriginMarker, location)) return; + + floorSystem.invalidateAllFloors(); + + if (sync) sendLocationOption("use_origin_marker", useOriginMarker, location); + } + setDropRatio(dropRatio: number | undefined, location: number | undefined, sync: boolean): void { if (!this.setValue($.dropRatio, dropRatio, location)) return; diff --git a/client/src/game/systems/settings/location/models.ts b/client/src/game/systems/settings/location/models.ts index 31dd8e25d..c989ea317 100644 --- a/client/src/game/systems/settings/location/models.ts +++ b/client/src/game/systems/settings/location/models.ts @@ -17,6 +17,7 @@ export interface LocationOptions { gridType: GridType; unitSize: number; unitSizeUnit: string; + useOriginMarker: boolean; fullFow: boolean; fowOpacity: number; fowLos: boolean; diff --git a/client/src/game/systems/settings/location/state.ts b/client/src/game/systems/settings/location/state.ts index fe38d8bc9..92660449c 100644 --- a/client/src/game/systems/settings/location/state.ts +++ b/client/src/game/systems/settings/location/state.ts @@ -21,6 +21,7 @@ function getInitState(): _S { useGrid: init(false), unitSize: init(5), // gridSize computed is not triggering on setDefault for some reason unitSizeUnit: init("ft"), + useOriginMarker: init(false), visionMaxRange: init(0), visionMinRange: init(0), visionMode: init(""), diff --git a/client/src/game/ui/settings/location/GridSettings.vue b/client/src/game/ui/settings/location/GridSettings.vue index b6a94c15a..d583a2a33 100644 --- a/client/src/game/ui/settings/location/GridSettings.vue +++ b/client/src/game/ui/settings/location/GridSettings.vue @@ -18,6 +18,7 @@ const gridType = useLocationSettings("gridType", location); const unitSize = useLocationSettings("unitSize", location); const unitSizeUnit = useLocationSettings("unitSizeUnit", location); +const useOriginMarker = useLocationSettings("useOriginMarker", location); const dropRatio = useLocationSettings("dropRatio", location); @@ -69,6 +70,12 @@ const dropRatio = useLocationSettings("dropRatio", location); + + +
+ +
+
- +
From c5f0821ad1bbe4c6efa0dacb50730e998be7222e Mon Sep 17 00:00:00 2001 From: Craftidore Date: Tue, 3 Feb 2026 08:06:39 -0600 Subject: [PATCH 12/13] The council demands server code formatting --- server/src/api/socket/location.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/server/src/api/socket/location.py b/server/src/api/socket/location.py index 703715804..d9c26b112 100644 --- a/server/src/api/socket/location.py +++ b/server/src/api/socket/location.py @@ -298,9 +298,9 @@ async def change_location(sid: str, raw_data: Any): @sio.on("Location.Options.Set", namespace=GAME_NS) @auth.login_required(app, sio, "game") async def set_location_options(sid: str, raw_data: Any): - print("raw_data: " + str(raw_data)) # CRAFTIDEBUG: WARN: + print("raw_data: " + str(raw_data)) # CRAFTIDEBUG: WARN: data = LocationOptionsSet(**raw_data) - print("data: " + str(data)) # CRAFTIDEBUG: WARN: + print("data: " + str(data)) # CRAFTIDEBUG: WARN: pr: PlayerRoom = game_state.get(sid) @@ -308,29 +308,29 @@ async def set_location_options(sid: str, raw_data: Any): logger.warning(f"{pr.player.name} attempted to set a room option") return - print("data.location: " + str(data.location)) # CRAFTIDEBUG: WARN: + print("data.location: " + str(data.location)) # CRAFTIDEBUG: WARN: if data.location is MISSING: options = pr.room.default_options else: loc = Location.get_by_id(data.location) - print("loc: " + str(loc)) # CRAFTIDEBUG: WARN: - print("loc: " + str(loc.options)) # CRAFTIDEBUG: WARN: + print("loc: " + str(loc)) # CRAFTIDEBUG: WARN: + print("loc: " + str(loc.options)) # CRAFTIDEBUG: WARN: if loc.options is None: loc.options = LocationOptions.create_empty() loc.save() options = loc.options - print("options: " + str(options)) # CRAFTIDEBUG: WARN: + print("options: " + str(options)) # CRAFTIDEBUG: WARN: safe_update_model_from_dict(options, raw_data["options"]) # Don't use .model_dump() here - print("new options: " + str(options)) # CRAFTIDEBUG: WARN: + print("new options: " + str(options)) # CRAFTIDEBUG: WARN: options.save() - print("saved options: " + str(options)) # CRAFTIDEBUG: WARN: + print("saved options: " + str(options)) # CRAFTIDEBUG: WARN: if data.location is MISSING: for sid in game_state.get_sids(skip_sid=sid, room=pr.room): await _send_game("Location.Options.Set", raw_data, room=sid) else: - print("sending data") # CRAFTIDEBUG: WARN: + print("sending data") # CRAFTIDEBUG: WARN: await _send_game( "Location.Options.Set", raw_data, From e6ccf82744594f89ff3859f52286d70fd375e432 Mon Sep 17 00:00:00 2001 From: Craftidore Date: Tue, 3 Feb 2026 08:08:09 -0600 Subject: [PATCH 13/13] Remove duplicate value in fa.ts --- client/src/fa.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/fa.ts b/client/src/fa.ts index 8340e5d4d..28a35acc4 100644 --- a/client/src/fa.ts +++ b/client/src/fa.ts @@ -34,7 +34,6 @@ import { faCog, faCogs, faCommentDots, - faLocationDot, faCut, faDiceSix, faDoorClosed,