Weapons: selectable weapon types per hardpoint (cb-6bd) #3

Merged
forgejo-admin merged 2 commits from weapons into main 2026-07-04 02:13:24 +00:00

Hardpoints were just positions drawn as a plain rectangle. Now each hardpoint mounts a real weapon, selectable per hardpoint, with a distinct neon-styled model.

Weapon types

  • laser — twin slim barrels + hot muzzle glow
  • raybeam — flared emitter, glowing lens, projected beam cone
  • missile — boxy launcher pod with three warhead tips
  • chaff — dispenser block, canister mouths, a fan of burst sparks
  • grapple — short arm ending in a two-prong pincer

Wiring

  • Hardpoint.weapon: WeaponType added to the ShipSpec genome (spec.ts, WEAPON_TYPES).
  • Renderer draws each type on the body + additive glow layers, mirrored per bilateral symmetry (renderer.ts).
  • Randomizer assigns a random type per hardpoint (randomizer.ts).
  • Tweak panel gets a per-hardpoint weapon selector (ControlsPanel.tsx).
  • Backward compatible: renderer + panel default a missing weapon to laser, so old saved/imported specs still render.

Verification

  • npm run typecheck — clean
  • npx tsx src/ship/randomizer.check.ts — passes (now asserts every hardpoint has a valid weapon)
  • npm run build — green

🤖 Generated with Claude Code

Hardpoints were just positions drawn as a plain rectangle. Now each hardpoint mounts a real weapon, selectable per hardpoint, with a distinct neon-styled model. ## Weapon types - **laser** — twin slim barrels + hot muzzle glow - **raybeam** — flared emitter, glowing lens, projected beam cone - **missile** — boxy launcher pod with three warhead tips - **chaff** — dispenser block, canister mouths, a fan of burst sparks - **grapple** — short arm ending in a two-prong pincer ## Wiring - `Hardpoint.weapon: WeaponType` added to the ShipSpec genome (`spec.ts`, `WEAPON_TYPES`). - Renderer draws each type on the body + additive glow layers, mirrored per bilateral symmetry (`renderer.ts`). - Randomizer assigns a random type per hardpoint (`randomizer.ts`). - Tweak panel gets a per-hardpoint weapon selector (`ControlsPanel.tsx`). - Backward compatible: renderer + panel default a missing `weapon` to `laser`, so old saved/imported specs still render. ## Verification - `npm run typecheck` — clean - `npx tsx src/ship/randomizer.check.ts` — passes (now asserts every hardpoint has a valid weapon) - `npm run build` — green 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Add a weapon field to Hardpoint (laser, raybeam, missile, chaff, grapple),
each drawn as a distinct neon-styled model on the body + glow layers. Wired
into the randomizer (random type per hardpoint) and the tweak panel (per-
hardpoint selector). Renderer defaults missing weapon to laser so pre-existing
saved/imported specs still render.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
forgejo-admin deleted branch weapons 2026-07-04 02:13:24 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
celilo/celilo-blast!3
No description provided.