aether-shards/specs/Mission_Debrief.spec.md

59 lines
1.9 KiB
Markdown
Raw Normal View History

# **Mission Debrief Specification: After Action Report**
This document defines the UI for the **Mission Results Screen**. It appears after a mission concludes (Victory or Defeat) but before returning to the Hub.
## **1. Visual Design**
Style: A clipboard or field report overlay.
Context: It overlays the frozen 3D scene of the final moment of the battle.
### **Layout**
- **Header:** "MISSION ACCOMPLISHED" (Gold) or "MISSION FAILED" (Red).
- **Primary Stats (Top Row):**
- **XP Gained:** Numeric tally with a filling bar animation.
- **Turns Taken:** Compare against "Par" or limits.
- **Rewards (Middle Panel):**
- **Currency:** Aether Shards & Cores gained.
- **Loot Grid:** A grid of items found. Hovering shows tooltips.
- **Reputation:** A bar showing the Faction Standing change (e.g., "Iron Legion +15").
- **Roster Status (Bottom Row):**
- Portraits of the squad.
- Status: "OK", "Injured", "Dead" (Greyed out).
- Level Up: If a unit leveled up, show a "Level Up!" badge.
- **Footer:** "RETURN TO BASE" button.
## **2. TypeScript Interface**
```ts
// src/types/Debrief.ts
import { ItemInstance } from "./Inventory";
export interface MissionResult {
outcome: "VICTORY" | "DEFEAT";
missionTitle: string;
// Rewards
xpEarned: number;
currency: { shards: number; cores: number };
loot: ItemInstance[];
reputationChanges: { factionId: string; amount: number }[];
// Squad State Changes
squadUpdates: {
unitId: string;
isDead: boolean;
leveledUp: boolean;
damageTaken: number;
}[];
}
```
---
## **3. Logic & Integration**
- **Trigger:** `GameLoop` finishes `RESOLUTION` phase -> calculates `MissionResult` object -> Dispatches `show-debrief`.
- **Flow:** 1. `MissionDebrief` component mounts. 2. Animations play (XP bars fill, Loot pops in). 3. Player reviews. 4. Player clicks "Return". 5. Component dispatches `debrief-closed`. 6. `GameStateManager` transitions to `STATE_META_HUB`.