From 7ba64750bcaa859404981f98289cbae154e607e1 Mon Sep 17 00:00:00 2001 From: thzxx <1440196015@qq.com> Date: Sun, 13 Sep 2026 13:09:16 +0800 Subject: [PATCH] =?UTF-8?q?0.1.39=20P2:=20=E9=A3=9E=E5=8D=87=E5=8F=99?= =?UTF-8?q?=E4=BA=8B=E8=A7=86=E8=A7=89=E5=BC=BA=E5=8C=96=EF=BC=88=E9=87=91?= =?UTF-8?q?=E8=89=B2=E8=BE=89=E5=85=89=E6=A0=87=E9=A2=98+=E4=BB=99?= =?UTF-8?q?=E9=9F=B5=E8=BE=B9=E6=A1=86+=E9=87=91=E8=BE=B9=E9=80=89?= =?UTF-8?q?=E9=A1=B9+ascension=E6=95=88=E6=9E=9C=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/ui/components/EventModal.tsx | 12 ++++++++- src/renderer/ui/components/ModalShell.tsx | 6 +++-- src/renderer/ui/styles.css | 32 +++++++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/renderer/ui/components/EventModal.tsx b/src/renderer/ui/components/EventModal.tsx index 2970b3b..fd53e57 100644 --- a/src/renderer/ui/components/EventModal.tsx +++ b/src/renderer/ui/components/EventModal.tsx @@ -17,7 +17,7 @@ const RES_NAME: Record = { function describeEff(eff: Record | { [k: string]: unknown }): string { const parts: string[] = [] - const e = eff as { res?: Record; rep?: number; relation?: Record; addBuilding?: string; pillGain?: Record; mission?: string; addTech?: string; raid?: { npcId: string }; trib?: { mode: string }; feisheng?: { stay: boolean }; techniqueChance?: number; artifactChance?: number; flag?: Record } + const e = eff as { res?: Record; rep?: number; relation?: Record; addBuilding?: string; pillGain?: Record; mission?: string; addTech?: string; raid?: { npcId: string }; trib?: { mode: string }; feisheng?: { stay: boolean }; ascension?: { stage: string; mode: string }; techniqueChance?: number; artifactChance?: number; flag?: Record } if (e.res) { for (const [k, v] of Object.entries(e.res)) { const name = RES_NAME[k] ?? k @@ -41,6 +41,12 @@ function describeEff(eff: Record | { [k: string]: unknown }): str parts.push(e.trib.mode === 'rash' ? '硬渡天劫' : e.trib.mode === 'guard' ? '护法渡劫' : '渡劫延一年') } if (e.feisheng) parts.push(e.feisheng.stay ? '留世不飞升' : '飞升离世') + // 0.1.39:飞升试炼效果描述 + if (e.ascension) { + const stageName = e.ascension.stage === 'heart' ? '心魔试炼' : e.ascension.stage === 'heaven' ? '天劫试炼' : '飞升抉择' + const modeName = e.ascension.mode === 'rash' ? '硬抗' : e.ascension.mode === 'guard' ? '护持' : '延后' + parts.push(`${stageName}·${modeName}`) + } return parts.join(' · ') } @@ -55,6 +61,9 @@ export function EventModal() { const [formation, setFormation] = useState('vanguard') if (!pendingEventId || !pendingEventDef || !world) return null + // 0.1.39:飞升事件视觉强化——金色辉光标题 + 仙韵边框 + 金边选项 + const isAscension = pendingEventId.startsWith('ev-ascension-') + const raidIdx = pendingEventDef.options.findIndex((o) => o.eff.raid || o.eff.tournament) const squadPool: Character[] = raidIdx >= 0 @@ -103,6 +112,7 @@ export function EventModal() { allowOuter={false} onClose={dorm} closeLabel="稍后再议" + className={isAscension ? 'modal-ascension' : undefined} footer={ squadPicking ? ( <> diff --git a/src/renderer/ui/components/ModalShell.tsx b/src/renderer/ui/components/ModalShell.tsx index cadf3c9..a8c1989 100644 --- a/src/renderer/ui/components/ModalShell.tsx +++ b/src/renderer/ui/components/ModalShell.tsx @@ -11,6 +11,7 @@ export interface ModalShellProps { footerAlign?: 'right' | 'center' | 'space' children: ReactNode closeLabel?: string + className?: string } /** @@ -29,7 +30,8 @@ export function ModalShell({ footer, footerAlign = 'right', children, - closeLabel = '关闭' + closeLabel = '关闭', + className }: ModalShellProps) { useEffect(() => { const onKey = (e: KeyboardEvent) => { @@ -46,7 +48,7 @@ export function ModalShell({ // 顶部菜单/主域均在其下(0.1.22 修复:弹框出现在宗族/谱系菜单下方的 z-index 越界)。 const shell = (
-
e.stopPropagation()} data-modal-kind="shell"> +
e.stopPropagation()} data-modal-kind="shell"> diff --git a/src/renderer/ui/styles.css b/src/renderer/ui/styles.css index 57b54d4..b517136 100644 --- a/src/renderer/ui/styles.css +++ b/src/renderer/ui/styles.css @@ -1910,3 +1910,35 @@ html[data-blade] .battle-lines { font-size: 0.8rem; color: #a8c2da; } + +/* ---------- 0.1.39 飞升叙事视觉强化 ---------- */ +.modal-ascension .modal-title { + color: #8a6d2f; + text-shadow: 0 0 12px rgba(201, 162, 39, 0.5), 0 1px 0 rgba(255, 250, 235, 0.8); + letter-spacing: 8px; +} +.modal-ascension .modal-text { + border-top-color: rgba(201, 162, 39, 0.4); + border-bottom-color: rgba(201, 162, 39, 0.3); + color: #3a2f1a; +} +.modal-ascension .modal-cat { + color: #a08540; +} +.modal-ascension .opt-btn { + border-color: #c9a227; + background: linear-gradient(180deg, #fbf8ee, #f5edda); +} +.modal-ascension .opt-btn:hover { + border-color: #8a6d2f; + background: #fbf5e0; + box-shadow: 0 0 0 1px rgba(201, 162, 39, 0.3), inset 0 1px 0 rgba(255, 255, 250, 0.6); +} +.modal-ascension .opt-btn .hint { + color: #8a6d2f; +} +.modal-ascension::before, +.modal-ascension::after { + background: linear-gradient(180deg, #3a3018, #241e0d); + border-color: #8a6d2f; +}