Skip to content

道具一览 ​

第二张列表 / 筛选页的样例:现网道具一览(= prts-widgets 的 ItemList Widget)换成 PRTS Design 的视觉,排布同干员一览:一条提示 → 筛选(3 行)→ 搜索 / 排序 / 两种显示方式 → 条数 · 已选条件 · 复制链接 · 分页 → 结果。道具数据与现网一致,页面与模板不用改;筛选项、排序、显示方式对着游戏的仓库重排过,有几处行为和现网不一样,见和现网不一样的。

源文件 preview/_src/pages/items.html,python3 scripts/build-preview.py 生成。数据是现网页面的快照 preview/vendor/itemlist/data.js(1392 件道具,node scripts/fetch-itemlist.ts 重抓);道具图标不入库,运行时从 torappu.prts.wiki / media.prts.wiki 取。

preview/items.html单独打开 ↗

页面与皮肤的分工 ​

  • 页面这半:开头那条「关于保险库」是页面正文里的 {{道具一览补充说明}}(一条 {{Cbox2}}),不归 Widget 管。页面照旧往正文里放 #cargo-data({{道具筛选数据2}} 输出的每件道具一条 data-*,里面是获取途径 / 描述 / 用途三段)。
  • Widget 这半:其余都是 Widget 的输出,读 #cargo-data、挂到 #root。样例页里那段脚本是 Widget 的替身;生产环境 = prts-widgets 用 @mooncellwiki/prts-design-vue 输出同样的结构——.ak-* 是设计系统组件,.il-* 是这页自己的排布,放 Widget 的样式表。根节点标 ak-not-prose。
  • 皮肤这半:同干员一览,这页没有目录,想把目录导轨也吃掉——口子见干员一览 · 页面与皮肤的分工。

对着游戏 ​

游戏自己的道具列表是仓库(ui/[uc]itemrepo,2.7.71 客户端):

游戏出处页面上
仓库里道具的次序ItemRepoUtil.GetCurrentItemList 的比较函数:sortId 升序,相同再比 itemId排序项「仓库顺序」;sortId 是负数的(活动代币、家具收藏包一类,在仓库里没有位置)不管正序倒序都排在最后
仓库的页签ItemRepoUtil.CheckItemFitFilter:ClassifyFilter 全部 / 基础 NORMAL / 养成 MATERIAL / 消耗 CONSUME,「全部」= classifyType 不是 NONE 的分类芯片按这几类归成四组(NONE 的归「其他类别」)
稀有度ItemRarity TIER_1…TIER_6,画面上只是道具底框的颜色(sprite_item_r1–r6)稀有度芯片 = 底框颜色的圆环 + 色名

