v0.1.1: 养成闭环 + 管理自主 + 存档安全

- 指婚/续弦:成员详情可主动找人结亲(血亲自动排除、鳏寡可再醮)
- 装备 UI:法宝从府库装备/替换,战力实时反馈
- 御敌点将:劫掠事件可自选迎战阵容(默认 Top4 可改)
- 宗祠祭祖:每两年一次,灵石150 → 声望+6/全族修为小升
- 回档时间轴:每季快照列表,一键回卷(回卷前自动保当前档)
- 战报匣子:史书页全文战报留存可翻阅
- 年度族簿纸笺:每年初弹收支/人丁/战力简报
- 媒人提示条 + 寻衅一年冷却 + 出生率与劫掠频率微调
- 单测 19→29(storage mock roundtrip/回档/指婚血亲/祭祖/寻衅/装备/账本)
This commit is contained in:
Hermes Agent
2026-08-23 08:16:40 +08:00
parent ebef6c1609
commit de491c997f
24 changed files with 734 additions and 26 deletions
+32
View File
@@ -0,0 +1,32 @@
import { useGameStore } from '../store'
import { YearlyReport } from '../../game/types/domain'
export function PaperModal() {
const report = useGameStore((s) => s.paperReport)
const closePaper = useGameStore((s) => s.closePaper)
if (!report) return null
const nets = report.nets
const y = report.year
return (
<div className="modal-outer" onClick={closePaper}>
<div className="modal yearpaper-modal" onClick={(e) => e.stopPropagation()}>
<div className="modal-title" style={{ fontSize: '1.3rem' }}> 簿</div>
<div className="modal-cat">{y} </div>
<div className="modal-text" style={{ textAlign: 'center', fontSize: '0.98rem', lineHeight: 2.1 }}>
<div> <b className={nets >= 0 ? 'good' : 'bad'}>{nets >= 0 ? `+${nets}` : nets}</b> </div>
<div> <b className="good"> {report.births}</b> · <b className="bad"> {report.deaths}</b></div>
<div> <b>{report.rep}</b> · <b>{report.power}</b></div>
{report.deaths > report.births && <div className="bad"> </div>}
{report.births > report.deaths && <div className="good"></div>}
</div>
<div style={{ display: 'flex', justifyContent: 'center' }}>
<button className="btn btn-primary" onClick={closePaper}>
</button>
</div>
</div>
</div>
)
}