Skip to content

Plastic hexes, expand/attack hover preview, contextual HUD - #10

Merged
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd
Aug 26, 2026
Merged

Plastic hexes, expand/attack hover preview, contextual HUD#10
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd

Conversation

@devteapot

@devteapotdevteapot commented Aug 26, 2026

Copy link
Copy Markdown
Owner

First visual identity pass plus the Game Designer / HUD holes, in one PR. No new mechanic, no sub-cluster surgery, no retask, no economy/fog/bots/production art pipeline.

Visual identity

Move the offline fixture off the muted graybox test look. Hexes are flat, saturated, and plastic/glossy (Fall Guys-adjacent). Lighting, sky, HUD panels, lobby, and overlays follow so the chrome is not left in the old gray.

Vertices are filleted at HEX_RADIUS * 0.16 on the terrain mesh and overlay rings — cloudy at the corners, still a hex. The top-to-side lip is a smaller fillet at HEX_RADIUS * 0.06 so the column still reads as a step; the bottom stays the elevation cut.

This is a first pass to evaluate, not a production art pipeline.

Idle plastic hexes, C + click HUD

Hover-before-click (presentation only)

Cluster click still fires every eligible perimeter; inland still contributes 0. The click is still a focus, not a destination.

Before that click:

  • Expand hover: participating perimeter highlighted, 11/10/9 on those branches, committed Share labeled, inland dimmed
  • Enemy hover: full target mask plus the shared fronts that will fire
  • Dispatch, ready-mode, and accounting are unchanged. Playtest risk 1 (focus-as-destination) stays the gate.

Expand hover: perimeters, 11/10/9, Share, inland dim

Attack hover: target mask and firing fronts

Contextual 52px strip

Idle no longer dumps C / Share / B / T / X in one muted line.

  • Idle: C + click only, once (click copy on the left, C cluster in the hint column)
  • Share / [] only on a valid expand/attack hover (and existing ready modes)
  • T only when one complete cluster has inland free infantry
  • X only with live orders intersecting the selection
  • B only with two strategic fronts
  • Attack hover plural is HEXES

Docs

docs/cluster-controls.md first, then docs/v1-ui-direction.md, docs/v1-ui-brief.md, and playtest notes for 2026-08-26.

Offline fixture captures for this PR live at docs/playtests/screenshots/ (idle.png, expand-hover.png, attack-hover.png). Recaptured after the vertex fillet and the top-to-side lip.

How to look

./scripts/run-client.sh --offline

Select a cluster (C), hover unclaimed ground, then hover an enemy. Idle HUD should stay C + click until those hovers/hints apply.

Offline screenshot scenes (native):

./scripts/run-client.sh --offline --screenshot /tmp/plastic-idle.png --screenshot-scene idle
./scripts/run-client.sh --offline --screenshot /tmp/plastic-expand-hover.png --screenshot-scene expand-hover
./scripts/run-client.sh --offline --screenshot /tmp/plastic-attack-hover.png --screenshot-scene attack-hover

Tests

cargo test -p game-client — hover preview payload, contextual strip copy, saturated palette, 11/10/9 overlay colors, fillet radius / still-a-hex outline, top lip vs elevation base. Native + wasm clippy clean for this crate.

Screenshots above are from the offline fixture via lavapipe (no hardware GPU in this environment).

Open in WebOpen in Cursor

devteapotand others added 7 commits August 26, 2026 14:23
I want a first visual identity we can actually evaluate: saturated glossy
hexes and a matching HUD, not the muted test graybox. Hovering expand or
attack now shows participating perimeters, 11/10/9 weights, committed Share,
and inland-zero before the click, without changing dispatch. The 52px strip
mode-switches so idle is C + click until Share, T, X, or B actually apply.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The live pointer was overwriting the staged cell, so the attack scene
looked like a random unclaimed hover. Forced hover plus a camera look-at
keeps the fixture frames on the frontier the HUD is describing.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
Idle, expand-hover, and attack-hover belong in docs/playtests/screenshots/
so the PR can render the plastic look and hover HUD from github.com.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The generic S-plural turned HEX into HEXS. Same suffix on reshape and
staged-target copy; CELL/FRONT/ORDER still take S.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The summary was repeating C cluster next to the hint column. Idle is now
click on the left and C cluster once on the right. Recaptured idle and
attack-hover so HEXES and the strip match what Designer will review.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.16 on the mesh ring and the overlay outlines. Cloudy at
the corners, still a hex — hover and selection follow the same radius
instead of sitting on the old points.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.06 from the flat top down onto the sides, smaller than the
plan fillet so the column still reads as a step. The base stays the
elevation cut — I am not rounding that.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
@devteapot
devteapot merged commit ed54a90 into mainAug 26, 2026
@devteapot
devteapot deleted the cursor/plastic-hexes-hover-hud-33dd branch August 26, 2026 15:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@devteapot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Plastic hexes, expand/attack hover preview, contextual HUD by devteapot · Pull Request #10 · devteapot/of · GitHub
Skip to content

