Skip to content

Commit 2fb659a

Browse files
committed
feat:evfs施工中
1 parent d838483 commit 2fb659a

File tree

6 files changed

+455
-380
lines changed

6 files changed

+455
-380
lines changed

src/mineSweeperGUI.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ def dump_evf_file_data(self):
621621
self.label.ms_board.generate_evf_v4_raw_data()
622622
# 补上校验值
623623
checksum = self.checksum_guard.get_checksum(
624-
self.label.ms_board.raw_data[:-1])
624+
self.label.ms_board.raw_data[:-2])
625625
self.label.ms_board.checksum = checksum
626626
return
627627
elif isinstance(self.label.ms_board, ms.EvfVideo):

src/mineSweeperVideoPlayer.py

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ class MineSweeperVideoPlayer(MineSweeperGUIEvent):
1313
# 打开录像文件的回调
1414
def action_OpenFile(self, openfile_name=None):
1515
self.setting_path / 'replay'
16+
17+
self.ui_video_control = videoControl.ui_Form(self.r_path, self.game_setting,
18+
self.mainWindow)
19+
1620
self.unlimit_cursor()
1721
if not openfile_name:
1822
openfile_name = QFileDialog.\
@@ -39,32 +43,50 @@ def action_OpenFile(self, openfile_name=None):
3943
elif openfile_name[-4:] == "evfs":
4044
video_set = ms.Evfs(openfile_name)
4145
# 包含对每个evf的parse
42-
video_set.parse()
43-
video = video_set[0].evf_video
46+
# video_set.parse()
47+
# video = video_set[0].evf_video
4448
else:
4549
return
4650
except:
4751
return
48-
self.play_video(video, video_set)
52+
53+
54+
if video_set:
55+
# 包含对每个evf的parse
56+
video_set.parse()
57+
video_set.analyse()
58+
video_set.analyse_for_features(["high_risk_guess", "jump_judge", "needless_guess",
59+
"mouse_trace", "vision_transfer", "pluck",
60+
"super_fl_local"])
61+
self.ui_video_control.add_new_video_set_tab(video_set)
62+
video = video_set[0].evf_video
63+
else:
64+
video.parse_video()
65+
video.analyse()
66+
video.analyse_for_features(["high_risk_guess", "jump_judge", "needless_guess",
67+
"mouse_trace", "vision_transfer", "pluck",
68+
"super_fl_local"])
69+
self.ui_video_control.add_new_video_tab(video)
70+
self.ui_video_control.videoTabClicked.connect(lambda x: self.play_video(video_set[x].evf_video))
71+
self.play_video(video)
4972

5073

51-
# 录像播放控制器关闭时,播放新文件
74+
# 播放新录像,调整局面尺寸等
75+
# 控制台中,不添加新标签、连接信号。假如关闭就展示
5276
# 播放AvfVideo、RmvVideo、EvfVideo、MvfVideo或BaseVideo
53-
def play_video(self, video, video_set):
77+
def play_video(self, video):
5478
# if self.game_state == 'display':
5579
# self.ui_video_control.QWidget.close()
5680
# self.game_state = 'display'
5781
if self.game_state != 'display':
5882
self.game_state = 'display'
5983

60-
if not video_set:
61-
video.parse_video()
62-
video.analyse()
84+
6385
# 检查evf的checksum,其余录像没有鉴定能力
6486
if isinstance(video, ms.EvfVideo):
6587
self.score_board_manager.with_namespace({
6688
"checksum_ok": self.checksum_guard.
67-
valid_checksum(video.raw_data[:-33], video.checksum),
89+
valid_checksum(video.raw_data[:-(len(video.checksum) + 2)], video.checksum),
6890
})
6991
else:
7092
self.score_board_manager.with_namespace({
@@ -78,18 +100,6 @@ def play_video(self, video, video_set):
78100
"column": video.column,
79101
"minenum": video.mine_num,
80102
})
81-
video.analyse_for_features(["high_risk_guess", "jump_judge", "needless_guess",
82-
"mouse_trace", "vision_transfer", "pluck",
83-
"super_fl_local"])
84-
85-
# 组织录像评论
86-
comments = []
87-
for event in video.events:
88-
t = event.time
89-
comment = event.comments
90-
if comment:
91-
comments.append((t, [i.split(': ')
92-
for i in comment.split(';')[:-1]]))
93103
# 调整窗口
94104
if (video.row, video.column) != (self.row, self.column):
95105
self.setBoard(video.row, video.column, video.mine_num)
@@ -105,18 +115,14 @@ def play_video(self, video, video_set):
105115

