feat: 收敛玩法运行时配置并加入故障恢复
This commit is contained in:
55
miniprogram/game/core/gameModeDefaults.ts
Normal file
55
miniprogram/game/core/gameModeDefaults.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { type GameMode } from './gameDefinition'
|
||||
|
||||
export interface GameModeDefaults {
|
||||
sessionCloseAfterMs: number
|
||||
sessionCloseWarningMs: number
|
||||
minCompletedControlsBeforeFinish: number
|
||||
requiresFocusSelection: boolean
|
||||
skipEnabled: boolean
|
||||
skipRequiresConfirm: boolean
|
||||
autoFinishOnLastControl: boolean
|
||||
defaultControlScore: number
|
||||
}
|
||||
|
||||
const GAME_MODE_DEFAULTS: Record<GameMode, GameModeDefaults> = {
|
||||
'classic-sequential': {
|
||||
sessionCloseAfterMs: 2 * 60 * 60 * 1000,
|
||||
sessionCloseWarningMs: 10 * 60 * 1000,
|
||||
minCompletedControlsBeforeFinish: 0,
|
||||
requiresFocusSelection: false,
|
||||
skipEnabled: true,
|
||||
skipRequiresConfirm: true,
|
||||
autoFinishOnLastControl: false,
|
||||
defaultControlScore: 1,
|
||||
},
|
||||
'score-o': {
|
||||
sessionCloseAfterMs: 2 * 60 * 60 * 1000,
|
||||
sessionCloseWarningMs: 10 * 60 * 1000,
|
||||
minCompletedControlsBeforeFinish: 1,
|
||||
requiresFocusSelection: false,
|
||||
skipEnabled: false,
|
||||
skipRequiresConfirm: true,
|
||||
autoFinishOnLastControl: false,
|
||||
defaultControlScore: 10,
|
||||
},
|
||||
}
|
||||
|
||||
export function getGameModeDefaults(mode: GameMode): GameModeDefaults {
|
||||
return GAME_MODE_DEFAULTS[mode]
|
||||
}
|
||||
|
||||
export function getDefaultSkipRadiusMeters(mode: GameMode, punchRadiusMeters: number): number {
|
||||
if (mode === 'classic-sequential') {
|
||||
return punchRadiusMeters * 2
|
||||
}
|
||||
|
||||
return 30
|
||||
}
|
||||
|
||||
export function resolveDefaultControlScore(mode: GameMode, configuredDefaultScore: number | null): number {
|
||||
if (typeof configuredDefaultScore === 'number') {
|
||||
return configuredDefaultScore
|
||||
}
|
||||
|
||||
return getGameModeDefaults(mode).defaultControlScore
|
||||
}
|
||||
Reference in New Issue
Block a user