Plastic hexes, expand/attack hover preview, contextual HUD - #10

Merged
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd
Aug 26, 2026
Merged

Plastic hexes, expand/attack hover preview, contextual HUD#10
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd

Conversation

@devteapot

@devteapotdevteapot commented Aug 26, 2026

Copy link
Copy Markdown
Owner

First visual identity pass plus the Game Designer / HUD holes, in one PR. No new mechanic, no sub-cluster surgery, no retask, no economy/fog/bots/production art pipeline.

Visual identity

Move the offline fixture off the muted graybox test look. Hexes are flat, saturated, and plastic/glossy (Fall Guys-adjacent). Lighting, sky, HUD panels, lobby, and overlays follow so the chrome is not left in the old gray.

Vertices are filleted at HEX_RADIUS * 0.16 on the terrain mesh and overlay rings — cloudy at the corners, still a hex. The top-to-side lip is a smaller fillet at HEX_RADIUS * 0.06 so the column still reads as a step; the bottom stays the elevation cut.

This is a first pass to evaluate, not a production art pipeline.

Idle plastic hexes, C + click HUD

Hover-before-click (presentation only)

Cluster click still fires every eligible perimeter; inland still contributes 0. The click is still a focus, not a destination.

Before that click:

  • Expand hover: participating perimeter highlighted, 11/10/9 on those branches, committed Share labeled, inland dimmed
  • Enemy hover: full target mask plus the shared fronts that will fire
  • Dispatch, ready-mode, and accounting are unchanged. Playtest risk 1 (focus-as-destination) stays the gate.

Expand hover: perimeters, 11/10/9, Share, inland dim

Attack hover: target mask and firing fronts

Contextual 52px strip

Idle no longer dumps C / Share / B / T / X in one muted line.

  • Idle: C + click only, once (click copy on the left, C cluster in the hint column)
  • Share / [] only on a valid expand/attack hover (and existing ready modes)
  • T only when one complete cluster has inland free infantry
  • X only with live orders intersecting the selection
  • B only with two strategic fronts
  • Attack hover plural is HEXES

Docs

docs/cluster-controls.md first, then docs/v1-ui-direction.md, docs/v1-ui-brief.md, and playtest notes for 2026-08-26.

Offline fixture captures for this PR live at docs/playtests/screenshots/ (idle.png, expand-hover.png, attack-hover.png). Recaptured after the vertex fillet and the top-to-side lip.

How to look

./scripts/run-client.sh --offline

Select a cluster (C), hover unclaimed ground, then hover an enemy. Idle HUD should stay C + click until those hovers/hints apply.

Offline screenshot scenes (native):

./scripts/run-client.sh --offline --screenshot /tmp/plastic-idle.png --screenshot-scene idle
./scripts/run-client.sh --offline --screenshot /tmp/plastic-expand-hover.png --screenshot-scene expand-hover
./scripts/run-client.sh --offline --screenshot /tmp/plastic-attack-hover.png --screenshot-scene attack-hover

Tests

cargo test -p game-client — hover preview payload, contextual strip copy, saturated palette, 11/10/9 overlay colors, fillet radius / still-a-hex outline, top lip vs elevation base. Native + wasm clippy clean for this crate.

Screenshots above are from the offline fixture via lavapipe (no hardware GPU in this environment).

Open in WebOpen in Cursor

devteapotand others added 7 commits August 26, 2026 14:23
I want a first visual identity we can actually evaluate: saturated glossy
hexes and a matching HUD, not the muted test graybox. Hovering expand or
attack now shows participating perimeters, 11/10/9 weights, committed Share,
and inland-zero before the click, without changing dispatch. The 52px strip
mode-switches so idle is C + click until Share, T, X, or B actually apply.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The live pointer was overwriting the staged cell, so the attack scene
looked like a random unclaimed hover. Forced hover plus a camera look-at
keeps the fixture frames on the frontier the HUD is describing.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
Idle, expand-hover, and attack-hover belong in docs/playtests/screenshots/
so the PR can render the plastic look and hover HUD from github.com.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The generic S-plural turned HEX into HEXS. Same suffix on reshape and
staged-target copy; CELL/FRONT/ORDER still take S.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The summary was repeating C cluster next to the hint column. Idle is now
click on the left and C cluster once on the right. Recaptured idle and
attack-hover so HEXES and the strip match what Designer will review.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.16 on the mesh ring and the overlay outlines. Cloudy at
the corners, still a hex — hover and selection follow the same radius
instead of sitting on the old points.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.06 from the flat top down onto the sides, smaller than the
plan fillet so the column still reads as a step. The base stays the
elevation cut — I am not rounding that.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
@devteapot
devteapot merged commit ed54a90 into mainAug 26, 2026
@devteapot
devteapot deleted the cursor/plastic-hexes-hover-hud-33dd branch August 26, 2026 15:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@devteapot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Plastic hexes, expand/attack hover preview, contextual HUD by devteapot · Pull Request #10 · devteapot/of · GitHub
Skip to content