106116
self.timer_video = QTimer()
107117
self.timer_video.timeout.connect(self.video_playing_step)
108-
self.ui_video_control = videoControl.ui_Form(self.r_path, video, video_set, comments,
109-
self.game_setting, self.mainWindow)
110-
# self.mainWindow.closeEvent_.connect(self.ui_video_control.QWidget.close)
118+
111119
self.ui_video_control.pushButton_play.clicked.connect(self.video_play)
112120
self.ui_video_control.pushButton_replay.clicked.connect(
113121
self.video_replay)
114122
self.ui_video_control.videoSetTime.connect(self.video_set_time)
123+
self.ui_video_control.videoSetTimePeriod.connect(self.video_set_a_time)
115124
self.ui_video_control.label_speed.wEvent.connect(self.video_set_speed)
116-
for labels in self.ui_video_control.comments_labels:
117-
labels[0].Release.connect(self.video_set_a_time)
118-
labels[1].Release.connect(self.video_set_a_time)
119-
labels[2].Release.connect(self.video_set_a_time)
125+
120126
self.ui_video_control.QWidget.show()
121127

122128
self.video_time = video.video_start_time # 录像当前时间

src/ui/uiComponents.py

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -216,25 +216,7 @@ def wheelEvent(self, event):
216216
self.setText(text)
217217
self.wEvent.emit(float(text))
218218

219-
# 录像播放控制面板上的事件标签
220-
class CommentLabel(QtWidgets.QLabel):
221-
Release = QtCore.pyqtSignal(int)
222-
def __init__(self, parent, text, time_100, middle = True):
223-
super(CommentLabel, self).__init__(parent)
224-
if not isinstance(text, str):
225-
text = "%.2f"%text
226-
self.setText(text)
227-
self.time_100 = time_100
228-
229-
font = QtGui.QFont()
230-
font.setFamily("微软雅黑")
231-
font.setPointSize(12)
232-
self.setFont(font)
233-
# self.setMinimumSize(QtCore.QSize(height, width))
234-
if middle:
235-
self.setAlignment(QtCore.Qt.AlignCenter)
236-
def mouseReleaseEvent(self, e):
237-
self.Release.emit(self.time_100)
219+
238220

239221
class ScoreTable(QtWidgets.QTableWidget):
240222
...

src/ui/ui_video_control.py

