# DSH 斗地主界面设计 ## 视觉方向 整体参考现代 AI 工作台的轻量界面:白色内容面、极浅灰画布、细边界、充足留白,以及只用于关键状态的蓝色强调。牌桌是一个安静的中心画布,玩家信息以漂浮胶囊呈现,操作集中在底部,避免传统棋牌大厅的厚重装饰。 ## 颜色 > **主题适配(重要)**:所有语义色不再写死浅色值,而是映射到 DSH 宿主主题令牌(`--dsw-alias-*`)。 > 宿主切浅色/深色或安装第三方主题时,这些令牌自动跟随,斗地主随之适配——官方浅色、官方深色、第三方主题全覆盖。 > 每个映射都带**当前浅色兜底**:宿主无主题(令牌缺失)时回退到下表历史值,视觉零回归。 > 宿主通过 `body[data-ds-dark-theme]` 切换深色;本插件仅在该属性下对语义令牌覆盖不到的**物理色**做深色微调(金色提亮、牌边略亮)。 | 语义角色 | 宿主令牌(浅色兜底) | 用途 | |---|---|---| | 主色蓝 | `--dsw-alias-state-business-primary`(`#4D6BFE`) | 主按钮、选中、行动强调、入口 | | 主色悬停 | `--dsw-alias-button-info-hover`(`#405DE0`) | 主按钮悬停态 | | 内容面/卡片 | `--dsw-alias-bg-layer-1`(`#FFFFFF`) | 独立斗地主工作区、画中画小窗、卡片、操作区 | | 工作区内容底 | `--dsw-alias-bg-base`(`#FFFFFF`) | 大厅/牌桌内容滚动区 | | 牌桌画布 | `--dsw-alias-bg-module-platform`(`#F7F8FB`) | 对局中心区域 | | 页面底色 | `--dsw-alias-bg-base`(`#F5F7FA`) | 外围背景 | | 边界 | `--dsw-alias-border-l2`(`#E4E7ED`) | 分隔线、胶囊、输入框 | | 正文 | `--dsw-alias-label-primary`(`#20242C`) | 标题、主要信息 | | 次要文字 | `--dsw-alias-label-secondary`(`#6F7684`) | UID、说明、手牌数量 | | 语义红 | `--dsw-alias-state-error-primary`(`#C53F4D`) | 地主、输局(深色下改用 error-secondary 提亮) | | 语义金 | 固定 `#966813`,深色下 `#E0B24A` | 胜利、倍率、超级加倍(宿主 warn 色阶无合适金色,故保持品牌色) | | 成功绿 | 固定 `#2F9E62`(`#26834F` 悬停) | 机器人按钮、延迟良好(宿主 success-green 过亮、白字对比不达标) | | 警示橙 | 固定 `#E6A23C` | 倒计时、延迟中等 | | 主按钮文字 | `--dsw-alias-label-primary-foreground`(`#FFFFFF`) | 浅色下白字、深色下深字,保证主色按钮对比度 | | 弹窗遮罩 | `--dsw-alias-bg-mask-3`(`rgba(28,32,42,.5)`) | 结算/段位弹窗遮罩 | | 物理牌面 | 固定(白底 `#FFF`、牌墨 `#20242C`、牌边 `#D9DDE5`/深色 `#3A3D45`、红 `#C53F4D`) | 手牌、底牌、明牌小牌——扑克牌本身不随主题变色 | | 头像底 | 固定浅色(`#F2F4F8`,蓝/黑 logo 底 `#EEF1FF`/`#F0F1F4`) | 圆形头像底——保证 DeepSeek 蓝/黑 logo 在明暗主题下都清晰可辨,不随主题变色 | ## 布局 - 对局主视图不保留独立的产品标题栏或牌桌信息栏,关闭与退出牌桌使用不占行高的角落控件。 - 插件入口固定在 DSH 侧栏“新会话”与“工作区”之间,使用与侧边栏一致的白底、细边界和紧凑行高;点击后在入口对应的独立工作区打开斗地主,并显示灰色高光。 - 独立工作区覆盖主内容区域但不修改或替换当前 AI 会话、工作区和会话列表;斗地主状态只由插件入口控制。 - 斗地主主工作区打开时,宿主侧栏不显示任何 AI 会话的选中高光;进入画中画小窗后恢复当前 AI 会话的选中高光,关闭或切换回宿主导航后保持宿主自己的选中态。 - 打开斗地主后点击任意 AI 会话、工作区或“新会话”,只释放斗地主主工作区,画中画小窗保持打开,再交给 DSH 原生导航处理,确保目标会话正常跳转。 - 项目文件夹上的「+ 新建会话」图标按钮(`在“{名称}”中新建会话`)同样触发释放:该按钮点击目标落在内部 SVG 图标上,宿主导航释放逻辑按 `Element` 而非 `HTMLElement` 判定,确保点击后独立工作区关闭并自动跳转到新会话页面。 - 画中画小窗独立于 AI 会话并保持最高层;拖动标题栏可调整位置,拖动四边或四角的边框手柄可调整尺寸,最小尺寸为 360 × 280px(视口更窄时按视口收缩)。**长宽比受限**:窗口不能过窄过高、也不能过宽过扁(宽/高保持在 0.7–1.8 之间)。**内容自适应**:牌桌/大厅内容按小窗可用区域等比缩放,不出现滑块/滚动条(工具栏保持自然尺寸)。 - 大厅先展示玩家资料与 Token 余额,再展示“选择桌别”和三档桌别按钮;大厅底部固定一行小字免责声明:Token 为虚拟货币,仅作娱乐用途,不可兑换真实货币或服务(性质类似欢乐豆)。 - 大厅将玩家资料与 Token 余额纵向归为同一信息组,侧边栏入口沿用 DSH 侧栏的白底、圆角、细边界和字号体系。 - 主页头像支持点击选择默认头像;昵称旁提供线性编辑图标,进入内联编辑后可保存或取消,修改结果立即同步本地档案与牌桌。 - 牌桌使用经典三段结构:顶部揭示底牌,左右两侧是对手;每位玩家在自己前方保留独立出牌区,底部是自己的手牌,操作按钮位于出牌区与手牌之间。 - 手牌和各玩家出牌采用横向叠放,第二张及之后的牌只露出部分牌面,减少 17 张手牌对牌桌空间的占用。 - **自己的手牌尺寸更大**(56×80px,其余牌 44×64px),与对手的手牌数量提示形成明确层级;自己的手牌支持点击与拖拽连续选择。 - 牌面采用扑克牌角标结构:左上角显示点数与花色,右下角显示花色,红黑花色保持语义色区分。**大王/小王使用英文 JOKER 竖排(字母自上而下),大王红色、小王黑色**。 - 对局流程分阶段推进:**发牌(分 3 轮,卡片依次落入并做“整理”动效;期间人人可“明牌”,第 1/2/3 轮明牌倍数 ×4/×3/×2)→ 叫地主 → 抢地主(其余两家先抢,最后回到叫地主的人再选择,每次抢 ×2)→ 加倍(每人 5 秒内选 不加倍/加倍×2/超级加倍×4)→ 出牌(开局倍数 ×15;地主仅第一轮出牌可“明牌”,明牌后手牌公开且倍数 ×2)→ 结算弹窗**。**地主/农民标在抢地主结束(加倍阶段起)才显示**。 - **明牌玩家的完整手牌显示在其个人名片上方**(迷你小牌),对局内所有人可见。 - 叫地主阶段显示三张黑色品牌牌背,确认地主并进入出牌阶段后,三张真实底牌按顺序翻入,与底部白色手牌形成明确层级区分。 - 大厅为在线唯一模式(已移除本地机器人板块):启动自动连接在线,15 秒内凑不齐 3 名真人则补入机器人垫桌;匹配等待中显示当前人数并可取消,连接失败时提供“重试”。 - 在线对局真人不足时由机器人补位:昵称取自真人风格昵称池(无“机器人/AI”字样),叫地主/出牌按 0.9–2.5 秒的人性化节奏行动,对客户端与真人无异。 - 在线 Token 以服务端为权威,签到状态(今日已领)也来自服务端,与本地/机器人模式完全独立。 - 所有反馈气泡(签到、救济金、提示、错误等)约 2.6 秒自动淡出(进入→停留→末尾淡出),无需手动点击关闭。 - 所有玩家信息使用同一套胶囊结构:头像上方显示段位,卡片内显示昵称与较小字号的 Token 数量(按 k/M/B 格式化),卡片下方显示信息标签;对手显示剩余手牌数量,自己显示本局实时倍率,并复用地主/农民身份标记与行动边界提示;自己的个人信息与手牌同排放置。 - 玩家昵称最多 12 个 Unicode 字符,超出部分在本地档案加载时截断,避免玩家信息胶囊被撑宽。 - 当前玩家的倒计时放在操作按钮右侧;对手倒计时放在各自前方的出牌区内,提示消息以气泡形式显示在“提示”按钮上方,并仅在当前出牌回合内有效,轮转后清除。 - 出牌阶段每次轮转有 25 秒时限,当前行动玩家持续显示倒计时,最后 3 秒进入紧迫态。 - 非基础牌型(顺子、连对、三带、飞机、四带二等)出牌时显示牌型标签与短时弹出高亮,炸弹与王炸使用更强的金色/蓝色爆发效果。 - 出牌按**逆时针**方向轮转:无论座位号如何分配,下家(下一手行动者)恒显示在右侧、上家(上一手行动者)恒显示在左侧,与欢乐斗地主等惯例一致。**叫地主/抢地主阶段同样按逆时针推进**(从随机起始座位起,依次下家→再下家),与出牌方向一致。 - 叫地主/抢地主/不抢/过 以**直接文本**形式显示在各自玩家前方的出牌区内(与出牌同性质,非气泡);行动文本**持久显示、不自动消失**——过牌时清空该座位之前的出牌、让「过」独占出牌框,轮到某座位时清空该座位出牌框(“过”轮到自己才消失),出牌阶段首次落牌时清空叫牌遗留文本。叫/抢 用主色高权重、放弃/过 用次级灰,与出牌区其它文本形成层级关系。 - 手牌支持**点击**与**按住左键拖拽划过连续选择**两种方式拉起候选牌,拖动过程中划过即加入/移出候选。**即使轮不到自己出牌(对手回合)也能点选手牌用于规划,但“出牌”按钮只在轮到自己时可用**。 - **对局结算以弹窗形式盖在牌桌上**:打完最后一手后停留约 1 秒展示最终牌面,再弹出结算弹窗(胜负、总倍数、抽水、余额变化、返回大厅)。 - 玩家信息胶囊中自己显示本局实时总倍率(明牌/抢地主/加倍都会即时翻倍),牌桌中央也常驻“总倍率 ×N”徽标;对手显示剩余手牌数量。 - 加倍环节每人限时 5 秒,操作按钮旁显示倒计时;“超级加倍”使用金色按钮强调高倍选择。**叫地主、抢地主同样限时 5 秒并显示倒计时**(决策类动作统一 5s 时限)。 - 匹配等待中,“匹配中…”按钮会同时显示已等待秒数(如 `匹配中… 12s · 2/3`)。 - 大厅段位标签可点击,弹出「段位体系」说明:6 档段位的余额区间,当前段位高亮;段位按 Token **当前余额**实时划分,余额达标即升段、输钱掉余额即降段。 - 机器人补位玩家的 Token 余额与本桌真人平均余额接近(±20%),避免“机器人富得离谱”穿帮。 - 宿主打开系统级模态(如设置)时,斗地主的侧栏入口、独立工作区与画中画小窗整体让位于宿主遮罩之下:入口与侧栏其它按钮一致变暗且不可点击,工作区/小窗不遮挡设置面板。 - 牌桌顶部保留一段不可见安全区,给角落退出/关闭控件留出空间,不与牌面重叠。 - 主操作使用蓝色实心按钮,次操作使用白底细边界按钮,禁用态降低对比度但保留文字可读性。 ## 交互状态 所有交互控件提供默认、悬停、焦点、激活和禁用状态。选中手牌使用上移和蓝色焦点环,当前行动玩家使用持续倒计时和轻量蓝色边界提示,不依赖文字或颜色单独传达状态。弹窗进入、底牌揭示、出牌和轮到行动使用短时缓动反馈,动效控制在 150–250ms,支持 `prefers-reduced-motion: reduce`。 ## 响应式 窗口宽度小于 720px 时,独立工作区内容填满主内容区,画中画小窗贴近屏幕边缘并按视口收缩,桌别按钮纵向排列,牌桌中央区域优先于座位信息,手牌自动换行。