Plastic hexes, expand/attack hover preview, contextual HUD - #10

Merged
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd
Aug 26, 2026
Merged

Plastic hexes, expand/attack hover preview, contextual HUD#10
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd

Conversation

@devteapot

@devteapotdevteapot commented Aug 26, 2026

Copy link
Copy Markdown
Owner

First visual identity pass plus the Game Designer / HUD holes, in one PR. No new mechanic, no sub-cluster surgery, no retask, no economy/fog/bots/production art pipeline.

Visual identity

Move the offline fixture off the muted graybox test look. Hexes are flat, saturated, and plastic/glossy (Fall Guys-adjacent). Lighting, sky, HUD panels, lobby, and overlays follow so the chrome is not left in the old gray.

Vertices are filleted at HEX_RADIUS * 0.16 on the terrain mesh and overlay rings — cloudy at the corners, still a hex. The top-to-side lip is a smaller fillet at HEX_RADIUS * 0.06 so the column still reads as a step; the bottom stays the elevation cut.

This is a first pass to evaluate, not a production art pipeline.

Idle plastic hexes, C + click HUD

Hover-before-click (presentation only)

Cluster click still fires every eligible perimeter; inland still contributes 0. The click is still a focus, not a destination.

Before that click:

  • Expand hover: participating perimeter highlighted, 11/10/9 on those branches, committed Share labeled, inland dimmed
  • Enemy hover: full target mask plus the shared fronts that will fire
  • Dispatch, ready-mode, and accounting are unchanged. Playtest risk 1 (focus-as-destination) stays the gate.

Expand hover: perimeters, 11/10/9, Share, inland dim

Attack hover: target mask and firing fronts

Contextual 52px strip

Idle no longer dumps C / Share / B / T / X in one muted line.

  • Idle: C + click only, once (click copy on the left, C cluster in the hint column)
  • Share / [] only on a valid expand/attack hover (and existing ready modes)
  • T only when one complete cluster has inland free infantry
  • X only with live orders intersecting the selection
  • B only with two strategic fronts
  • Attack hover plural is HEXES

Docs

docs/cluster-controls.md first, then docs/v1-ui-direction.md, docs/v1-ui-brief.md, and playtest notes for 2026-08-26.

Offline fixture captures for this PR live at docs/playtests/screenshots/ (idle.png, expand-hover.png, attack-hover.png). Recaptured after the vertex fillet and the top-to-side lip.

How to look

./scripts/run-client.sh --offline

Select a cluster (C), hover unclaimed ground, then hover an enemy. Idle HUD should stay C + click until those hovers/hints apply.

Offline screenshot scenes (native):

./scripts/run-client.sh --offline --screenshot /tmp/plastic-idle.png --screenshot-scene idle
./scripts/run-client.sh --offline --screenshot /tmp/plastic-expand-hover.png --screenshot-scene expand-hover
./scripts/run-client.sh --offline --screenshot /tmp/plastic-attack-hover.png --screenshot-scene attack-hover

Tests

cargo test -p game-client — hover preview payload, contextual strip copy, saturated palette, 11/10/9 overlay colors, fillet radius / still-a-hex outline, top lip vs elevation base. Native + wasm clippy clean for this crate.

Screenshots above are from the offline fixture via lavapipe (no hardware GPU in this environment).

Open in WebOpen in Cursor

devteapotand others added 7 commits August 26, 2026 14:23
I want a first visual identity we can actually evaluate: saturated glossy
hexes and a matching HUD, not the muted test graybox. Hovering expand or
attack now shows participating perimeters, 11/10/9 weights, committed Share,
and inland-zero before the click, without changing dispatch. The 52px strip
mode-switches so idle is C + click until Share, T, X, or B actually apply.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The live pointer was overwriting the staged cell, so the attack scene
looked like a random unclaimed hover. Forced hover plus a camera look-at
keeps the fixture frames on the frontier the HUD is describing.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
Idle, expand-hover, and attack-hover belong in docs/playtests/screenshots/
so the PR can render the plastic look and hover HUD from github.com.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The generic S-plural turned HEX into HEXS. Same suffix on reshape and
staged-target copy; CELL/FRONT/ORDER still take S.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The summary was repeating C cluster next to the hint column. Idle is now
click on the left and C cluster once on the right. Recaptured idle and
attack-hover so HEXES and the strip match what Designer will review.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.16 on the mesh ring and the overlay outlines. Cloudy at
the corners, still a hex — hover and selection follow the same radius
instead of sitting on the old points.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.06 from the flat top down onto the sides, smaller than the
plan fillet so the column still reads as a step. The base stays the
elevation cut — I am not rounding that.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
@devteapot
devteapot merged commit ed54a90 into mainAug 26, 2026
@devteapot
devteapot deleted the cursor/plastic-hexes-hover-hud-33dd branch August 26, 2026 15:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@devteapot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Plastic hexes, expand/attack hover preview, contextual HUD by devteapot · Pull Request #10 · devteapot/of · GitHub
Skip to content

