From 4a587012a96b0017d34c0f7201c2cf32078eb400 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 29 Aug 2026 19:21:46 +0900 Subject: [PATCH] =?UTF-8?q?feat(B06):=20=EA=B8=B0=EC=8A=AD=EB=A7=89?= =?UTF-8?q?=EC=9D=B4=20=EA=B8=B0=EC=A4=80=EB=B2=BD=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=8B=A8=20=EC=88=98=C2=B7=EC=98=B5=EC=85=98=20=ED=96=89?= =?UTF-8?q?=EC=9D=84=20=ED=95=AD=EC=83=81=20=EC=84=B8=EC=9A=B4=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 배관 유입·유출과 독립 좌·우 기준벽에서는 [추가 기슭막이(단)]과 [옵션]이 상태와 무관하게 자리를 지킨다. 링크 카드에서 만져도 제어기가 소유 측점 값을 고치므로 안전하다. 집수정 유입은 종전대로 계류측 단 자리가 있을 때만 뜬다. Co-Authored-By: Claude Opus 5 (1M context) --- .../B06_Section_UI_Cross_Structure_Panel.ts | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/B06_Section/B06_Section_UI_Cross_Structure_Panel.ts b/B06_Section/B06_Section_UI_Cross_Structure_Panel.ts index dd2c5a01..3349554f 100644 --- a/B06_Section/B06_Section_UI_Cross_Structure_Panel.ts +++ b/B06_Section/B06_Section_UI_Cross_Structure_Panel.ts @@ -525,9 +525,8 @@ export function buildStructurePanel( : movable ? L("B06_Cross_Revet_Inlet") : L("B06_Cross_Struct_InletBasin"); - // 독립 기슭막이(관 숨김)는 유입·유출이 같은 성토 벽이다 — 집수정 형식 선택을 - // 숨기고 유입측에도 단 수 행을 준다(2026-08-29 사용자: 좌우 조작 통일). - const ownTiers = deps.hiddenPipe() && key === "inlet"; + // 독립 기슭막이(관 숨김)는 유입·유출이 같은 성토 벽이다 — 집수정 형식 선택만 숨긴다 + // (단 수 행은 아래에서 기슭막이 기준벽이면 언제나 준다). // 형식 선택은 유입측에서만, 이동·높이 조작은 기슭막이(집수정 제외)만. structureRow.classList.toggle("is-hidden", key !== "inlet" || deps.hiddenPipe()); if (key === "inlet" && !deps.hiddenPipe()) { @@ -594,14 +593,13 @@ export function buildStructurePanel( : tierChannel === "basin" ? deps.basinExtraState() : { canAdd: false, count: 0 }; + // 기슭막이 기준벽(배관 유입·유출, 독립 좌·우)에서는 **항상** 보인다(2026-08-30 + // 사용자). 링크 카드에서 만져도 제어기가 소유 측점 값을 고치므로 안전하다. + // 집수정 유입은 계류측 단이 설 자리가 있을 때만 — 벽이 아니라 구체다. + const revetWall = (key === "inlet" || key === "outlet") && !isBasin; extraRow.classList.toggle( "is-hidden", - deps.isLinkedCard() || - !( - tierChannel === "outlet" || - (tierChannel === "basin" && - (ownTiers || (isBasin && (tiers.canAdd || tiers.count > 0)))) - ), + !revetWall && !(isBasin && tierChannel === "basin" && (tiers.canAdd || tiers.count > 0)), ); currentCount = tiers.count; countValue.textContent = `${tiers.count}단`; @@ -622,7 +620,12 @@ export function buildStructurePanel( linkToggle.button.title = levelled ? LINK_LOCKED_TITLE : LINK_TITLE; gradeToggle.button.classList.toggle("is-hidden", currentSpan === null); gradeToggle.set(!levelled); - optionParts.row.classList.toggle("is-hidden", linkState === null && currentSpan === null); + // 옵션(연동·경사)도 기슭막이 기준벽에서는 항상 자리를 지킨다 — 상태 따라 + // 나타났다 사라지면 아래 행들이 널뛴다(2026-08-30 사용자). + optionParts.row.classList.toggle( + "is-hidden", + !revetWall && linkState === null && currentSpan === null, + ); const adjust = deps.adjustFor(key); // 정보는 항목당 한 행(2026-08-22 사용자) — 0이면 "자동", 좌우는 안/바깥, // 상하는 위/아래로 적는다.