feat: 支持新版的关卡页面

This commit is contained in:
richarjiang
2026-04-19 14:19:13 +08:00
parent 34e06480ce
commit 5eef9d8528
9 changed files with 1165 additions and 410 deletions

View File

@@ -23,7 +23,7 @@ export class ShareManager {
/** 分享模式的关卡数据null 表示正常模式) */
private _shareLevels: RuntimeLevelConfig[] | null = null;
/** API 返回的原始关卡数据(保留 imageUrl 用于懒加载) */
/** API 返回的原始关卡数据(保留 image1Url/image2Url 用于懒加载) */
private _shareApiLevels: ShareLevelData[] = [];
private _shareTitle: string = '';
@@ -91,7 +91,11 @@ export class ShareManager {
const runtimeLevels: RuntimeLevelConfig[] = levels.map((level) => ({
id: level.id,
name: `${level.level}`,
spriteFrame: null,
spriteFrame1: null,
spriteFrame2: null,
image1Description: level.image1Description,
image2Description: level.image2Description,
punchline: level.punchline,
clue1: level.hint1,
clue2: level.hint2,
clue3: level.hint3,
@@ -99,11 +103,17 @@ export class ShareManager {
completed: false,
}));
// 预加载首关图片
// 预加载首关图片(两张并行加载)
if (levels.length > 0) {
const sf = await this._loadImage(levels[0].imageUrl);
if (sf) {
runtimeLevels[0].spriteFrame = sf;
const [sf1, sf2] = await Promise.all([
this._loadImage(levels[0].image1Url),
this._loadImage(levels[0].image2Url),
]);
if (sf1) {
runtimeLevels[0].spriteFrame1 = sf1;
}
if (sf2) {
runtimeLevels[0].spriteFrame2 = sf2;
}
}
@@ -143,15 +153,21 @@ export class ShareManager {
}
const config = this._shareLevels[index];
if (config.spriteFrame) {
if (config.spriteFrame1) {
return config;
}
const apiLevel = this._shareApiLevels[index];
if (apiLevel?.imageUrl) {
const sf = await this._loadImage(apiLevel.imageUrl);
if (sf) {
config.spriteFrame = sf;
if (apiLevel?.image1Url) {
const [sf1, sf2] = await Promise.all([
this._loadImage(apiLevel.image1Url),
this._loadImage(apiLevel.image2Url),
]);
if (sf1) {
config.spriteFrame1 = sf1;
}
if (sf2) {
config.spriteFrame2 = sf2;
}
}