Plastic hexes, expand/attack hover preview, contextual HUD - #10

Merged
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd
Aug 26, 2026
Merged

Plastic hexes, expand/attack hover preview, contextual HUD#10
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd

Conversation

@devteapot

@devteapotdevteapot commented Aug 26, 2026

Copy link
Copy Markdown
Owner

First visual identity pass plus the Game Designer / HUD holes, in one PR. No new mechanic, no sub-cluster surgery, no retask, no economy/fog/bots/production art pipeline.

Visual identity

Move the offline fixture off the muted graybox test look. Hexes are flat, saturated, and plastic/glossy (Fall Guys-adjacent). Lighting, sky, HUD panels, lobby, and overlays follow so the chrome is not left in the old gray.

Vertices are filleted at HEX_RADIUS * 0.16 on the terrain mesh and overlay rings — cloudy at the corners, still a hex. The top-to-side lip is a smaller fillet at HEX_RADIUS * 0.06 so the column still reads as a step; the bottom stays the elevation cut.

This is a first pass to evaluate, not a production art pipeline.

Idle plastic hexes, C + click HUD

Hover-before-click (presentation only)

Cluster click still fires every eligible perimeter; inland still contributes 0. The click is still a focus, not a destination.

Before that click:

  • Expand hover: participating perimeter highlighted, 11/10/9 on those branches, committed Share labeled, inland dimmed
  • Enemy hover: full target mask plus the shared fronts that will fire
  • Dispatch, ready-mode, and accounting are unchanged. Playtest risk 1 (focus-as-destination) stays the gate.

Expand hover: perimeters, 11/10/9, Share, inland dim

Attack hover: target mask and firing fronts

Contextual 52px strip

Idle no longer dumps C / Share / B / T / X in one muted line.

  • Idle: C + click only, once (click copy on the left, C cluster in the hint column)
  • Share / [] only on a valid expand/attack hover (and existing ready modes)
  • T only when one complete cluster has inland free infantry
  • X only with live orders intersecting the selection
  • B only with two strategic fronts
  • Attack hover plural is HEXES

Docs

docs/cluster-controls.md first, then docs/v1-ui-direction.md, docs/v1-ui-brief.md, and playtest notes for 2026-08-26.

Offline fixture captures for this PR live at docs/playtests/screenshots/ (idle.png, expand-hover.png, attack-hover.png). Recaptured after the vertex fillet and the top-to-side lip.

How to look

./scripts/run-client.sh --offline

Select a cluster (C), hover unclaimed ground, then hover an enemy. Idle HUD should stay C + click until those hovers/hints apply.

Offline screenshot scenes (native):

./scripts/run-client.sh --offline --screenshot /tmp/plastic-idle.png --screenshot-scene idle
./scripts/run-client.sh --offline --screenshot /tmp/plastic-expand-hover.png --screenshot-scene expand-hover
./scripts/run-client.sh --offline --screenshot /tmp/plastic-attack-hover.png --screenshot-scene attack-hover

Tests

cargo test -p game-client — hover preview payload, contextual strip copy, saturated palette, 11/10/9 overlay colors, fillet radius / still-a-hex outline, top lip vs elevation base. Native + wasm clippy clean for this crate.

Screenshots above are from the offline fixture via lavapipe (no hardware GPU in this environment).

Open in WebOpen in Cursor

devteapotand others added 7 commits August 26, 2026 14:23
I want a first visual identity we can actually evaluate: saturated glossy
hexes and a matching HUD, not the muted test graybox. Hovering expand or
attack now shows participating perimeters, 11/10/9 weights, committed Share,
and inland-zero before the click, without changing dispatch. The 52px strip
mode-switches so idle is C + click until Share, T, X, or B actually apply.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The live pointer was overwriting the staged cell, so the attack scene
looked like a random unclaimed hover. Forced hover plus a camera look-at
keeps the fixture frames on the frontier the HUD is describing.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
Idle, expand-hover, and attack-hover belong in docs/playtests/screenshots/
so the PR can render the plastic look and hover HUD from github.com.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The generic S-plural turned HEX into HEXS. Same suffix on reshape and
staged-target copy; CELL/FRONT/ORDER still take S.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The summary was repeating C cluster next to the hint column. Idle is now
click on the left and C cluster once on the right. Recaptured idle and
attack-hover so HEXES and the strip match what Designer will review.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.16 on the mesh ring and the overlay outlines. Cloudy at
the corners, still a hex — hover and selection follow the same radius
instead of sitting on the old points.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.06 from the flat top down onto the sides, smaller than the
plan fillet so the column still reads as a step. The base stays the
elevation cut — I am not rounding that.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
@devteapot
devteapot merged commit ed54a90 into mainAug 26, 2026
@devteapot
devteapot deleted the cursor/plastic-hexes-hover-hud-33dd branch August 26, 2026 15:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@devteapot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Plastic hexes, expand/attack hover preview, contextual HUD by devteapot · Pull Request #10 · devteapot/of · GitHub
Skip to content

