@@ -1551,9 +1551,6 @@ fn submit_puzzle_leaderboard_entry_tx(
|
||||
.current_level
|
||||
.as_ref()
|
||||
.ok_or_else(|| "拼图关卡不存在".to_string())?;
|
||||
if current_level.status != PuzzleRuntimeLevelStatus::Cleared {
|
||||
return Err("当前关卡尚未通关".to_string());
|
||||
}
|
||||
if current_level.profile_id != input.profile_id {
|
||||
return Err("提交成绩的拼图作品与当前关卡不匹配".to_string());
|
||||
}
|
||||
@@ -1592,9 +1589,14 @@ fn submit_puzzle_leaderboard_entry_tx(
|
||||
10,
|
||||
);
|
||||
if let Some(level) = run.current_level.as_mut() {
|
||||
// 拼图拖动、合并与通关判定由前端运行态即时裁决;服务端只负责真实榜单。
|
||||
// 因此提交榜单时不能要求 SpacetimeDB 里的旧棋盘快照也已经通关。
|
||||
level.status = PuzzleRuntimeLevelStatus::Cleared;
|
||||
level.cleared_at_ms = Some(micros_to_millis(input.submitted_at_micros));
|
||||
level.elapsed_ms = Some(input.elapsed_ms.max(1_000));
|
||||
level.leaderboard_entries = leaderboard_entries.clone();
|
||||
}
|
||||
run.cleared_level_count = run.cleared_level_count.max(run.current_level_index);
|
||||
run.leaderboard_entries = leaderboard_entries;
|
||||
replace_puzzle_runtime_run(ctx, &row, &run, input.submitted_at_micros);
|
||||
Ok(run)
|
||||
|
||||
Reference in New Issue
Block a user