Add REQ-BLD-DEMOLISH-BOX: while in demolish mode, click-and-drag a
selection box and demolish every covered building and construction site
on mouse-up. Unify the single-click demolish (REQ-BLD-DEMOLISH-CLICK)
into the same path so a click is a 1x1 box that resolves on release.
- Reuse the existing box-select state and rectangle render; branch on
demolish mode in mouseReleaseEvent to demolish instead of select.
- Extract buildingsInBox() helper shared by the select-release,
demolish-release, and demolish-drag tint paths (removes the inline
box-intersection loop duplicated in mouseReleaseEvent).
- Tint all covered buildings/sites during the demolish drag; HQ is
excluded from demolition per REQ-BLD-DEMOLISH.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyCu8vwChKMbLJQ3xosYEN
Spell out REQ-BLD-DEMOLISH-CLICK (single-click demolish in demolish
mode) and REQ-BLD-DEMOLISH-BOX (box-drag to demolish all covered
buildings and construction sites on mouse up), both deferring refund
rules to REQ-BLD-DEMOLISH and coverage semantics to REQ-UI-MULTI-SELECT.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyCu8vwChKMbLJQ3xosYEN
Add deterministic record/playback for a run.
Recording captures `(seed, config hash, ordered tick-tagged commands)` and re-simulates on playback — no state snapshots. `DotaFactory.exe --replay <file>` re-plays a recorded run view-only with manual speed/pause.
Reviewed-on: #4
Co-authored-by: Malte Langkabel <malte.langkabel@gmail.com>
Co-committed-by: Malte Langkabel <malte.langkabel@gmail.com>
Fixes a bug where the selected construction site was not drawn with a border.
Reviewed-on: #2
Co-authored-by: Malte Langkabel <malte.langkabel@gmail.com>
Co-committed-by: Malte Langkabel <malte.langkabel@gmail.com>