Plastic hexes, expand/attack hover preview, contextual HUD - #10

Merged
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd
Aug 26, 2026
Merged

Plastic hexes, expand/attack hover preview, contextual HUD#10
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd

Conversation

@devteapot

@devteapotdevteapot commented Aug 26, 2026

Copy link
Copy Markdown
Owner

First visual identity pass plus the Game Designer / HUD holes, in one PR. No new mechanic, no sub-cluster surgery, no retask, no economy/fog/bots/production art pipeline.

Visual identity

Move the offline fixture off the muted graybox test look. Hexes are flat, saturated, and plastic/glossy (Fall Guys-adjacent). Lighting, sky, HUD panels, lobby, and overlays follow so the chrome is not left in the old gray.

Vertices are filleted at HEX_RADIUS * 0.16 on the terrain mesh and overlay rings — cloudy at the corners, still a hex. The top-to-side lip is a smaller fillet at HEX_RADIUS * 0.06 so the column still reads as a step; the bottom stays the elevation cut.

This is a first pass to evaluate, not a production art pipeline.

Idle plastic hexes, C + click HUD

Hover-before-click (presentation only)

Cluster click still fires every eligible perimeter; inland still contributes 0. The click is still a focus, not a destination.

Before that click:

  • Expand hover: participating perimeter highlighted, 11/10/9 on those branches, committed Share labeled, inland dimmed
  • Enemy hover: full target mask plus the shared fronts that will fire
  • Dispatch, ready-mode, and accounting are unchanged. Playtest risk 1 (focus-as-destination) stays the gate.

Expand hover: perimeters, 11/10/9, Share, inland dim

Attack hover: target mask and firing fronts

Contextual 52px strip

Idle no longer dumps C / Share / B / T / X in one muted line.

  • Idle: C + click only, once (click copy on the left, C cluster in the hint column)
  • Share / [] only on a valid expand/attack hover (and existing ready modes)
  • T only when one complete cluster has inland free infantry
  • X only with live orders intersecting the selection
  • B only with two strategic fronts
  • Attack hover plural is HEXES

Docs

docs/cluster-controls.md first, then docs/v1-ui-direction.md, docs/v1-ui-brief.md, and playtest notes for 2026-08-26.

Offline fixture captures for this PR live at docs/playtests/screenshots/ (idle.png, expand-hover.png, attack-hover.png). Recaptured after the vertex fillet and the top-to-side lip.

How to look

./scripts/run-client.sh --offline

Select a cluster (C), hover unclaimed ground, then hover an enemy. Idle HUD should stay C + click until those hovers/hints apply.

Offline screenshot scenes (native):

./scripts/run-client.sh --offline --screenshot /tmp/plastic-idle.png --screenshot-scene idle
./scripts/run-client.sh --offline --screenshot /tmp/plastic-expand-hover.png --screenshot-scene expand-hover
./scripts/run-client.sh --offline --screenshot /tmp/plastic-attack-hover.png --screenshot-scene attack-hover

Tests

cargo test -p game-client — hover preview payload, contextual strip copy, saturated palette, 11/10/9 overlay colors, fillet radius / still-a-hex outline, top lip vs elevation base. Native + wasm clippy clean for this crate.

Screenshots above are from the offline fixture via lavapipe (no hardware GPU in this environment).

Open in WebOpen in Cursor

devteapotand others added 7 commits August 26, 2026 14:23
I want a first visual identity we can actually evaluate: saturated glossy
hexes and a matching HUD, not the muted test graybox. Hovering expand or
attack now shows participating perimeters, 11/10/9 weights, committed Share,
and inland-zero before the click, without changing dispatch. The 52px strip
mode-switches so idle is C + click until Share, T, X, or B actually apply.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The live pointer was overwriting the staged cell, so the attack scene
looked like a random unclaimed hover. Forced hover plus a camera look-at
keeps the fixture frames on the frontier the HUD is describing.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
Idle, expand-hover, and attack-hover belong in docs/playtests/screenshots/
so the PR can render the plastic look and hover HUD from github.com.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The generic S-plural turned HEX into HEXS. Same suffix on reshape and
staged-target copy; CELL/FRONT/ORDER still take S.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The summary was repeating C cluster next to the hint column. Idle is now
click on the left and C cluster once on the right. Recaptured idle and
attack-hover so HEXES and the strip match what Designer will review.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.16 on the mesh ring and the overlay outlines. Cloudy at
the corners, still a hex — hover and selection follow the same radius
instead of sitting on the old points.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.06 from the flat top down onto the sides, smaller than the
plan fillet so the column still reads as a step. The base stays the
elevation cut — I am not rounding that.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
@devteapot
devteapot merged commit ed54a90 into mainAug 26, 2026
@devteapot
devteapot deleted the cursor/plastic-hexes-hover-hud-33dd branch August 26, 2026 15:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@devteapot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Plastic hexes, expand/attack hover preview, contextual HUD by devteapot · Pull Request #10 · devteapot/of · GitHub
Skip to content