页面数据(#cargo-data)里没有 classifyType,一个 wiki 分类归哪组看的是它名下多数道具的类型(拿 item_table 逐件对过);游戏里页签只有图标没有字,四个组名是这里起的。归类只是摆法:筛的还是 wiki 的 category1–3。

筛选 ​

现网是一块折叠面板三行,每行 = 标题 + 全选 / 清除 + 一排按钮;23 个分类平铺成三行。这里每行 = 标签列 + 筛选芯片,行内「或」、行间「且」,写法同干员一览的筛选行(选中后行标签左缘出青条、露出「清除」;不设「全选」)。

  • 分类分四组,一组一行、行首是组名:养成材料(材料 / 作战记录 / 技巧概要 / 精英化芯片 / 通用信物 / 信物 / 中坚信物 / 私人信件)· 基础物品 · 消耗物品 · 其他类别。组内按仓库里的先后排,「材料」提到最前。
  • 稀有度不再写「0 (灰)」…「5 (彩)」:0–5 是模板字段的值、和游戏的 TIER_1–6 差一位,露给读者没有用处。芯片是一枚底框那样的圆环(data-rarity 的稀有度色)+ 色名;地址栏里仍写 0–5。
  • 点了也不会多出道具的芯片压淡(.is-empty,仍可点):按「其余条件不变,这一行里有没有道具落在它上面」算。
  • 进页面默认选着「材料」(同现网)。
  • 已选条件在结果栏再列一遍(可逐个 ✕、可「清除全部」)。
  • 手机上收成一枚「筛选」钮:三行摊开有一屏多高,默认收起,钮上有已选数、右端是开合记号(同干员一览的「高级筛选」钮)。

排序 · 显示方式 ​

  • 排序项 × 升降,一个下拉 + 一枚方向钮(同干员一览):仓库顺序 / 稀有度。按稀有度排时,同稀有度的照仓库顺序。现网四个选项(游戏内顺序 / 倒序、稀有度升 / 降)是同一件事。
  • 图标:一格一件道具——道具图标 .ak-item(合成图自带稀有度底框)+ 名字,整格链到道具页、悬停铺底。用途 / 描述 / 获取途径在悬停、聚焦时的提示里(挂在 body 上按视口定位)。白色线稿的图标(集成战略的几种代币)垫一块底框那样的深色圆底。
  • 列表(现网没有):一行一件道具,用途 / 描述 / 获取途径直接摊开——图标视图里它们只在悬停提示里,触屏上看不到,按描述搜到的也看不出命中在哪。描述是游戏里的风味文字,比用途弱一级。结果区窄于 860 时一行折成一张卡片(看的是结果区自己的宽度,不是视口)。

地址栏 ​

现网没有地址栏状态。写法同干员一览的 # 参数:

  • <行>=1-材料;信物:一行筛选(category / rarity / obtain),稀有度写 0–5;选项按面板上的次序写。
  • _s 搜索 · _o 排序(order-d / rarity-a / rarity-d,仓库正序不写)· _d=1 列表。
  • 分类行默认选着「材料」:不写 = 默认,一项都不选写成 category=1-。

和现网不一样的 ​

这几处不只是换视觉:

  • 「其他」是真正的兜底。现网的「其他」只认那几个写死的值:有 52 件道具哪个分类芯片都筛不到(26 件寻访数据契约 + 26 件没填分类的),348 件哪个获取途径芯片都筛不到(记录修复、活动获得、集成战略 …)。这里别的选项都没命中的归各自那行的「其他」,每件道具每行至少落一项。
  • 多了三个选项:分类加「寻访数据契约」(数据里本来就有这个 category2);获取途径加「活动获得」「记录修复」(不加的话「其他」里大半是这两种)。
  • 每页默认 100(现网 50):默认选着的「材料」六十多件一页放得下。
  • 搜索多搜用途(现网搜名称 / 描述)。
  • 列表视图、地址栏状态、没有结果时的空状态是新加的。
  • 没动的:没有 itemId 的旧道具照旧不显示。

现网 → 这里 ​

现网这里说明
{{Cbox2}}(关于保险库).ak-cbox页面正文,不归 Widget
FilterGroup:折叠面板 + OptionsGroup(标题 + 全选 / 清除 + 按钮).il-row:标签 + .ak-chip(aria-pressed)去掉全选;清除只在有选中时出现;分类分组;手机上收成「筛选」钮
稀有度「0 (灰)」…「5 (彩)」圆环 .il-ring + 色名
条数(图标 + 数字)共 N 件道具 / n / N 件道具
NInput.ak-search多搜用途
NSelect(四种排序).ak-select + 方向钮
(无).ak-btn-group:图标 / 列表
(无)已选条件 .ak-tag + 复制链接(Toast)
NPagination(50 / 100 / 200 / 500).ak-pagination + .ak-select上下各一条;在底部翻页回到结果开头
ItemCard:80px 图标 + 灰色小字,悬停放大.il-cell:.ak-item--lg + 名字整格悬停铺底,不放大
NTooltip(名称 / 用途 / 描述).ak-tooltip .il-tip多了获取途径
(无).ak-table.il-table列表视图;窄了折成卡片
没有结果:空白.ak-empty + 「清除全部条件」

没有照搬的 ​

  • .il-* 没进设计系统。筛选行 .il-row、工具条、结果栏、分页条和干员一览的 .ol-* 是同一套东西(干员一览里说的「等第二张列表页做出来再提」就是这张)——两边的共同部分现在看得清了:行 = 标签 + 芯片 + 清除、压淡的空选项、结果栏的已选条件、分页条的窄排布。提成组件另开一轮做,这里先各写各的。
  • 仓库页签的图标(ui/[uc]itemrepo 的 material_icon / normal_icon / consum_icon)没用:游戏里页签只有图标,这里分组要的是能读的组名。
  • 没有做无 JS 的兜底(现网也没有):<noscript> 只给一句提示。

文本 CC BY-NC-SA 4.0 · 游戏素材版权归鹰角网络所有