MST2.0开发(2)——签到

本篇采用模块化说明重构过程。

签到

由于签到逻辑由 1.x 的和游戏启动绑定变为独立执行,所以整体都需要重写。

整体分析

  1. 首先判断是否在主页面,不在则尝试返回主页面,不行则重启。

  2. 确认在主页面,点击右上角区域进入签到页面,然后签到。

  3. 签到完成,返回主页面。

具体实现

1

参照 startup.json 完成,后续可能做成 custom recognition。

这里用到了新的功能 pipeline_override ,做一个简单说明。

1
2
3
4
5
6
7
8
9
10
11
"位于主界面": {
"recognition": "OCR",
"expected": "相伴",
"roi": [
8,
72,
1257,
534
],
"action": "DoNothing"
}

global.json 中,完成了 “位于主界面” (判断当前处于主界面)功能,但是只有判断的功能,现在想让该功能的next 列表变为想要执行的签到任务,方法如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// interface.json
{
"name": "每日签到",
"entry": "每日签到",
"pipeline_override": {
"override_位于主界面": {
"next": [
"签到事件开始"
]
},
"override_点击空白区域": {
"next": [
"七日签到"
]
},
"返回主界面_fast": {
"interrupt": [
"点击空白区域",
"关闭悬浮窗",
"退出功能列表",
"点击返回按钮",
"退出作战",
"退出主线",
"加载中",
"加载中1",
"其他特殊退出"
]
}
}
}

2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"签到事件开始": {
"next": [
"进入签到页面"
],
"interrupt": [
"点击签到入口"
]
},
"进入签到页面": {
"next": [
"处于签到页面",
"进入签到页面"
]
},
"处于签到页面": {
"next": [
"已签到"
],
"interrupt": [
"点击空白区域",
"未签到"
]
},
"未签到": {
"next": [
"点击签到"
]
},
"已签到": {
"next": [
"位于主界面"
],
"interrupt": [
"点击空白区域",
"七日签到",
"返回主界面_fast"
]
},
"七日签到": {
"next": [
"点击七日签到"
]
}

整体采取状态+动作的方式设计,确保不会出问题。