Plastic hexes, expand/attack hover preview, contextual HUD - #10

Merged
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd
Aug 26, 2026
Merged

Plastic hexes, expand/attack hover preview, contextual HUD#10
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd

Conversation

@devteapot

@devteapotdevteapot commented Aug 26, 2026

Copy link
Copy Markdown
Owner

First visual identity pass plus the Game Designer / HUD holes, in one PR. No new mechanic, no sub-cluster surgery, no retask, no economy/fog/bots/production art pipeline.

Visual identity

Move the offline fixture off the muted graybox test look. Hexes are flat, saturated, and plastic/glossy (Fall Guys-adjacent). Lighting, sky, HUD panels, lobby, and overlays follow so the chrome is not left in the old gray.

Vertices are filleted at HEX_RADIUS * 0.16 on the terrain mesh and overlay rings — cloudy at the corners, still a hex. The top-to-side lip is a smaller fillet at HEX_RADIUS * 0.06 so the column still reads as a step; the bottom stays the elevation cut.

This is a first pass to evaluate, not a production art pipeline.

Idle plastic hexes, C + click HUD

Hover-before-click (presentation only)

Cluster click still fires every eligible perimeter; inland still contributes 0. The click is still a focus, not a destination.

Before that click:

  • Expand hover: participating perimeter highlighted, 11/10/9 on those branches, committed Share labeled, inland dimmed
  • Enemy hover: full target mask plus the shared fronts that will fire
  • Dispatch, ready-mode, and accounting are unchanged. Playtest risk 1 (focus-as-destination) stays the gate.

Expand hover: perimeters, 11/10/9, Share, inland dim

Attack hover: target mask and firing fronts

Contextual 52px strip

Idle no longer dumps C / Share / B / T / X in one muted line.

  • Idle: C + click only, once (click copy on the left, C cluster in the hint column)
  • Share / [] only on a valid expand/attack hover (and existing ready modes)
  • T only when one complete cluster has inland free infantry
  • X only with live orders intersecting the selection
  • B only with two strategic fronts
  • Attack hover plural is HEXES

Docs

docs/cluster-controls.md first, then docs/v1-ui-direction.md, docs/v1-ui-brief.md, and playtest notes for 2026-08-26.

Offline fixture captures for this PR live at docs/playtests/screenshots/ (idle.png, expand-hover.png, attack-hover.png). Recaptured after the vertex fillet and the top-to-side lip.

How to look

./scripts/run-client.sh --offline

Select a cluster (C), hover unclaimed ground, then hover an enemy. Idle HUD should stay C + click until those hovers/hints apply.

Offline screenshot scenes (native):

./scripts/run-client.sh --offline --screenshot /tmp/plastic-idle.png --screenshot-scene idle
./scripts/run-client.sh --offline --screenshot /tmp/plastic-expand-hover.png --screenshot-scene expand-hover
./scripts/run-client.sh --offline --screenshot /tmp/plastic-attack-hover.png --screenshot-scene attack-hover

Tests

cargo test -p game-client — hover preview payload, contextual strip copy, saturated palette, 11/10/9 overlay colors, fillet radius / still-a-hex outline, top lip vs elevation base. Native + wasm clippy clean for this crate.

Screenshots above are from the offline fixture via lavapipe (no hardware GPU in this environment).

Open in WebOpen in Cursor

devteapotand others added 7 commits August 26, 2026 14:23
I want a first visual identity we can actually evaluate: saturated glossy
hexes and a matching HUD, not the muted test graybox. Hovering expand or
attack now shows participating perimeters, 11/10/9 weights, committed Share,
and inland-zero before the click, without changing dispatch. The 52px strip
mode-switches so idle is C + click until Share, T, X, or B actually apply.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The live pointer was overwriting the staged cell, so the attack scene
looked like a random unclaimed hover. Forced hover plus a camera look-at
keeps the fixture frames on the frontier the HUD is describing.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
Idle, expand-hover, and attack-hover belong in docs/playtests/screenshots/
so the PR can render the plastic look and hover HUD from github.com.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The generic S-plural turned HEX into HEXS. Same suffix on reshape and
staged-target copy; CELL/FRONT/ORDER still take S.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The summary was repeating C cluster next to the hint column. Idle is now
click on the left and C cluster once on the right. Recaptured idle and
attack-hover so HEXES and the strip match what Designer will review.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.16 on the mesh ring and the overlay outlines. Cloudy at
the corners, still a hex — hover and selection follow the same radius
instead of sitting on the old points.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.06 from the flat top down onto the sides, smaller than the
plan fillet so the column still reads as a step. The base stays the
elevation cut — I am not rounding that.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
@devteapot
devteapot merged commit ed54a90 into mainAug 26, 2026
@devteapot
devteapot deleted the cursor/plastic-hexes-hover-hud-33dd branch August 26, 2026 15:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@devteapot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Plastic hexes, expand/attack hover preview, contextual HUD by devteapot · Pull Request #10 · devteapot/of · GitHub
Skip to content

Plastic hexes, expand/attack hover preview, contextual HUD - #10

