Skip to content

fix(engine): 修正翻页到仓库底部时的跳过行数计算逻辑 - #207

Merged
jiubook merged 4 commits into
Logical-Byte:devfrom
CL4R3T:patch-scroll
Aug 21, 2026
Merged

fix(engine): 修正翻页到仓库底部时的跳过行数计算逻辑#207
jiubook merged 4 commits into
Logical-Byte:devfrom
CL4R3T:patch-scroll

Conversation

@CL4R3T

@CL4R3T CL4R3T commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

[x] 我已经阅读并理解了项目的贡献指南(CONTRIBUTING.md)。

提交类型(必填)

请确认本 PR 符合以下任意一项:

  • 已有 Issue/RFC: 已关联相关的前置Issue:#____
  • 紧急修复 (Hotfix): 修复关键路径或生产环境的严重问题。
  • 需求变更/新功能: 已经过前期讨论并达成共识。
  • 草稿 PR (Draft): 仅用于早期思路交流。注:未事先沟通且不符合项目方向的 PR,可能被直接关闭。

🎨 代码风格与质量保证

  • 风格一致性: 我已参考现有代码库的结构与命名习惯,确保新代码与现有风格保持一致。
  • 文件组织: 新增文件已放置在合适的目录下,且文件命名符合规范。
  • 测试覆盖率: 我为可以测试的功能编写了单元测试。(目前项目的测试覆盖率无强制要求,但多多益善)
  • 可读性: 拒绝臃肿函数和嵌套分支;复杂逻辑块已添加必要的 行内注释
  • 命名规范: 避免使用单字母变量(如 x, y, i 等)。
  • 文档: 新添加或修改的函数、类已包含完整的 Docstring 注释。
  • 自测通过: 我已在本地运行并通过了 pre-commit 检查。
  • 集成测试: 我通过真实游戏窗口验证了新功能/修复的有效性。

📝 修改描述

我发现仓库滚动到底部时计算具体滚动行数容易出错(#204),发现出错主要由以下2个原因构成:

  • 由于不明历史原因,滚动到底部时额外滚动1.2行,但是在计算中只补偿1行
  • 仓库页面总共包含5.29行基质(1920*1080分辨率,820px),但是实际计算中,滚动行数=滚动高度/总高度(820px,5.29行)*总行数(5行,对应775px)-补偿值
    现在修改如下:
  • 额外滚动高度调整为1行
  • 使用计算逻辑:滚动行数=滚动高度/行高-补偿值
    另外,我新增(vibe)了一个脚本scripts\test_inventory_page_flip.py,可以在不进行锁定/解锁的情况下进行识别并滚动翻页,使用方式详见其注释。

🧪 验证与测试结果

受限于本地条件,我只能测试1920*1080分辨率下可以正常运行,对应基质行高155px,仓库页面高度约820px。
我也只能测试仓库中包含6行基质的情况,暂时没有理智刷出来更多基质 :(
日志节选:

08-21 14:32:11 [INFO] 开始渐进式拖动翻页...
08-21 14:32:12 [INFO] 检测到滚动条亮点 at (1453, 950)
08-21 14:32:12 [INFO] 步 4: 检测到滚动条到底
08-21 14:32:13 [INFO] 检测到滚动条到底,已拖动 153px
08-21 14:32:13 [INFO] 已滚动 1.0 行,额外滚动一整行 155px 确保到位
08-21 14:32:13 [INFO] 执行微调拖动:向上 155px
08-21 14:32:15 [INFO] 额外滚动完成,总计拖动 308px
08-21 14:32:15 [INFO] 检测到滚动条到底,已渐进滚动 308px,下一页将是最后一页。
08-21 14:32:15 [INFO] 开始扫描第 2 页基质...
08-21 14:32:15 [INFO] 计算跳过行数: 实际滚动=308px,行高=155px,滚动行数=1.987→1,跳过=4行
08-21 14:32:15 [INFO] 最后一页:滚动距离 308px(完整页 820px),跳过前 4 行已扫描基质

仓库截图可见于原Issue。

Sourcery 总结

修正仓库末页翻页的行数计算,并新增不修改基质状态的翻页识别测试工具。
修复当仓库翻至末页时的行数计算,并新增一个不会修改基质状态的翻页识别测试工具。

新功能:

  • 新增只读仓库翻页与基质识别测试脚本,支持停止控制及可选的翻页修正参数。

缺陷修复:

  • 修正仓库翻页到末页时的跳过行数计算,改为依据实际滚动距离和基质行高计算,避免因页面高度与行数不匹配导致识别重复或遗漏。
  • 将到达仓库底部的额外滚动调整为一整行,提升末页定位计算的一致性。
Original summary in English

Summary by Sourcery

修正仓库末页翻页的行数计算,并新增不修改基质状态的翻页识别测试工具。

New Features:

  • 新增只读仓库翻页与基质识别测试脚本,支持停止控制及可选的翻页修正参数。

Bug Fixes:

  • 修正仓库翻页到末页时的跳过行数计算,改为依据实际滚动距离和基质行高计算,避免因页面高度与行数不匹配导致识别重复或遗漏。
  • 将到达仓库底部的额外滚动调整为一整行,提升末页定位计算的一致性。

@jiubook jiubook linked an issue Aug 21, 2026 that may be closed by this pull request
修正 188073f 遗留的过时注释
同步更新 _calculate_skip_rows 的 docstring 与行内注释

同时把 _progressive_drag 中日志精度从 .1f 统一为.3f
与 _calculate_skip_rows 的日志格式一致。
修复 _execute_grid_scan 中两处无保护的 icon_y_list[1] 索引
@jiubook

jiubook commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

已合并,感谢 PR 😃

@jiubook
jiubook merged commit 3508568 into Logical-Byte:dev Aug 21, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] 滚动到页面底部时无法正确识别跳过行数

2 participants