poi-plugin-item-improvement2 1.0.5 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/workspace.xml +47 -78
- package/assets/db/arsenal_all.nedb +1 -1
- package/assets/db/items.nedb +1 -1
- package/listeners/remodel-listener.js +284 -0
- package/package.json +1 -1
- package/views/detail-row.js +6 -4
- package/views/mat-row.js +4 -5
package/.idea/workspace.xml
CHANGED
|
@@ -5,25 +5,9 @@
|
|
|
5
5
|
</component>
|
|
6
6
|
<component name="ChangeListManager">
|
|
7
7
|
<list default="true" id="40128e24-f8c8-43c8-87be-27f4e2d2db24" name="更改" comment="">
|
|
8
|
-
<change afterPath="$PROJECT_DIR$/
|
|
9
|
-
<change afterPath="$PROJECT_DIR$/assets/icon/150.png" afterDir="false" />
|
|
10
|
-
<change afterPath="$PROJECT_DIR$/assets/icon/2.png" afterDir="false" />
|
|
11
|
-
<change afterPath="$PROJECT_DIR$/assets/icon/241.png" afterDir="false" />
|
|
12
|
-
<change afterPath="$PROJECT_DIR$/assets/icon/95.png" afterDir="false" />
|
|
13
|
-
<change beforePath="$PROJECT_DIR$/assets/db/arsenal_all.nedb" beforeDir="false" afterPath="$PROJECT_DIR$/assets/db/arsenal_all.nedb" afterDir="false" />
|
|
14
|
-
<change beforePath="$PROJECT_DIR$/assets/db/arsenal_weekday.nedb" beforeDir="false" afterPath="$PROJECT_DIR$/assets/db/arsenal_weekday.nedb" afterDir="false" />
|
|
15
|
-
<change beforePath="$PROJECT_DIR$/assets/db/items.nedb" beforeDir="false" afterPath="$PROJECT_DIR$/assets/db/items.nedb" afterDir="false" />
|
|
16
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/100.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/100.png" afterDir="false" />
|
|
17
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/104.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/104.png" afterDir="false" />
|
|
18
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/57.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/57.png" afterDir="false" />
|
|
19
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/70.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/70.png" afterDir="false" />
|
|
20
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/75.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/75.png" afterDir="false" />
|
|
21
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/77.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/77.png" afterDir="false" />
|
|
22
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/78.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/78.png" afterDir="false" />
|
|
23
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/91.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/91.png" afterDir="false" />
|
|
24
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/92.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/92.png" afterDir="false" />
|
|
25
|
-
<change beforePath="$PROJECT_DIR$/assets/icon/94.png" beforeDir="false" afterPath="$PROJECT_DIR$/assets/icon/94.png" afterDir="false" />
|
|
8
|
+
<change afterPath="$PROJECT_DIR$/listeners/remodel-listener.js" afterDir="false" />
|
|
26
9
|
<change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
|
|
10
|
+
<change beforePath="$PROJECT_DIR$/views/detail-row.es" beforeDir="false" afterPath="$PROJECT_DIR$/views/detail-row.es" afterDir="false" />
|
|
27
11
|
</list>
|
|
28
12
|
<option name="SHOW_DIALOG" value="false" />
|
|
29
13
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
@@ -53,36 +37,36 @@
|
|
|
53
37
|
<option name="hideEmptyMiddlePackages" value="true" />
|
|
54
38
|
<option name="showLibraryContents" value="true" />
|
|
55
39
|
</component>
|
|
56
|
-
<component name="PropertiesComponent"
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
40
|
+
<component name="PropertiesComponent">{
|
|
41
|
+
"keyToString": {
|
|
42
|
+
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
|
43
|
+
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
|
44
|
+
"Node.js.item-info-row.es.executor": "Run",
|
|
45
|
+
"Node.js.item-info-row.js.executor": "Run",
|
|
46
|
+
"Node.js.mat-row.es.executor": "Run",
|
|
47
|
+
"Node.js.publish.js.executor": "Run",
|
|
48
|
+
"Node.js.selectors.es.executor": "Run",
|
|
49
|
+
"Node.js.useitem-icon.es.executor": "Run",
|
|
50
|
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
51
|
+
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
|
52
|
+
"RunOnceActivity.git.unshallow": "true",
|
|
53
|
+
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
|
54
|
+
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
|
55
|
+
"git-widget-placeholder": "main",
|
|
56
|
+
"javascript.preferred.runtime.type.id": "node",
|
|
57
|
+
"last_opened_file_path": "/Users/sakana/code/plugin-item-improvement/assets/db",
|
|
58
|
+
"node.js.detected.package.eslint": "true",
|
|
59
|
+
"node.js.detected.package.stylelint": "true",
|
|
60
|
+
"node.js.detected.package.tslint": "true",
|
|
61
|
+
"node.js.selected.package.eslint": "(autodetect)",
|
|
62
|
+
"node.js.selected.package.stylelint": "",
|
|
63
|
+
"node.js.selected.package.tslint": "(autodetect)",
|
|
64
|
+
"nodejs_package_manager_path": "npm",
|
|
65
|
+
"settings.editor.selected.configurable": "preferences.pluginManager",
|
|
66
|
+
"ts.external.directory.path": "/Applications/WebStorm.app/Contents/plugins/javascript-plugin/jsLanguageServicesImpl/external",
|
|
67
|
+
"vue.rearranger.settings.migration": "true"
|
|
84
68
|
}
|
|
85
|
-
}
|
|
69
|
+
}</component>
|
|
86
70
|
<component name="RecentsManager">
|
|
87
71
|
<key name="CopyFile.RECENT_KEYS">
|
|
88
72
|
<recent name="$PROJECT_DIR$/assets/db" />
|
|
@@ -137,46 +121,31 @@
|
|
|
137
121
|
<workItem from="1768548645399" duration="890000" />
|
|
138
122
|
<workItem from="1768577343916" duration="24825000" />
|
|
139
123
|
<workItem from="1777260186359" duration="1000" />
|
|
140
|
-
<workItem from="1780066941937" duration="
|
|
124
|
+
<workItem from="1780066941937" duration="100451000" />
|
|
125
|
+
<workItem from="1780894554460" duration="8000" />
|
|
126
|
+
<workItem from="1781055823534" duration="1349000" />
|
|
127
|
+
<workItem from="1781144981241" duration="715000" />
|
|
128
|
+
<workItem from="1781487047876" duration="3080000" />
|
|
141
129
|
</task>
|
|
142
130
|
<servers />
|
|
143
131
|
</component>
|
|
144
132
|
<component name="TypeScriptGeneratedFilesManager">
|
|
145
133
|
<option name="version" value="3" />
|
|
146
134
|
</component>
|
|
147
|
-
<component name="Vcs.Log.
|
|
148
|
-
<option name="
|
|
149
|
-
<
|
|
150
|
-
<
|
|
151
|
-
|
|
135
|
+
<component name="Vcs.Log.History.Properties">
|
|
136
|
+
<option name="COLUMN_ID_ORDER">
|
|
137
|
+
<list>
|
|
138
|
+
<option value="Default.Root" />
|
|
139
|
+
<option value="Default.Author" />
|
|
140
|
+
<option value="Default.Date" />
|
|
141
|
+
<option value="GitHub.CommitStatus" />
|
|
142
|
+
<option value="Default.Subject" />
|
|
143
|
+
</list>
|
|
152
144
|
</option>
|
|
145
|
+
</component>
|
|
146
|
+
<component name="Vcs.Log.Tabs.Properties">
|
|
153
147
|
<option name="TAB_STATES">
|
|
154
148
|
<map>
|
|
155
|
-
<entry key="712592f3-c312-49ef-9be5-7df54c39e845">
|
|
156
|
-
<value>
|
|
157
|
-
<State>
|
|
158
|
-
<option name="FILTERS">
|
|
159
|
-
<map>
|
|
160
|
-
<entry key="branch">
|
|
161
|
-
<value>
|
|
162
|
-
<list>
|
|
163
|
-
<option value="HEAD" />
|
|
164
|
-
</list>
|
|
165
|
-
</value>
|
|
166
|
-
</entry>
|
|
167
|
-
<entry key="roots">
|
|
168
|
-
<value>
|
|
169
|
-
<list>
|
|
170
|
-
<option value="$PROJECT_DIR$" />
|
|
171
|
-
</list>
|
|
172
|
-
</value>
|
|
173
|
-
</entry>
|
|
174
|
-
</map>
|
|
175
|
-
</option>
|
|
176
|
-
<option name="SHOW_ONLY_AFFECTED_CHANGES" value="true" />
|
|
177
|
-
</State>
|
|
178
|
-
</value>
|
|
179
|
-
</entry>
|
|
180
149
|
<entry key="MAIN">
|
|
181
150
|
<value>
|
|
182
151
|
<State />
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
{"id": 1, "sort": 1, "improvement": [{"baseResource": [10, 20, 40, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 1, "count": 1, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [2, 3, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 1, "count": 2, "type": 0}]}, {"stageText": "", "industryResource": [2, 4, 2, 6], "targetWeapon": {"id": 293, "level": 0}, "consumables": [{"id": 28, "count": 1, "type": 0}]}], "shipWeekList": [{"id": [1], "text": "睦月", "week": [true, true, true, true, true, true, true]}, {"id": [2], "text": "如月", "week": [true, true, true, true, true, true, true]}]}]}
|
|
81
81
|
{"id": 293, "sort": 293, "improvement": [{"baseResource": [10, 30, 50, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [3, 4, 2, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 1, "count": 2, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [4, 5, 2, 4], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 28, "count": 1, "type": 0}]}], "shipWeekList": [{"id": [434], "text": "睦月改二", "week": [false, true, true, true, true, true, false]}, {"id": [435], "text": "如月改二", "week": [true, false, false, true, true, true, true]}]}]}
|
|
82
82
|
{"id": 78, "sort": 78, "improvement": [{"baseResource": [10, 20, 70, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [3, 3, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 2, "count": 1, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [4, 5, 2, 3], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 78, "count": 1, "type": 0}]}], "shipWeekList": [{"id": [174], "text": "Z1", "week": [true, false, false, true, true, true, true]}, {"id": [175], "text": "Z3", "week": [true, true, true, false, false, true, true]}]}]}
|
|
83
|
-
{"id": 297, "sort": 297, "improvement": [{"baseResource": [10, 30, 50, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": []}, {"stageText": "★6~★9", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 1, "type": 0}]}, {"stageText": "", "industryResource": [5, 6, 3, 5], "targetWeapon": {"id": 294, "level": 0}, "consumables": [{"id": 2, "count": 2, "type": 0}]}], "shipWeekList": [{"id": [9], "text": "吹雪", "week": [false, true, true, true, false, false, false]}, {"id": [10], "text": "白雪", "week": [true, true, true, true, true, true, true]}, {"id": [11], "text": "深雪", "week": [false, false, false, false, true, true, true]}]}]}
|
|
83
|
+
{"id": 297, "sort": 297, "improvement": [{"baseResource": [10, 30, 50, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": []}, {"stageText": "★6~★9", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 1, "type": 0}]}, {"stageText": "", "industryResource": [5, 6, 3, 5], "targetWeapon": {"id": 294, "level": 0}, "consumables": [{"id": 2, "count": 2, "type": 0}]}], "shipWeekList": [{"id": [9], "text": "吹雪", "week": [false, true, true, true, false, false, false]}, {"id": [10], "text": "白雪", "week": [true, true, true, true, true, true, true]}, {"id": [11], "text": "深雪", "week": [false, false, false, false, true, true, true]}, {"id": [486], "text": "浦波・改二", "week": [true, true, false, false, false, true, true]}, {"id": [368], "text": "浦波改", "week": [false, true, false, false, false, false, false]}, {"id": [206], "text": "磯波改", "week": [true, true, false, false, false, true, true]}, {"id": [666], "text": "磯波改二", "week": [true, false, false, false, true, true, true]}, {"id": [986], "text": "白雪改二", "week": [true, false, false, false, true, true, true]}]}]}
|
|
84
84
|
{"id": 2, "sort": 2, "improvement": [{"baseResource": [10, 30, 60, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": []}, {"stageText": "★6~★9", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 2, "count": 1, "type": 0}]}, {"stageText": "", "industryResource": [2, 3, 3, 6], "targetWeapon": {"id": 63, "level": 0}, "consumables": [{"id": 2, "count": 2, "type": 0}]}], "shipWeekList": [{"id": [0], "text": "", "week": [true, true, true, true, true, true, true]}]}]}
|
|
85
85
|
{"id": 294, "sort": 294, "improvement": [{"baseResource": [10, 40, 70, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 3, 2, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 2, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [3, 4, 3, 5], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 3, "count": 2, "type": 0}]}], "shipWeekList": [{"id": [426], "text": "吹雪改二", "week": [true, true, true, true, true, true, true]}, {"id": [1035], "text": "吹雪改三", "week": [false, true, true, true, false, false, false]}, {"id": [420], "text": "叢雲改二", "week": [false, false, false, true, true, true, true]}]}, {"baseResource": [10, 40, 70, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 3, 2, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 2, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [3, 4, 3, 5], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 3, "count": 2, "type": 0}]}, {"stageText": "", "industryResource": [9, 17, 6, 8], "targetWeapon": {"id": 455, "level": 1}, "consumables": [{"id": 294, "count": 1, "type": 0}, {"id": 75, "count": 1, "type": 1}]}], "shipWeekList": [{"id": [647], "text": "浦波改二", "week": [true, false, false, false, false, false, true]}, {"id": [959], "text": "深雪改二", "week": [true, true, true, true, false, false, false]}]}, {"baseResource": [10, 40, 70, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 3, 2, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 2, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [3, 4, 3, 5], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 3, "count": 2, "type": 0}]}, {"stageText": "", "industryResource": [11, 18, 8, 11], "targetWeapon": {"id": 295, "level": 0}, "consumables": [{"id": 121, "count": 1, "type": 0}, {"id": 75, "count": 1, "type": 1}, {"id": 78, "count": 1, "type": 1}]}], "shipWeekList": [{"id": [666], "text": "磯波改二", "week": [false, false, false, false, true, true, true]}]}]}
|
|
86
86
|
{"id": 63, "sort": 63, "improvement": [{"baseResource": [10, 40, 70, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 2, 2, 3], "targetWeapon": {"id": 0, "level": 0}, "consumables": []}, {"stageText": "★6~★9", "industryResource": [2, 3, 2, 4], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 63, "count": 1, "type": 0}]}, {"stageText": "", "industryResource": [4, 8, 4, 7], "targetWeapon": {"id": 266, "level": 0}, "consumables": [{"id": 2, "count": 3, "type": 0}]}], "shipWeekList": [{"id": [144], "text": "夕立改二", "week": [false, true, true, true, false, false, false]}, {"id": [195], "text": "綾波改二", "week": [false, true, true, true, false, false, false]}, {"id": [469], "text": "江風改二", "week": [false, true, true, true, true, false, false]}]}]}
|
package/assets/db/items.nedb
CHANGED
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
{"id": 1, "name": "12cm単装砲", "improvementList": [{"baseResource": [10, 20, 40, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 1, "count": 1, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [2, 3, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 1, "count": 2, "type": 0}]}, {"stageText": "", "industryResource": [2, 4, 2, 6], "targetWeapon": {"id": 293, "level": 0}, "consumables": [{"id": 28, "count": 1, "type": 0}]}], "shipWeekList": [{"id": [1], "text": "睦月", "week": [true, true, true, true, true, true, true]}, {"id": [2], "text": "如月", "week": [true, true, true, true, true, true, true]}]}]}
|
|
81
81
|
{"id": 293, "name": "12cm単装砲改二", "improvementList": [{"baseResource": [10, 30, 50, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [3, 4, 2, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 1, "count": 2, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [4, 5, 2, 4], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 28, "count": 1, "type": 0}]}], "shipWeekList": [{"id": [434], "text": "睦月改二", "week": [false, true, true, true, true, true, false]}, {"id": [435], "text": "如月改二", "week": [true, false, false, true, true, true, true]}]}]}
|
|
82
82
|
{"id": 78, "name": "12.7cm単装砲", "improvementList": [{"baseResource": [10, 20, 70, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [3, 3, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 2, "count": 1, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [4, 5, 2, 3], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 78, "count": 1, "type": 0}]}], "shipWeekList": [{"id": [174], "text": "Z1", "week": [true, false, false, true, true, true, true]}, {"id": [175], "text": "Z3", "week": [true, true, true, false, false, true, true]}]}]}
|
|
83
|
-
{"id": 297, "name": "12.7cm連装砲A型", "improvementList": [{"baseResource": [10, 30, 50, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": []}, {"stageText": "★6~★9", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 1, "type": 0}]}, {"stageText": "", "industryResource": [5, 6, 3, 5], "targetWeapon": {"id": 294, "level": 0}, "consumables": [{"id": 2, "count": 2, "type": 0}]}], "shipWeekList": [{"id": [9], "text": "吹雪", "week": [false, true, true, true, false, false, false]}, {"id": [10], "text": "白雪", "week": [true, true, true, true, true, true, true]}, {"id": [11], "text": "深雪", "week": [false, false, false, false, true, true, true]}]}]}
|
|
83
|
+
{"id": 297, "name": "12.7cm連装砲A型", "improvementList": [{"baseResource": [10, 30, 50, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": []}, {"stageText": "★6~★9", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 1, "type": 0}]}, {"stageText": "", "industryResource": [5, 6, 3, 5], "targetWeapon": {"id": 294, "level": 0}, "consumables": [{"id": 2, "count": 2, "type": 0}]}], "shipWeekList": [{"id": [9], "text": "吹雪", "week": [false, true, true, true, false, false, false]}, {"id": [10], "text": "白雪", "week": [true, true, true, true, true, true, true]}, {"id": [11], "text": "深雪", "week": [false, false, false, false, true, true, true]}, {"id": [486], "text": "浦波・改二", "week": [true, true, false, false, false, true, true]}, {"id": [368], "text": "浦波改", "week": [false, true, false, false, false, false, false]}, {"id": [206], "text": "磯波改", "week": [true, true, false, false, false, true, true]}, {"id": [666], "text": "磯波改二", "week": [true, false, false, false, true, true, true]}, {"id": [986], "text": "白雪改二", "week": [true, false, false, false, true, true, true]}]}]}
|
|
84
84
|
{"id": 2, "name": "12.7cm連装砲", "improvementList": [{"baseResource": [10, 30, 60, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": []}, {"stageText": "★6~★9", "industryResource": [1, 2, 1, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 2, "count": 1, "type": 0}]}, {"stageText": "", "industryResource": [2, 3, 3, 6], "targetWeapon": {"id": 63, "level": 0}, "consumables": [{"id": 2, "count": 2, "type": 0}]}], "shipWeekList": [{"id": [0], "text": "", "week": [true, true, true, true, true, true, true]}]}]}
|
|
85
85
|
{"id": 294, "name": "12.7cm連装砲A型改二", "improvementList": [{"baseResource": [10, 40, 70, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 3, 2, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 2, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [3, 4, 3, 5], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 3, "count": 2, "type": 0}]}], "shipWeekList": [{"id": [426], "text": "吹雪改二", "week": [true, true, true, true, true, true, true]}, {"id": [1035], "text": "吹雪改三", "week": [false, true, true, true, false, false, false]}, {"id": [420], "text": "叢雲改二", "week": [false, false, false, true, true, true, true]}]}, {"baseResource": [10, 40, 70, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 3, 2, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 2, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [3, 4, 3, 5], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 3, "count": 2, "type": 0}]}, {"stageText": "", "industryResource": [9, 17, 6, 8], "targetWeapon": {"id": 455, "level": 1}, "consumables": [{"id": 294, "count": 1, "type": 0}, {"id": 75, "count": 1, "type": 1}]}], "shipWeekList": [{"id": [647], "text": "浦波改二", "week": [true, false, false, false, false, false, true]}, {"id": [959], "text": "深雪改二", "week": [true, true, true, true, false, false, false]}]}, {"baseResource": [10, 40, 70, 10], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 3, 2, 2], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 297, "count": 2, "type": 0}]}, {"stageText": "★6~★9", "industryResource": [3, 4, 3, 5], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 3, "count": 2, "type": 0}]}, {"stageText": "", "industryResource": [11, 18, 8, 11], "targetWeapon": {"id": 295, "level": 0}, "consumables": [{"id": 121, "count": 1, "type": 0}, {"id": 75, "count": 1, "type": 1}, {"id": 78, "count": 1, "type": 1}]}], "shipWeekList": [{"id": [666], "text": "磯波改二", "week": [false, false, false, false, true, true, true]}]}]}
|
|
86
86
|
{"id": 63, "name": "12.7cm連装砲B型改二", "improvementList": [{"baseResource": [10, 40, 70, 0], "stageList": [{"stageText": "★0~★5", "industryResource": [2, 2, 2, 3], "targetWeapon": {"id": 0, "level": 0}, "consumables": []}, {"stageText": "★6~★9", "industryResource": [2, 3, 2, 4], "targetWeapon": {"id": 0, "level": 0}, "consumables": [{"id": 63, "count": 1, "type": 0}]}, {"stageText": "", "industryResource": [4, 8, 4, 7], "targetWeapon": {"id": 266, "level": 0}, "consumables": [{"id": 2, "count": 3, "type": 0}]}], "shipWeekList": [{"id": [144], "text": "夕立改二", "week": [false, true, true, true, false, false, false]}, {"id": [195], "text": "綾波改二", "week": [false, true, true, true, false, false, false]}, {"id": [469], "text": "江風改二", "week": [false, true, true, true, true, false, false]}]}]}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
// listeners/remodel-listener.js
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 改修监听器 - 监听并上报改修操作
|
|
5
|
+
*
|
|
6
|
+
* 监听的接口:
|
|
7
|
+
* - api_req_kousyou/remodel_slot (执行改修) → 上报核心数据
|
|
8
|
+
* - api_req_kousyou/remodel_slotlist_detail (获取明细) → 记录当前选中的装备
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// ========== 配置 ==========
|
|
12
|
+
const REPORT_URL = 'http://localhost:3000/api/remodel' // 替换为你的服务器地址
|
|
13
|
+
const DEBUG = true // 调试模式,会打印详细日志
|
|
14
|
+
|
|
15
|
+
// =========- 工具函数 ==========
|
|
16
|
+
function log(...args) {
|
|
17
|
+
if (DEBUG) {
|
|
18
|
+
console.log('[改修监听器]', ...args)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// 生成唯一ID
|
|
23
|
+
function generateId() {
|
|
24
|
+
return `${Date.now()}_${Math.random().toString(36).substr(2, 9)}`
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// ========== 状态缓存 ==========
|
|
28
|
+
// 用于临时存储用户当前选中的装备(因为改修请求不传装备ID)
|
|
29
|
+
let currentSelectedSlotId = null
|
|
30
|
+
let currentSelectedSlotTimestamp = 0
|
|
31
|
+
|
|
32
|
+
// 重试队列(可选)
|
|
33
|
+
let retryQueue = []
|
|
34
|
+
const RETRY_KEY = 'poi_remodel_retry_queue'
|
|
35
|
+
|
|
36
|
+
// ========== 数据解析 ==========
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 解析改修明细响应 (remodel_slotlist_detail)
|
|
40
|
+
* 用户点击某个装备时触发,记录当前选中的装备ID
|
|
41
|
+
*/
|
|
42
|
+
function parseRemodelDetail(payload) {
|
|
43
|
+
const { body } = payload
|
|
44
|
+
const data = body.api_data
|
|
45
|
+
|
|
46
|
+
const slotId = data.api_req_slot_id
|
|
47
|
+
const slotNum = data.api_req_slot_num
|
|
48
|
+
|
|
49
|
+
// 更新缓存
|
|
50
|
+
currentSelectedSlotId = slotId
|
|
51
|
+
currentSelectedSlotTimestamp = Date.now()
|
|
52
|
+
|
|
53
|
+
log('选中装备:', { slotId, slotNum, timestamp: currentSelectedSlotTimestamp })
|
|
54
|
+
|
|
55
|
+
return {
|
|
56
|
+
type: 'SELECT_EQUIPMENT',
|
|
57
|
+
slotId,
|
|
58
|
+
slotNum,
|
|
59
|
+
timestamp: currentSelectedSlotTimestamp,
|
|
60
|
+
// 消耗信息(预览)
|
|
61
|
+
consumption: {
|
|
62
|
+
buildkit: data.api_req_buildkit,
|
|
63
|
+
remodelkit: data.api_req_remodelkit,
|
|
64
|
+
certainBuildkit: data.api_certain_buildkit,
|
|
65
|
+
certainRemodelkit: data.api_certain_remodelkit,
|
|
66
|
+
useitemId: data.api_req_useitem_id,
|
|
67
|
+
useitemNum: data.api_req_useitem_num,
|
|
68
|
+
useitemId2: data.api_req_useitem_id2,
|
|
69
|
+
useitemNum2: data.api_req_useitem_num2,
|
|
70
|
+
},
|
|
71
|
+
needSecure: data.api_change_flag === 1, // 是否需要确保材料
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* 解析改修执行响应 (remodel_slot)
|
|
77
|
+
* 这是核心上报数据
|
|
78
|
+
*/
|
|
79
|
+
function parseRemodelExecute(payload) {
|
|
80
|
+
const { body } = payload
|
|
81
|
+
const data = body.api_data
|
|
82
|
+
|
|
83
|
+
// 如果没有缓存,尝试从响应中获取(虽然响应里可能有,但不一定)
|
|
84
|
+
const equipmentId = currentSelectedSlotId || data.api_slot_id
|
|
85
|
+
|
|
86
|
+
log('改修执行:', {
|
|
87
|
+
equipmentId,
|
|
88
|
+
beforeLevel: data.api_remodel_level_before,
|
|
89
|
+
afterLevel: data.api_remodel_level,
|
|
90
|
+
result: data.api_result === 1 ? '成功' : '失败',
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
const record = {
|
|
94
|
+
id: generateId(),
|
|
95
|
+
timestamp: Date.now(),
|
|
96
|
+
date: new Date().toISOString(),
|
|
97
|
+
|
|
98
|
+
// 改修结果
|
|
99
|
+
success: data.api_result === 1,
|
|
100
|
+
equipmentId: equipmentId,
|
|
101
|
+
beforeLevel: data.api_remodel_level_before,
|
|
102
|
+
afterLevel: data.api_remodel_level,
|
|
103
|
+
|
|
104
|
+
// 消耗(实际消耗,从响应中获取)
|
|
105
|
+
consumption: {
|
|
106
|
+
buildkit: data.api_req_buildkit,
|
|
107
|
+
remodelkit: data.api_req_remodelkit,
|
|
108
|
+
certainBuildkit: data.api_certain_buildkit,
|
|
109
|
+
certainRemodelkit: data.api_certain_remodelkit,
|
|
110
|
+
useitemId: data.api_useitem_id,
|
|
111
|
+
useitemNum: data.api_useitem_num,
|
|
112
|
+
useitemId2: data.api_useitem_id2,
|
|
113
|
+
useitemNum2: data.api_useitem_num2,
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
// 元数据
|
|
117
|
+
source: 'poi-plugin-item-improvement2',
|
|
118
|
+
version: '1.0.0',
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// 清空缓存(改修完成后重置)
|
|
122
|
+
// 注意:不要立即清空,因为可能连续改修同一个装备
|
|
123
|
+
// currentSelectedSlotId = null
|
|
124
|
+
|
|
125
|
+
return record
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// ========== 上报功能 ==========
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* 上报数据到服务器
|
|
132
|
+
*/
|
|
133
|
+
async function sendReport(data) {
|
|
134
|
+
if (!REPORT_URL || REPORT_URL === 'http://localhost:3000/api/remodel') {
|
|
135
|
+
log('未配置上报地址,仅打印日志')
|
|
136
|
+
log('上报数据:', JSON.stringify(data, null, 2))
|
|
137
|
+
return { success: true, mock: true }
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
try {
|
|
141
|
+
const response = await fetch(REPORT_URL, {
|
|
142
|
+
method: 'POST',
|
|
143
|
+
headers: {
|
|
144
|
+
'Content-Type': 'application/json',
|
|
145
|
+
},
|
|
146
|
+
body: JSON.stringify(data),
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
if (response.ok) {
|
|
150
|
+
log('上报成功:', data.id)
|
|
151
|
+
return { success: true }
|
|
152
|
+
} else {
|
|
153
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
|
|
154
|
+
}
|
|
155
|
+
} catch (error) {
|
|
156
|
+
log('上报失败:', error.message)
|
|
157
|
+
// 保存到重试队列
|
|
158
|
+
saveToRetryQueue(data)
|
|
159
|
+
return { success: false, error: error.message }
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* 保存失败的上报到本地队列
|
|
165
|
+
*/
|
|
166
|
+
function saveToRetryQueue(record) {
|
|
167
|
+
try {
|
|
168
|
+
const queue = JSON.parse(localStorage.getItem(RETRY_KEY) || '[]')
|
|
169
|
+
queue.push({
|
|
170
|
+
...record,
|
|
171
|
+
retryCount: (record.retryCount || 0) + 1,
|
|
172
|
+
lastRetry: Date.now(),
|
|
173
|
+
})
|
|
174
|
+
// 只保留最近100条
|
|
175
|
+
const trimmed = queue.slice(-100)
|
|
176
|
+
localStorage.setItem(RETRY_KEY, JSON.stringify(trimmed))
|
|
177
|
+
log('已加入重试队列,当前队列长度:', trimmed.length)
|
|
178
|
+
} catch (e) {
|
|
179
|
+
console.error('[改修监听器] 保存重试队列失败:', e)
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* 重试失败的上报
|
|
185
|
+
*/
|
|
186
|
+
async function retryFailedReports() {
|
|
187
|
+
try {
|
|
188
|
+
const queue = JSON.parse(localStorage.getItem(RETRY_KEY) || '[]')
|
|
189
|
+
if (queue.length === 0) return
|
|
190
|
+
|
|
191
|
+
log('开始重试失败队列,共', queue.length, '条')
|
|
192
|
+
|
|
193
|
+
const remaining = []
|
|
194
|
+
for (const record of queue) {
|
|
195
|
+
if (record.retryCount >= 3) {
|
|
196
|
+
log('超过重试次数,丢弃:', record.id)
|
|
197
|
+
continue
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
const result = await sendReport(record)
|
|
201
|
+
if (!result.success) {
|
|
202
|
+
remaining.push(record)
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
localStorage.setItem(RETRY_KEY, JSON.stringify(remaining))
|
|
207
|
+
log('重试完成,剩余:', remaining.length)
|
|
208
|
+
} catch (e) {
|
|
209
|
+
console.error('[改修监听器] 重试失败:', e)
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// ========== 事件监听 ==========
|
|
214
|
+
|
|
215
|
+
let eventHandler = null
|
|
216
|
+
let onlineHandler = null
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* 启动改修监听器
|
|
220
|
+
*/
|
|
221
|
+
export function startRemodelListener() {
|
|
222
|
+
if (eventHandler) {
|
|
223
|
+
log('监听器已存在,跳过启动')
|
|
224
|
+
return
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
log('启动改修监听器')
|
|
228
|
+
|
|
229
|
+
// 主事件处理器
|
|
230
|
+
eventHandler = (event) => {
|
|
231
|
+
const { path, body } = event.detail
|
|
232
|
+
|
|
233
|
+
// 1. 监听改修明细(用户选中装备)
|
|
234
|
+
if (path === '/kcsapi/api_req_kousyou/remodel_slotlist_detail') {
|
|
235
|
+
const detailData = parseRemodelDetail({ body })
|
|
236
|
+
// 明细数据不上报,仅用于缓存,但可以打印日志
|
|
237
|
+
if (DEBUG) {
|
|
238
|
+
log('[明细]', detailData)
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// 2. 监听改修执行(核心上报)
|
|
243
|
+
if (path === '/kcsapi/api_req_kousyou/remodel_slot') {
|
|
244
|
+
const record = parseRemodelExecute({ body })
|
|
245
|
+
log('[改修]', record)
|
|
246
|
+
sendReport(record)
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
window.addEventListener('kancolle.api.response', eventHandler)
|
|
251
|
+
|
|
252
|
+
// 网络恢复时重试
|
|
253
|
+
onlineHandler = () => {
|
|
254
|
+
log('网络已恢复,开始重试')
|
|
255
|
+
retryFailedReports()
|
|
256
|
+
}
|
|
257
|
+
window.addEventListener('online', onlineHandler)
|
|
258
|
+
|
|
259
|
+
// 启动时重试
|
|
260
|
+
retryFailedReports()
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* 停止改修监听器
|
|
265
|
+
*/
|
|
266
|
+
export function stopRemodelListener() {
|
|
267
|
+
if (eventHandler) {
|
|
268
|
+
window.removeEventListener('kancolle.api.response', eventHandler)
|
|
269
|
+
eventHandler = null
|
|
270
|
+
log('监听器已停止')
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
if (onlineHandler) {
|
|
274
|
+
window.removeEventListener('online', onlineHandler)
|
|
275
|
+
onlineHandler = null
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// 插件卸载时自动清理
|
|
280
|
+
if (typeof module !== 'undefined' && module.hot) {
|
|
281
|
+
module.hot.dispose(() => {
|
|
282
|
+
stopRemodelListener()
|
|
283
|
+
})
|
|
284
|
+
}
|
package/package.json
CHANGED
package/views/detail-row.js
CHANGED
|
@@ -28,7 +28,7 @@ const {
|
|
|
28
28
|
} = window.i18n['poi-plugin-item-improvement2'];
|
|
29
29
|
const WEEKDAY = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
30
30
|
|
|
31
|
-
const parseItem = ($equips, $useitems, itemId, count, type, available) => {
|
|
31
|
+
const parseItem = ($equips, $useitems, itemId, count, type, useitemAvailable, available) => {
|
|
32
32
|
// console.log('availableitem',available[itemId])
|
|
33
33
|
//type 0 武器
|
|
34
34
|
//type 1 useitem
|
|
@@ -39,7 +39,8 @@ const parseItem = ($equips, $useitems, itemId, count, type, available) => {
|
|
|
39
39
|
name: _lodash.default.get($useitems, [itemId, 'api_name']),
|
|
40
40
|
count: count,
|
|
41
41
|
id: itemId,
|
|
42
|
-
type: 'useitem'
|
|
42
|
+
type: 'useitem',
|
|
43
|
+
available: useitemAvailable[itemId] ? useitemAvailable[itemId].api_count : 0
|
|
43
44
|
};
|
|
44
45
|
} else {
|
|
45
46
|
return {
|
|
@@ -57,6 +58,7 @@ const DetailRow = (0, _reactRedux.connect)(state => ({
|
|
|
57
58
|
$const: (0, _selectors.constSelector)(state) || {},
|
|
58
59
|
chains: (0, _selectors2.adjustedRemodelChainsSelector)(state),
|
|
59
60
|
uniqMap: (0, _selectors2.shipUniqueMapSelector)(state),
|
|
61
|
+
useitemAvailable: state.info.useitems,
|
|
60
62
|
available: (0, _selectors2.equipAvailableSelector)(state)
|
|
61
63
|
}))(({
|
|
62
64
|
row: row,
|
|
@@ -65,6 +67,7 @@ const DetailRow = (0, _reactRedux.connect)(state => ({
|
|
|
65
67
|
$equips,
|
|
66
68
|
$useitems
|
|
67
69
|
},
|
|
70
|
+
useitemAvailable,
|
|
68
71
|
available
|
|
69
72
|
}) => {
|
|
70
73
|
const result = [];
|
|
@@ -80,7 +83,6 @@ const DetailRow = (0, _reactRedux.connect)(state => ({
|
|
|
80
83
|
return {
|
|
81
84
|
name: shipWeek.text,
|
|
82
85
|
days,
|
|
83
|
-
fullWeek,
|
|
84
86
|
dayText: fullWeek ? '' : `(${days.map(i => __(WEEKDAY[i])).join(' / ')})`
|
|
85
87
|
};
|
|
86
88
|
}); // skip if no ships
|
|
@@ -93,7 +95,7 @@ const DetailRow = (0, _reactRedux.connect)(state => ({
|
|
|
93
95
|
stageList.forEach((stage, index, arr) => {
|
|
94
96
|
const isFirst = index === 0;
|
|
95
97
|
const isLast = index === arr.length - 1;
|
|
96
|
-
const items = (stage.consumables || []).map(consumable => parseItem($equips, $useitems, consumable.id, consumable.count, consumable.type, available));
|
|
98
|
+
const items = (stage.consumables || []).map(consumable => parseItem($equips, $useitems, consumable.id, consumable.count, consumable.type, useitemAvailable, available));
|
|
97
99
|
const upgradeInfo = {
|
|
98
100
|
icon: 0,
|
|
99
101
|
id: 0,
|
package/views/mat-row.js
CHANGED
|
@@ -53,7 +53,6 @@ const MatRow = ({
|
|
|
53
53
|
stageText,
|
|
54
54
|
rowCnt,
|
|
55
55
|
isFirst,
|
|
56
|
-
isLast,
|
|
57
56
|
day,
|
|
58
57
|
assistants,
|
|
59
58
|
upgrade,
|
|
@@ -61,12 +60,12 @@ const MatRow = ({
|
|
|
61
60
|
development,
|
|
62
61
|
improvement
|
|
63
62
|
}) => {
|
|
64
|
-
let hishoCol = assistants.map(
|
|
63
|
+
let hishoCol = assistants.map(assistant => (assistant.days.includes(day) || day === -1) && _react.default.createElement("div", {
|
|
65
64
|
className: "hisho-col",
|
|
66
|
-
key:
|
|
67
|
-
},
|
|
65
|
+
key: assistant.name
|
|
66
|
+
}, assistant.name, day === -1 && _react.default.createElement(_react.default.Fragment, null, _react.default.createElement("br", null), _react.default.createElement("span", {
|
|
68
67
|
className: "available-days"
|
|
69
|
-
},
|
|
68
|
+
}, assistant.dayText))));
|
|
70
69
|
let stageRow = '';
|
|
71
70
|
let star = '';
|
|
72
71
|
|