Merged
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd
Aug 26, 2026
Merged

Plastic hexes, expand/attack hover preview, contextual HUD#10
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd

Conversation

@devteapot

@devteapotdevteapot commented Aug 26, 2026

Copy link
Copy Markdown
Owner

First visual identity pass plus the Game Designer / HUD holes, in one PR. No new mechanic, no sub-cluster surgery, no retask, no economy/fog/bots/production art pipeline.

Visual identity

Move the offline fixture off the muted graybox test look. Hexes are flat, saturated, and plastic/glossy (Fall Guys-adjacent). Lighting, sky, HUD panels, lobby, and overlays follow so the chrome is not left in the old gray.

Vertices are filleted at HEX_RADIUS * 0.16 on the terrain mesh and overlay rings — cloudy at the corners, still a hex. The top-to-side lip is a smaller fillet at HEX_RADIUS * 0.06 so the column still reads as a step; the bottom stays the elevation cut.

This is a first pass to evaluate, not a production art pipeline.

Idle plastic hexes, C + click HUD

Hover-before-click (presentation only)

Cluster click still fires every eligible perimeter; inland still contributes 0. The click is still a focus, not a destination.

Before that click:

  • Expand hover: participating perimeter highlighted, 11/10/9 on those branches, committed Share labeled, inland dimmed
  • Enemy hover: full target mask plus the shared fronts that will fire
  • Dispatch, ready-mode, and accounting are unchanged. Playtest risk 1 (focus-as-destination) stays the gate.

Expand hover: perimeters, 11/10/9, Share, inland dim

Attack hover: target mask and firing fronts

Contextual 52px strip

Idle no longer dumps C / Share / B / T / X in one muted line.

  • Idle: C + click only, once (click copy on the left, C cluster in the hint column)
  • Share / [] only on a valid expand/attack hover (and existing ready modes)
  • T only when one complete cluster has inland free infantry
  • X only with live orders intersecting the selection
  • B only with two strategic fronts
  • Attack hover plural is HEXES

Docs

docs/cluster-controls.md first, then docs/v1-ui-direction.md, docs/v1-ui-brief.md, and playtest notes for 2026-08-26.

Offline fixture captures for this PR live at docs/playtests/screenshots/ (idle.png, expand-hover.png, attack-hover.png). Recaptured after the vertex fillet and the top-to-side lip.

How to look

./scripts/run-client.sh --offline

Select a cluster (C), hover unclaimed ground, then hover an enemy. Idle HUD should stay C + click until those hovers/hints apply.

Offline screenshot scenes (native):

./scripts/run-client.sh --offline --screenshot /tmp/plastic-idle.png --screenshot-scene idle
./scripts/run-client.sh --offline --screenshot /tmp/plastic-expand-hover.png --screenshot-scene expand-hover
./scripts/run-client.sh --offline --screenshot /tmp/plastic-attack-hover.png --screenshot-scene attack-hover

Tests

cargo test -p game-client — hover preview payload, contextual strip copy, saturated palette, 11/10/9 overlay colors, fillet radius / still-a-hex outline, top lip vs elevation base. Native + wasm clippy clean for this crate.

Screenshots above are from the offline fixture via lavapipe (no hardware GPU in this environment).

Open in WebOpen in Cursor

devteapotand others added 7 commits August 26, 2026 14:23
I want a first visual identity we can actually evaluate: saturated glossy
hexes and a matching HUD, not the muted test graybox. Hovering expand or
attack now shows participating perimeters, 11/10/9 weights, committed Share,
and inland-zero before the click, without changing dispatch. The 52px strip
mode-switches so idle is C + click until Share, T, X, or B actually apply.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The live pointer was overwriting the staged cell, so the attack scene
looked like a random unclaimed hover. Forced hover plus a camera look-at
keeps the fixture frames on the frontier the HUD is describing.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
Idle, expand-hover, and attack-hover belong in docs/playtests/screenshots/
so the PR can render the plastic look and hover HUD from github.com.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The generic S-plural turned HEX into HEXS. Same suffix on reshape and
staged-target copy; CELL/FRONT/ORDER still take S.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The summary was repeating C cluster next to the hint column. Idle is now
click on the left and C cluster once on the right. Recaptured idle and
attack-hover so HEXES and the strip match what Designer will review.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.16 on the mesh ring and the overlay outlines. Cloudy at
the corners, still a hex — hover and selection follow the same radius
instead of sitting on the old points.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.06 from the flat top down onto the sides, smaller than the
plan fillet so the column still reads as a step. The base stays the
elevation cut — I am not rounding that.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
@devteapot
devteapot merged commit ed54a90 into mainAug 26, 2026
@devteapot
devteapot deleted the cursor/plastic-hexes-hover-hud-33dd branch August 26, 2026 15:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@devteapot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Plastic hexes, expand/attack hover preview, contextual HUD by devteapot · Pull Request #10 · devteapot/of · GitHub
Skip to content

Plastic hexes, expand/attack hover preview, contextual HUD - #10

