Docs: loop re-shape to expedition-driven (DR-042) + consolidate; fix enemy health-bar fill

- DR-042 (new): canonical loop re-shape — win-driver moves from base-siege
  survival to expedition clears; blind scheduled siege retired; base siege
  becomes retaliation consequence. Build order A (coherence) -> B (retaliation)
  -> C (legibility) -> D (Slice 4 persistent meta).
- Backlog/Path_to_Fun/Home reconciled to the expedition-driven direction;
  Slice 3 + Combat Depth marked built.
- DR-036 (END-2) flagged superseded-in-part; DR-034 (END-1) repurposed (Core
  is a consequence, not the win-gate); DR-037 forward-pointer to DR-042.
- CombatFeedbackSystem: fix enemy health bar (sprite-less Filled Image ignored
  fillAmount -> size via anchorMax.x).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-25 20:07:33 -07:00
parent e32dadbc66
commit 03f778085b
8 changed files with 114 additions and 12 deletions
@@ -822,10 +822,8 @@ namespace ProjectM.Client
var fillImg = fillGo.AddComponent<UnityEngine.UI.Image>();
fillImg.material = _barFillMat;
fillImg.color = new Color(0.88f, 0.22f, 0.14f, 1f);
fillImg.type = UnityEngine.UI.Image.Type.Filled;
fillImg.fillMethod = UnityEngine.UI.Image.FillMethod.Horizontal;
fillImg.fillOrigin = 0; // left
fillImg.fillAmount = 1f;
fillImg.type = UnityEngine.UI.Image.Type.Simple; // a sprite-less UI Image ignores fillAmount (it draws a full quad) ->
fillImg.raycastTarget = false; // the bar empties by sizing the fill RectTransform (anchorMax.x = frac) in UpdateHealthBars
go.SetActive(false);
var entry = new HealthBarEntry { CanvasGo = go, Fill = fillImg, Bg = bgImg, ShowTimer = 0f, Visible = false };
@@ -882,7 +880,7 @@ namespace ProjectM.Client
}
float alpha = (!alwaysOn && entry.ShowTimer < 0f)
? 1f - math.saturate(-entry.ShowTimer / HealthBarFadeDuration) : 1f;
if (entry.Fill != null) { var c = entry.Fill.color; c.a = alpha; entry.Fill.color = c; entry.Fill.fillAmount = frac; }
if (entry.Fill != null) { var c = entry.Fill.color; c.a = alpha; entry.Fill.color = c; entry.Fill.rectTransform.anchorMax = new Vector2(frac, 1f); }
if (entry.Bg != null) { var c = entry.Bg.color; c.a = 0.82f * alpha; entry.Bg.color = c; }
}
else if (entry.Visible) { entry.CanvasGo.SetActive(false); entry.Visible = false; }