feat: 每次进入 write level 页面都拉取最新的数据
This commit is contained in:
14
AGENTS.md
14
AGENTS.md
@@ -40,13 +40,13 @@ Git 历史采用 Conventional Commits,且摘要多为中文,例如 `feat:
|
|||||||
<claude-mem-context>
|
<claude-mem-context>
|
||||||
# Memory Context
|
# Memory Context
|
||||||
|
|
||||||
# [mp-xieyingeng] recent context, 2026-06-01 11:17am GMT+8
|
# [mp-xieyingeng] recent context, 2026-06-01 11:37am GMT+8
|
||||||
|
|
||||||
Legend: 🎯session 🔴bugfix 🟣feature 🔄refactor ✅change 🔵discovery ⚖️decision 🚨security_alert 🔐security_note
|
Legend: 🎯session 🔴bugfix 🟣feature 🔄refactor ✅change 🔵discovery ⚖️decision 🚨security_alert 🔐security_note
|
||||||
Format: ID TIME TYPE TITLE
|
Format: ID TIME TYPE TITLE
|
||||||
Fetch details: get_observations([IDs]) | Search: mem-search skill
|
Fetch details: get_observations([IDs]) | Search: mem-search skill
|
||||||
|
|
||||||
Stats: 50 obs (15,406t read) | 2,405,914t work | 99% savings
|
Stats: 50 obs (15,736t read) | 2,461,717t work | 99% savings
|
||||||
|
|
||||||
### Apr 26, 2026
|
### Apr 26, 2026
|
||||||
S1309 移除 PageLevel.ts 进入关卡时弹出体力扣减 toast (Apr 26 at 5:16 PM)
|
S1309 移除 PageLevel.ts 进入关卡时弹出体力扣减 toast (Apr 26 at 5:16 PM)
|
||||||
@@ -55,11 +55,8 @@ S1308 移除进入游戏关卡时弹出体力扣减的 toast 提示 (Apr 27 at 9
|
|||||||
S1310 移除进入游戏体力扣减 toast 并在首页添加体力显示 (Apr 27 at 9:22 AM)
|
S1310 移除进入游戏体力扣减 toast 并在首页添加体力显示 (Apr 27 at 9:22 AM)
|
||||||
S1311 移除体力扣减 toast 并完善首页体验 (Apr 27 at 9:23 AM)
|
S1311 移除体力扣减 toast 并完善首页体验 (Apr 27 at 9:23 AM)
|
||||||
S1313 Implement object-fit: cover image scaling in Cocos Creator to prevent downloaded images from being distorted (Apr 27 at 9:26 AM)
|
S1313 Implement object-fit: cover image scaling in Cocos Creator to prevent downloaded images from being distorted (Apr 27 at 9:26 AM)
|
||||||
1362 9:45a 🟣 Image Cover Mode Scaling in Cocos Creator
|
|
||||||
S1312 Fix image distortion in PageLevel.ts by implementing object-fit: cover behavior for downloaded images (Apr 27 at 9:45 AM)
|
S1312 Fix image distortion in PageLevel.ts by implementing object-fit: cover behavior for downloaded images (Apr 27 at 9:45 AM)
|
||||||
1360 " ✅ Cocos Creator animation imports added to PageHome.ts
|
1363 9:45a ✅ Start game button integrated with stamina check and animation flow
|
||||||
1361 " ✅ Animation constants added to PageHome class
|
|
||||||
1363 " ✅ Start game button integrated with stamina check and animation flow
|
|
||||||
1364 " 🟣 Stamina consumption animation fully implemented in PageHome
|
1364 " 🟣 Stamina consumption animation fully implemented in PageHome
|
||||||
S1314 Implement stamina consumption animation in Cocos Creator game - when clicking StarGame button, IconLive node flies to button with floating "-1" text, then navigates to level (Apr 27 at 9:45 AM)
|
S1314 Implement stamina consumption animation in Cocos Creator game - when clicking StarGame button, IconLive node flies to button with floating "-1" text, then navigates to level (Apr 27 at 9:45 AM)
|
||||||
1365 9:46a 🔴 Animation completes but navigation to PageLevel fails
|
1365 9:46a 🔴 Animation completes but navigation to PageLevel fails
|
||||||
@@ -113,7 +110,10 @@ S1317 Implement CSS cover-mode image scaling for PageLevel.ts mainImage nodes (A
|
|||||||
1779 " 🔵 PageWriteLevels Layout Node Tree Verified After Widget Changes
|
1779 " 🔵 PageWriteLevels Layout Node Tree Verified After Widget Changes
|
||||||
1780 11:16a 🔵 TypeScript Check Requires Cocos Creator to Generate temp/declarations First
|
1780 11:16a 🔵 TypeScript Check Requires Cocos Creator to Generate temp/declarations First
|
||||||
1781 " 🔵 New Widget Bottom Inset Produces Shorter Viewport on Small Screens vs Old Minimum
|
1781 " 🔵 New Widget Bottom Inset Produces Shorter Viewport on Small Screens vs Old Minimum
|
||||||
|
1783 " 🔵 PageWriteLevels Bottom Control Layout Constraints Mapped
|
||||||
|
1784 " ✅ ScrollView Widget Bottom Inset Revised from 559.076 to 752.53
|
||||||
1782 " 🔵 PageWriteLevels Prefab __id__ Reference Integrity Confirmed Valid
|
1782 " 🔵 PageWriteLevels Prefab __id__ Reference Integrity Confirmed Valid
|
||||||
|
1785 11:19a ✅ PageWriteLevels Widget Layout Refactor Complete — Final Diff Confirmed
|
||||||
|
|
||||||
Access 2406k tokens of past work via get_observations([IDs]) or mem-search skill.
|
Access 2462k tokens of past work via get_observations([IDs]) or mem-search skill.
|
||||||
</claude-mem-context>
|
</claude-mem-context>
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ export class PageWriteLevels extends BaseView {
|
|||||||
private _levelCount: number = 0;
|
private _levelCount: number = 0;
|
||||||
private _itemNodes: Node[] = [];
|
private _itemNodes: Node[] = [];
|
||||||
private _scrollViewComp: ScrollView | null = null;
|
private _scrollViewComp: ScrollView | null = null;
|
||||||
|
private _levelListLoadToken: number = 0;
|
||||||
|
|
||||||
/** 缓存 view 节点的 UITransform,避免每次 _updateContentSize 重复查找 */
|
/** 缓存 view 节点的 UITransform,避免每次 _updateContentSize 重复查找 */
|
||||||
private _viewTransform: UITransform | null = null;
|
private _viewTransform: UITransform | null = null;
|
||||||
@@ -140,11 +141,7 @@ export class PageWriteLevels extends BaseView {
|
|||||||
console.log('[PageWriteLevels] onViewShow');
|
console.log('[PageWriteLevels] onViewShow');
|
||||||
this._resizeScrollViewport();
|
this._resizeScrollViewport();
|
||||||
this._updateContentSize();
|
this._updateContentSize();
|
||||||
|
void this._initLevelList();
|
||||||
// 仅首次初始化列表,从预览页返回时保留选中状态
|
|
||||||
if (this._itemNodes.length === 0) {
|
|
||||||
void this._initLevelList();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private _resizeScrollViewport(): void {
|
private _resizeScrollViewport(): void {
|
||||||
@@ -170,23 +167,32 @@ export class PageWriteLevels extends BaseView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async _initLevelList(): Promise<void> {
|
private async _initLevelList(): Promise<void> {
|
||||||
this._clearList();
|
const loadToken = ++this._levelListLoadToken;
|
||||||
|
const selectedLevelIds = this._getSelectedLevelIdSet();
|
||||||
|
|
||||||
// 拉取当前用户所有已通关关卡
|
// 拉取当前用户所有已通关关卡
|
||||||
const levels = await CompletedLevelsManager.instance.fetch();
|
const levels = await CompletedLevelsManager.instance.fetch(true);
|
||||||
|
if (loadToken !== this._levelListLoadToken) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (levels === null) {
|
if (levels === null) {
|
||||||
console.warn('[PageWriteLevels] 获取已通关关卡失败');
|
console.warn('[PageWriteLevels] 获取已通关关卡失败');
|
||||||
ToastManager.instance.show('获取关卡列表失败,请稍后重试');
|
ToastManager.instance.show('获取关卡列表失败,请稍后重试');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._clearList();
|
||||||
this._levels = levels;
|
this._levels = levels;
|
||||||
this._levelCount = this._levels.length;
|
this._levelCount = this._levels.length;
|
||||||
|
this._restoreSelectedIndices(selectedLevelIds);
|
||||||
console.log('[PageWriteLevels] 已通关关卡总数:', this._levelCount);
|
console.log('[PageWriteLevels] 已通关关卡总数:', this._levelCount);
|
||||||
|
|
||||||
if (this._levelCount === 0) {
|
if (this._levelCount === 0) {
|
||||||
console.warn('[PageWriteLevels] 用户尚未通关任何关卡');
|
console.warn('[PageWriteLevels] 用户尚未通关任何关卡');
|
||||||
ToastManager.instance.show('还没有已通关的关卡,快去玩几关吧');
|
ToastManager.instance.show('还没有已通关的关卡,快去玩几关吧');
|
||||||
|
this._updateContentSize();
|
||||||
|
this._updateSelectionUI();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,6 +204,29 @@ export class PageWriteLevels extends BaseView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _getSelectedLevelIdSet(): Set<string> {
|
||||||
|
const selectedLevelIds = new Set<string>();
|
||||||
|
for (const index of this._selectedIndices) {
|
||||||
|
const level = this._levels[index] ?? null;
|
||||||
|
if (level) {
|
||||||
|
selectedLevelIds.add(level.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return selectedLevelIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _restoreSelectedIndices(selectedLevelIds: Set<string>): void {
|
||||||
|
if (selectedLevelIds.size === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let index = 0; index < this._levels.length; index++) {
|
||||||
|
if (selectedLevelIds.has(this._levels[index].id)) {
|
||||||
|
this._selectedIndices.add(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private _clearList(): void {
|
private _clearList(): void {
|
||||||
for (const node of this._itemNodes) {
|
for (const node of this._itemNodes) {
|
||||||
if (node && node.isValid) {
|
if (node && node.isValid) {
|
||||||
|
|||||||
Reference in New Issue
Block a user