feat: 接入通关弹窗

This commit is contained in:
richarjiang
2026-04-26 16:20:37 +08:00
parent f5732b46a5
commit 5074706115
52 changed files with 8064 additions and 540 deletions

View File

@@ -15,6 +15,8 @@ export class AuthManager {
private _isLoggedIn: boolean = false;
/** 服务端返回的已完成关卡 ID登录后暂存等 LevelDataManager 就绪后同步) */
private _completedLevelIds: string[] = [];
/** 服务端返回的已完成关卡数量,用于称号体系计算 */
private _completedLevelCount: number = 0;
static get instance(): AuthManager {
if (!this._instance) {
@@ -37,6 +39,14 @@ export class AuthManager {
return this._completedLevelIds;
}
get completedLevelCount(): number {
return this._completedLevelCount;
}
addCompletedLevelCount(delta: number = 1): void {
this._completedLevelCount = Math.max(0, this._completedLevelCount + delta);
}
/**
* 初始化认证:尝试恢复 token 或执行微信登录
*/
@@ -109,8 +119,9 @@ export class AuthManager {
this._isLoggedIn = true;
StorageManager.setStamina(gameData.user.stamina);
this._completedLevelIds = gameData.completedLevelIds;
this._completedLevelCount = this._resolveCompletedLevelCount(gameData);
console.log(`[AuthManager] Token 验证成功,体力: ${gameData.user.stamina.current}/${gameData.user.stamina.max},已完成: ${this._completedLevelIds.length}`);
console.log(`[AuthManager] Token 验证成功,体力: ${gameData.user.stamina.current}/${gameData.user.stamina.max},已完成: ${this._completedLevelCount}`);
return true;
}
@@ -121,6 +132,7 @@ export class AuthManager {
const gameData = await this._fetchGameData();
if (gameData) {
this._completedLevelIds = gameData.completedLevelIds;
this._completedLevelCount = this._resolveCompletedLevelCount(gameData);
StorageManager.setStamina(gameData.user.stamina);
}
}
@@ -140,4 +152,8 @@ export class AuthManager {
return null;
}
}
private _resolveCompletedLevelCount(gameData: GameData): number {
return gameData.completedLevelCount ?? gameData.completedLevelIds.length;
}
}