Lines changed: 1 addition & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -165,101 +165,15 @@ def setupUi(self, Form):
165165
self.tabWidget.setMovable(True)
166166
self.tabWidget.setTabBarAutoHide(True)
167167
self.tabWidget.setObjectName("tabWidget")
168-
self.tab_0 = QtWidgets.QWidget()
169-
self.tab_0.setObjectName("tab_0")
170-
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab_0)
171-
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
172-
self.verticalLayout_2.setSpacing(0)
173-
self.verticalLayout_2.setObjectName("verticalLayout_2")
174-
self.scrollArea_0 = QtWidgets.QScrollArea(self.tab_0)
175-
self.scrollArea_0.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
176-
self.scrollArea_0.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
177-
self.scrollArea_0.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
178-
self.scrollArea_0.setWidgetResizable(True)
179-
self.scrollArea_0.setObjectName("scrollArea_0")
180-
self.scrollAreaWidgetContents_0 = QtWidgets.QWidget()
181-
self.scrollAreaWidgetContents_0.setGeometry(QtCore.QRect(0, 0, 457, 459))
182-
self.scrollAreaWidgetContents_0.setMinimumSize(QtCore.QSize(0, 0))
183-
self.scrollAreaWidgetContents_0.setObjectName("scrollAreaWidgetContents_0")
184-
self.label_video = QtWidgets.QLabel(self.scrollAreaWidgetContents_0)
185-
self.label_video.setGeometry(QtCore.QRect(120, 0, 271, 42))
186-
font = QtGui.QFont()
187-
font.setFamily("微软雅黑")
188-
font.setPointSize(12)
189-
self.label_video.setFont(font)
190-
self.label_video.setAlignment(QtCore.Qt.AlignCenter)
191-
self.label_video.setObjectName("label_video")
192-
self.checkBox_choose = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_0)
193-
self.checkBox_choose.setGeometry(QtCore.QRect(10, 0, 91, 42))
194-
font = QtGui.QFont()
195-
font.setFamily("微软雅黑")
196-
font.setPointSize(12)
197-
self.checkBox_choose.setFont(font)
198-
self.checkBox_choose.setObjectName("checkBox_choose")
199-
self.checkBox_choose.raise_()
200-
self.label_video.raise_()
201-
self.scrollArea_0.setWidget(self.scrollAreaWidgetContents_0)
202-
self.verticalLayout_2.addWidget(self.scrollArea_0)
203-
self.tabWidget.addTab(self.tab_0, "")
204-
self.tab = QtWidgets.QWidget()
205-
self.tab.setObjectName("tab")
206-
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.tab)
207-
self.verticalLayout_4.setContentsMargins(0, 0, 0, -1)
208-
self.verticalLayout_4.setSpacing(0)
209-
self.verticalLayout_4.setObjectName("verticalLayout_4")
210-
self.scrollArea = QtWidgets.QScrollArea(self.tab)
211-
self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
212-
self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
213-
self.scrollArea.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
214-
self.scrollArea.setWidgetResizable(True)
215-
self.scrollArea.setObjectName("scrollArea")
216-
self.scrollAreaWidgetContents = QtWidgets.QWidget()
217-
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 457, 448))
218-
self.scrollAreaWidgetContents.setMinimumSize(QtCore.QSize(0, 0))
219-
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
220-
self.label_time = QtWidgets.QLabel(self.scrollAreaWidgetContents)
221-
self.label_time.setGeometry(QtCore.QRect(0, 0, 68, 42))
222-
font = QtGui.QFont()
223-
font.setFamily("微软雅黑")
224-
font.setPointSize(12)
225-
self.label_time.setFont(font)
226-
self.label_time.setAlignment(QtCore.Qt.AlignCenter)
227-
self.label_time.setObjectName("label_time")
228-
self.label_tag = QtWidgets.QLabel(self.scrollAreaWidgetContents)
229-
self.label_tag.setGeometry(QtCore.QRect(158, 0, 300, 42))
230-
font = QtGui.QFont()
231-
font.setFamily("微软雅黑")
232-
font.setPointSize(12)
233-
self.label_tag.setFont(font)
234-
self.label_tag.setAlignment(QtCore.Qt.AlignCenter)
235-
self.label_tag.setObjectName("label_tag")
236-
self.label_event = QtWidgets.QLabel(self.scrollAreaWidgetContents)
237-
self.label_event.setGeometry(QtCore.QRect(68, 0, 90, 42))
238-
font = QtGui.QFont()
239-
font.setFamily("微软雅黑")
240-
font.setPointSize(12)
241-
self.label_event.setFont(font)
242-
self.label_event.setAlignment(QtCore.Qt.AlignCenter)
243-
self.label_event.setObjectName("label_event")
244-
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
245-
self.verticalLayout_4.addWidget(self.scrollArea)
246-
self.tabWidget.addTab(self.tab, "")
247168
self.verticalLayout.addWidget(self.tabWidget)
248169

249170
self.retranslateUi(Form)
250-
self.tabWidget.setCurrentIndex(1)
171+
self.tabWidget.setCurrentIndex(-1)
251172
QtCore.QMetaObject.connectSlotsByName(Form)
252173

253174
def retranslateUi(self, Form):
254175
_translate = QtCore.QCoreApplication.translate
255176
self.pushButton_replay.setToolTip(_translate("Form", "重播"))
256177
self.pushButton_play.setToolTip(_translate("Form", "播放/暂停"))
257178
self.label_speed.setToolTip(_translate("Form", "滑动滚轮修改播放速度"))
258-
self.label_video.setText(_translate("Form", "录像"))
259-
self.checkBox_choose.setText(_translate("Form", "选择"))
260-
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_0), _translate("Form", "目录"))
261-
self.label_time.setText(_translate("Form", "时间"))
262-
self.label_tag.setText(_translate("Form", "标签"))
263-
self.label_event.setText(_translate("Form", "事件"))
264-
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "录像1"))
265179
from ui.uiComponents import SpeedLabel

0 commit comments

Comments
 (0)