Merged
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd
Aug 26, 2026
Merged

Plastic hexes, expand/attack hover preview, contextual HUD#10
devteapot merged 7 commits into
mainfrom
cursor/plastic-hexes-hover-hud-33dd

Conversation

@devteapot

@devteapotdevteapot commented Aug 26, 2026

Copy link
Copy Markdown
Owner

First visual identity pass plus the Game Designer / HUD holes, in one PR. No new mechanic, no sub-cluster surgery, no retask, no economy/fog/bots/production art pipeline.

Visual identity

Move the offline fixture off the muted graybox test look. Hexes are flat, saturated, and plastic/glossy (Fall Guys-adjacent). Lighting, sky, HUD panels, lobby, and overlays follow so the chrome is not left in the old gray.

Vertices are filleted at HEX_RADIUS * 0.16 on the terrain mesh and overlay rings — cloudy at the corners, still a hex. The top-to-side lip is a smaller fillet at HEX_RADIUS * 0.06 so the column still reads as a step; the bottom stays the elevation cut.

This is a first pass to evaluate, not a production art pipeline.

Idle plastic hexes, C + click HUD

Hover-before-click (presentation only)

Cluster click still fires every eligible perimeter; inland still contributes 0. The click is still a focus, not a destination.

Before that click:

  • Expand hover: participating perimeter highlighted, 11/10/9 on those branches, committed Share labeled, inland dimmed
  • Enemy hover: full target mask plus the shared fronts that will fire
  • Dispatch, ready-mode, and accounting are unchanged. Playtest risk 1 (focus-as-destination) stays the gate.

Expand hover: perimeters, 11/10/9, Share, inland dim

Attack hover: target mask and firing fronts

Contextual 52px strip

Idle no longer dumps C / Share / B / T / X in one muted line.

  • Idle: C + click only, once (click copy on the left, C cluster in the hint column)
  • Share / [] only on a valid expand/attack hover (and existing ready modes)
  • T only when one complete cluster has inland free infantry
  • X only with live orders intersecting the selection
  • B only with two strategic fronts
  • Attack hover plural is HEXES

Docs

docs/cluster-controls.md first, then docs/v1-ui-direction.md, docs/v1-ui-brief.md, and playtest notes for 2026-08-26.

Offline fixture captures for this PR live at docs/playtests/screenshots/ (idle.png, expand-hover.png, attack-hover.png). Recaptured after the vertex fillet and the top-to-side lip.

How to look

./scripts/run-client.sh --offline

Select a cluster (C), hover unclaimed ground, then hover an enemy. Idle HUD should stay C + click until those hovers/hints apply.

Offline screenshot scenes (native):

./scripts/run-client.sh --offline --screenshot /tmp/plastic-idle.png --screenshot-scene idle
./scripts/run-client.sh --offline --screenshot /tmp/plastic-expand-hover.png --screenshot-scene expand-hover
./scripts/run-client.sh --offline --screenshot /tmp/plastic-attack-hover.png --screenshot-scene attack-hover

Tests

cargo test -p game-client — hover preview payload, contextual strip copy, saturated palette, 11/10/9 overlay colors, fillet radius / still-a-hex outline, top lip vs elevation base. Native + wasm clippy clean for this crate.

Screenshots above are from the offline fixture via lavapipe (no hardware GPU in this environment).

Open in WebOpen in Cursor

devteapotand others added 7 commits August 26, 2026 14:23
I want a first visual identity we can actually evaluate: saturated glossy
hexes and a matching HUD, not the muted test graybox. Hovering expand or
attack now shows participating perimeters, 11/10/9 weights, committed Share,
and inland-zero before the click, without changing dispatch. The 52px strip
mode-switches so idle is C + click until Share, T, X, or B actually apply.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The live pointer was overwriting the staged cell, so the attack scene
looked like a random unclaimed hover. Forced hover plus a camera look-at
keeps the fixture frames on the frontier the HUD is describing.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
Idle, expand-hover, and attack-hover belong in docs/playtests/screenshots/
so the PR can render the plastic look and hover HUD from github.com.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The generic S-plural turned HEX into HEXS. Same suffix on reshape and
staged-target copy; CELL/FRONT/ORDER still take S.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
The summary was repeating C cluster next to the hint column. Idle is now
click on the left and C cluster once on the right. Recaptured idle and
attack-hover so HEXES and the strip match what Designer will review.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.16 on the mesh ring and the overlay outlines. Cloudy at
the corners, still a hex — hover and selection follow the same radius
instead of sitting on the old points.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
HEX_RADIUS * 0.06 from the flat top down onto the sides, smaller than the
plan fillet so the column still reads as a step. The base stays the
elevation cut — I am not rounding that.
Co-authored-by: Diego Carlino <devteapot@users.noreply.github.com>
@devteapot
devteapot merged commit ed54a90 into mainAug 26, 2026
@devteapot
devteapot deleted the cursor/plastic-hexes-hover-hud-33dd branch August 26, 2026 15:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@devteapot