changes
This commit is contained in:
@@ -12,6 +12,7 @@ export type CpuPvpLeaderboardEntry = {
|
||||
}
|
||||
|
||||
const cpuLeaderboardKey = 'chronicle.pvpCpuLeaderboard.v1'
|
||||
const checkpointKey = 'chronicle.pvpRoguelikeCheckpoint.v1'
|
||||
|
||||
export function randomCpuDifficulty(): CpuDifficulty {
|
||||
return (Math.floor(Math.random() * 5) + 1) as CpuDifficulty
|
||||
@@ -44,3 +45,24 @@ export function recordCpuPvpLeaderboard(entry: CpuPvpLeaderboardEntry) {
|
||||
.slice(0, 30)
|
||||
localStorage.setItem(cpuLeaderboardKey, JSON.stringify(next))
|
||||
}
|
||||
|
||||
function checkpointStorageKey(characterId: number, contentType: PvpContentType) {
|
||||
return `${checkpointKey}:${characterId}:${contentType}`
|
||||
}
|
||||
|
||||
export function loadPvpRoguelikeCheckpoint(characterId: number, contentType: PvpContentType) {
|
||||
const value = Number(localStorage.getItem(checkpointStorageKey(characterId, contentType)) ?? 1)
|
||||
return Number.isInteger(value) && value >= 5 ? value : 1
|
||||
}
|
||||
|
||||
export function recordPvpRoguelikeCheckpoint(
|
||||
characterId: number,
|
||||
contentType: PvpContentType,
|
||||
stage: number,
|
||||
) {
|
||||
if (stage < 5 || stage % 5 !== 0) return loadPvpRoguelikeCheckpoint(characterId, contentType)
|
||||
const current = loadPvpRoguelikeCheckpoint(characterId, contentType)
|
||||
const next = Math.max(current, stage)
|
||||
localStorage.setItem(checkpointStorageKey(characterId, contentType), String(next))
|
||||
return next
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user