Skip to content

feat: per-player buy classification, AWP-hold rate, grenade icons & glass UI#4

Open
EytleBB wants to merge 4 commits into
mainfrom
feat/buy-classification-awp-layout
Open

feat: per-player buy classification, AWP-hold rate, grenade icons & glass UI#4
EytleBB wants to merge 4 commits into
mainfrom
feat/buy-classification-awp-layout

Conversation

@EytleBB

@EytleBB EytleBB commented Jun 25, 2026

Copy link
Copy Markdown
Owner

Consolidates the buy-classification / AWP-layout feature branch.

Changes

Round classification & stats

  • Per-player buy classification (personal equip ≥ EQ_BUY_MIN), 2 kept round types (CT/T)
  • AWP-hold rate (rounds player ever held an AWP / total), replaces sparse CT-side AWP-kill ratio
  • Merged-pistol overlay: all scanned players' pistol rounds on one canvas, per-player colors + legend

Layout & UI

  • Tabbed single-canvas layout (merged pistol + up to 5 opponents)
  • Frosted-glass UI redesign, sticky header, unified CT/T toggle, global play/pause + draggable scrubber
  • Playback speed control (1/2/4/8×), refreshed color palette, stat labels (K/D, 持狙, Buy Round)

Grenade visualization

  • White in-flight glyphs along nade arcs
  • Smoke/molotov post-detonation area art (map_smoke/inferno) scaled to coverage radius
  • New GET /icons/<path> route + ICONS_DIR; SVG assets in radar/icons/

Notes

  • Canvas replay has no headless test — verify visually via replay_test.html or a live scan.

🤖 Generated with Claude Code

claude added 4 commits June 25, 2026 01:06
- classify_rounds: judge economy on the target's own freeze-end equip, not
  team average. Two kept types only: Pistol (half opener, always kept) and Buy
  (personal equip >= EQ_BUY_MIN=2000). Non-pistol rounds below the floor are
  dropped (rtype=None) but keep their real side so half/pistol tracking holds.
  Downstream position/grenade/death filters now require side AND rtype.
- combat: replace sparse CT-side AWP-kill ratio with AWP-hold rate = rounds
  where the player ever held an AWP (inventory tick field) / total rounds played
  (both sides). Returns {awp_rounds, total_rounds}; aggregate sums both.
- frontend: unified CT/T toggle in the header drives every canvas at once;
  merged pistol overlay on top (all scanned players' pistols, one color each +
  legend); each player card keeps a single Buy canvas. replay.js honors a
  per-round color override for the merged view.
- tests + CLAUDE.md updated to the new schema. Verified on the fixture demo
  (AWP-hold 52.9% for the team AWPer) and via a seeded headless-browser run of
  both CT and T views. 23 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VhXbxCyuCVE1dBhvLGAeeW
Replace the scroll-through stack with a top button row that switches between
one large canvas at a time: 手枪局 (merged pistol overlay) + one tab per scanned
opponent (their Buy rounds). Only the active view renders to screen; the unified
CT/T header toggle still drives every canvas. Canvas is height-bounded
(max-height: calc(100vh - 170px)) so it fills the panel.

Verified via a 5-player seeded headless-browser run: 6 tabs, exactly one view
visible, 830x830 active canvas, per-opponent stats header, switching works.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VhXbxCyuCVE1dBhvLGAeeW
- replay.js: white in-flight glyphs along nade arcs; smoke/molotov
  post-detonation area art (map_smoke/inferno) scaled to coverage radius
  (smoke 171.81, molotov 80.5 game-units); /icons lazy-load + cache
- web_server.py + config.py: ICONS_DIR + GET /icons/<path> route
- app.js: global playback speed control (1/2/4/8x); refreshed player
  color palette; stat labels (K/D, 持狙, Buy Round)
- index.html: frosted-glass UI redesign, sticky header, speed toggle
- radar/icons/: grenade SVG assets (smoke, flash, he, molotov, inferno, etc.)
- CLAUDE.md: document /icons route and in-flight icon behavior

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to 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.

2 participants