Merge branch 'main' of 47.107.44.202:xionglijia/18xchat
This commit is contained in:
@@ -366,74 +366,6 @@ export class NavigationManager {
|
|||||||
ViewManager.I.openBundlesView(panelName, data, callback);
|
ViewManager.I.openBundlesView(panelName, data, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 支持自定义动画方向的面板切换方法
|
|
||||||
* @param panelType 目标面板类型
|
|
||||||
* @param transitionConfig 过渡动画配置
|
|
||||||
* @param force 是否强制切换
|
|
||||||
*/
|
|
||||||
public switchToPanelWithTransition(
|
|
||||||
panelType: PanelType,
|
|
||||||
transitionConfig: PageTransitionConfig,
|
|
||||||
force: boolean = false
|
|
||||||
): Node {
|
|
||||||
if (!panelType) {
|
|
||||||
logger.error(
|
|
||||||
"[NavigationManager] switchToPanelWithTransition: panelType is invalid"
|
|
||||||
);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.currentActivePanelType === panelType && !force) {
|
|
||||||
logger.log(
|
|
||||||
`[NavigationManager] Already on ${panelType}, skipping switch`
|
|
||||||
);
|
|
||||||
return this.currentActivePanel;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.navigationPanel) {
|
|
||||||
logger.warn(
|
|
||||||
"[NavigationManager] NavigationPanel not registered, fallback to direct ViewManager call"
|
|
||||||
);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 切换面板前先关闭所有弹窗
|
|
||||||
this.closeAllPopups();
|
|
||||||
|
|
||||||
// 通知NavigationPanel显示加载状态
|
|
||||||
this.navigationPanel.showLoading?.();
|
|
||||||
|
|
||||||
// 获取动画方向
|
|
||||||
const hideDirection = this.getDirectionFromTransitionType(
|
|
||||||
transitionConfig.outgoingTransition
|
|
||||||
);
|
|
||||||
const showDirection = this.getDirectionFromTransitionType(
|
|
||||||
transitionConfig.incomingTransition
|
|
||||||
);
|
|
||||||
|
|
||||||
// 隐藏当前面板(包括子页面)
|
|
||||||
if (this.currentActivePanel && this.currentActivePanel.isValid) {
|
|
||||||
this.hidePanelWithAnimation(this.currentActivePanel, hideDirection);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 加载并显示目标面板
|
|
||||||
this.loadOrGetPanel(panelType, (panel: Node) => {
|
|
||||||
this.currentActivePanelType = panelType;
|
|
||||||
|
|
||||||
// 更新NavigationPanel按钮状态
|
|
||||||
this.navigationPanel.updateButtonStates?.(panelType);
|
|
||||||
|
|
||||||
// 显示面板
|
|
||||||
this.showPanelWithAnimation(panel, showDirection, () => {
|
|
||||||
this.currentActivePanel = panel;
|
|
||||||
this.navigationPanel.hideLoading?.();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将过渡类型转换为方向字符串
|
* 将过渡类型转换为方向字符串
|
||||||
*/
|
*/
|
||||||
@@ -877,6 +809,7 @@ export class NavigationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
panel.active = true;
|
panel.active = true;
|
||||||
|
panel.getComponent(li_BaseView)
|
||||||
|
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case "left":
|
case "left":
|
||||||
|
|||||||
@@ -68,11 +68,11 @@ export class PastGirlListPanel extends li_BaseView {
|
|||||||
item.reset();
|
item.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected onEnable(): void {
|
protected onEnable(): void {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
}
|
}
|
||||||
// TODO: 实现获取已解锁女孩列表的逻辑
|
|
||||||
// 这个方法需要遍历所有分类,找出 isRelease === true 的女孩
|
|
||||||
private async getUnlockedGirls(): Promise<number[]> {
|
private async getUnlockedGirls(): Promise<number[]> {
|
||||||
await this.reqCanChatGirlData();
|
await this.reqCanChatGirlData();
|
||||||
|
|
||||||
@@ -82,7 +82,24 @@ export class PastGirlListPanel extends li_BaseView {
|
|||||||
return allids;
|
return allids;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cacheIds: number[];
|
||||||
async refresh() {
|
async refresh() {
|
||||||
|
// 获取已解锁女孩列表
|
||||||
|
const ids = await this.getUnlockedGirls();
|
||||||
|
|
||||||
|
if (this.cacheIds && ids && this.cacheIds.length == ids.length) {
|
||||||
|
let isSame = true;
|
||||||
|
for (let i = 0; i < ids.length; i++) {
|
||||||
|
const element = ids[i];
|
||||||
|
if (this.cacheIds[i] != element) {
|
||||||
|
isSame = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isSame) return;
|
||||||
|
}
|
||||||
|
this.cacheIds = ids;
|
||||||
|
|
||||||
// 回收当前显示的节点到缓存池
|
// 回收当前显示的节点到缓存池
|
||||||
if (this.cache) {
|
if (this.cache) {
|
||||||
for (let i = this.cache.length - 1; i >= 0; i--) {
|
for (let i = this.cache.length - 1; i >= 0; i--) {
|
||||||
@@ -92,9 +109,6 @@ export class PastGirlListPanel extends li_BaseView {
|
|||||||
this.cache = [];
|
this.cache = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取已解锁女孩列表
|
|
||||||
const ids = await this.getUnlockedGirls();
|
|
||||||
|
|
||||||
// 根据排序后的数据刷新界面
|
// 根据排序后的数据刷新界面
|
||||||
for (let id of ids) {
|
for (let id of ids) {
|
||||||
let item = this.getItemFromPool();
|
let item = this.getItemFromPool();
|
||||||
|
|||||||
Reference in New Issue
Block a user