Music Shake 첫 박 시각 · 카운트다운 · 옛 일시 정지 판 정리
This commit is contained in:
@@ -850,12 +850,19 @@ class _QuestDetailScreenState extends State<QuestDetailScreen> {
|
||||
return;
|
||||
}
|
||||
if (!mounted) return;
|
||||
// 운영값(첫 박 · 판 길이)이 바뀐 뒤의 옛 일시 정지는 박 위치가 맞지 않는다 — 버리고 새 판으로 시작한다.
|
||||
// 목록 · 상세가 이미 시작하기로 보이는 경우(staleShake)도 같은 안내를 한 번 한다.
|
||||
if (detail.card.staleShake || (resume != null && !resume.fitsShake(setup))) {
|
||||
resume = null;
|
||||
_toast(context.l10n.questShakeRestart);
|
||||
}
|
||||
final judge = ShakeJudge(
|
||||
bpm: setup.bpm,
|
||||
segments: setup.segments,
|
||||
firstBeat: setup.firstBeat,
|
||||
windows: setup.windows,
|
||||
hits: resume?.hits ?? const [],
|
||||
position: resume?.position ?? Duration.zero,
|
||||
position: resume?.position ?? setup.startAt,
|
||||
);
|
||||
QuestSession snapshot(QuestStage state) => QuestSession(
|
||||
state: state,
|
||||
@@ -863,6 +870,7 @@ class _QuestDetailScreenState extends State<QuestDetailScreen> {
|
||||
total: setup.segments,
|
||||
position: judge.position,
|
||||
hits: judge.hits,
|
||||
firstBeat: setup.firstBeat,
|
||||
);
|
||||
setState(() => _stage = QuestStage.inProgress);
|
||||
// 진행 중 앱이 꺼져도 다음에 일시 정지(멈춘 자리)로 보이게 시작 시점을 남긴다.
|
||||
@@ -900,6 +908,7 @@ class _QuestDetailScreenState extends State<QuestDetailScreen> {
|
||||
state: QuestStage.completed,
|
||||
progress: setup.segments,
|
||||
total: setup.segments,
|
||||
firstBeat: setup.firstBeat,
|
||||
judgement: run.judgement(),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user