feat: add relay-backed web radar sharing
- publish radar state/bootstrap snapshots to an HTTP relay - add shared waypoint sync through relay APIs and SSE updates - add remote Caddy/deploy tooling and mock relay push script - add static POIs, topo-tile availability checks, and tile-load throttling - add WASM 3D map engine and Python map data-prep pipeline - update worn clothing reads to include slot metadata - add grid controls, render perf HUD, and marker/label scaling tweaks - remove embedded map resource generation in favor of disk/relay maps
This commit is contained in:
+22
-7
@@ -811,6 +811,18 @@ body.sidebar-hidden .viewport { left: 0; }
|
||||
width: 10px; height: 10px;
|
||||
}
|
||||
|
||||
.marker.shared-waypoint {
|
||||
background: #f59e0b;
|
||||
border: 2px solid #fde68a;
|
||||
width: 10px; height: 10px;
|
||||
border-radius: 2px;
|
||||
transform: translate(-50%, -50%) rotate(45deg);
|
||||
}
|
||||
|
||||
.shared-waypoint-label {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.entity.bullet-phantom .marker.bullets {
|
||||
opacity: 0.45;
|
||||
box-shadow: 0 0 6px rgba(148,163,184,0.45);
|
||||
@@ -957,11 +969,11 @@ body.sidebar-hidden .viewport { left: 0; }
|
||||
|
||||
/* ── Grid overlay ────────────────────────────────────────────────────── */
|
||||
|
||||
.grid-major { stroke: rgba(255,255,255,0.30); stroke-width: 1; }
|
||||
.grid-minor { stroke: rgba(255,255,255,0.12); stroke-width: 0.5; }
|
||||
.grid-major { stroke: rgba(255,255,255,0.30); stroke-width: calc(var(--grid-line-weight, 2.5) * var(--inv-scale, 1)); }
|
||||
.grid-minor { stroke: rgba(255,255,255,0.12); stroke-width: calc(0.5 * var(--inv-scale, 1)); }
|
||||
|
||||
.canvas.satmap-active .grid-major { stroke: rgba(0,0,0,0.45); }
|
||||
.canvas.satmap-active .grid-label-inner { font-size: 10px; color: rgba(0,0,0,0.90); text-shadow: 0 1px 1px rgba(255,255,255,0.6); }
|
||||
.canvas.satmap-active .grid-major { stroke: rgba(0,0,0,0.45); stroke-width: calc(var(--grid-line-weight, 2.5) * var(--inv-scale, 1)); }
|
||||
.canvas.satmap-active .grid-label-inner { font-size: var(--grid-label-size, 13px); color: rgba(0,0,0,0.90); text-shadow: 0 1px 1px rgba(255,255,255,0.6); }
|
||||
|
||||
.grid-label-wrapper {
|
||||
position: absolute;
|
||||
@@ -972,12 +984,13 @@ body.sidebar-hidden .viewport { left: 0; }
|
||||
.canvas.grid-labels-visible .grid-label-wrapper { visibility: visible; }
|
||||
|
||||
.grid-label-inner {
|
||||
font-size: 10px;
|
||||
font-size: var(--grid-label-size, 13px);
|
||||
font-family: monospace;
|
||||
color: rgba(255,255,255,0.50);
|
||||
color: rgba(255,255,255,0.55);
|
||||
white-space: nowrap;
|
||||
line-height: 1;
|
||||
text-shadow: 0 1px 2px rgba(0,0,0,0.85);
|
||||
text-shadow: 0 1px 3px rgba(0,0,0,0.95);
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
/* ── Combat mode ─────────────────────────────────────────────────────── */
|
||||
@@ -1058,6 +1071,8 @@ body.measure-active .viewport { cursor: crosshair; }
|
||||
}
|
||||
|
||||
.ctx-item:hover { background: var(--bg-hover); }
|
||||
.ctx-item-shared { color: #f59e0b; }
|
||||
.ctx-item-shared:hover { color: #fde68a; }
|
||||
|
||||
/* ── Coord bar ───────────────────────────────────────────────────────── */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user