feat: 支持新版的关卡页面
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user