ui修改
This commit is contained in:
@@ -27,7 +27,7 @@ export enum PageTransitionType {
|
||||
*/
|
||||
export enum PanelType {
|
||||
THEME = "ThemePanel",
|
||||
GIRL_DETAIL = "GirlDetailPanel",
|
||||
RANK = "RankPanel",
|
||||
PAST_GIRL_LIST = "PastGirlListPanel",
|
||||
PERSONAL = "PersonalPanel",
|
||||
}
|
||||
@@ -49,6 +49,7 @@ export interface SubPanelAnimationConfig {
|
||||
openAnimation: PageTransitionType;
|
||||
closeAnimation: PageTransitionType;
|
||||
duration?: number;
|
||||
hideBasePanel?: boolean; // 是否隐藏basePanel,用于全屏子面板
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -195,6 +196,9 @@ export class NavigationManager {
|
||||
private subPanelAnimationConfigs: Map<Node, SubPanelAnimationConfig> =
|
||||
new Map();
|
||||
|
||||
// 隐藏的basePanel映射:subPanel -> basePanel
|
||||
private hiddenBasePanels: Map<Node, Node> = new Map();
|
||||
|
||||
// 弹窗管理相关属性
|
||||
private popupPanels: Set<Node> = new Set(); // 管理所有打开的弹窗
|
||||
|
||||
@@ -330,9 +334,16 @@ export class NavigationManager {
|
||||
openAnimation: PageTransitionType.SCALE,
|
||||
closeAnimation: PageTransitionType.SCALE,
|
||||
duration: 0.3,
|
||||
hideBasePanel: false,
|
||||
};
|
||||
const config = animationConfig || defaultConfig;
|
||||
|
||||
// 如果需要隐藏basePanel,在打开动画前隐藏
|
||||
if (config.hideBasePanel && basePanel.active) {
|
||||
logger.log(`[NavigationManager] 隐藏basePanel: ${basePanel.name}`);
|
||||
basePanel.active = false;
|
||||
}
|
||||
|
||||
const callback = (n: Node) => {
|
||||
if (!n || !n.isValid) {
|
||||
logger.error(
|
||||
@@ -359,6 +370,12 @@ export class NavigationManager {
|
||||
// 存储动画配置
|
||||
this.subPanelAnimationConfigs.set(n, config);
|
||||
|
||||
// 如果配置了隐藏basePanel,记录映射关系
|
||||
if (config.hideBasePanel) {
|
||||
this.hiddenBasePanels.set(n, basePanel);
|
||||
logger.log(`[NavigationManager] 记录隐藏映射: ${n.name} -> ${basePanel.name}`);
|
||||
}
|
||||
|
||||
// 执行打开动画
|
||||
this.playSubPanelOpenAnimation(n, config);
|
||||
};
|
||||
@@ -592,11 +609,22 @@ export class NavigationManager {
|
||||
openAnimation: PageTransitionType.SCALE,
|
||||
closeAnimation: PageTransitionType.SCALE,
|
||||
duration: 0.3,
|
||||
hideBasePanel: false,
|
||||
};
|
||||
}
|
||||
|
||||
// 执行关闭动画
|
||||
this.playSubPanelCloseAnimation(panelNode, config, () => {
|
||||
// 如果隐藏了basePanel,需要恢复显示
|
||||
if (this.hiddenBasePanels.has(panelNode)) {
|
||||
const basePanel = this.hiddenBasePanels.get(panelNode);
|
||||
if (basePanel && basePanel.isValid) {
|
||||
logger.log(`[NavigationManager] 恢复显示basePanel: ${basePanel.name}`);
|
||||
basePanel.active = true;
|
||||
}
|
||||
this.hiddenBasePanels.delete(panelNode);
|
||||
}
|
||||
|
||||
// 从管理映射中移除
|
||||
this.removeSubPanelFromMappings(panelNode);
|
||||
|
||||
@@ -643,6 +671,11 @@ export class NavigationManager {
|
||||
if (this.subPanelAnimationConfigs.has(panelNode)) {
|
||||
this.subPanelAnimationConfigs.delete(panelNode);
|
||||
}
|
||||
|
||||
// 移除隐藏映射
|
||||
if (this.hiddenBasePanels.has(panelNode)) {
|
||||
this.hiddenBasePanels.delete(panelNode);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -652,7 +685,7 @@ export class NavigationManager {
|
||||
switch (panelType) {
|
||||
case PanelType.THEME:
|
||||
return 0;
|
||||
case PanelType.GIRL_DETAIL:
|
||||
case PanelType.RANK:
|
||||
return 1;
|
||||
case PanelType.PAST_GIRL_LIST:
|
||||
return 2;
|
||||
@@ -671,8 +704,8 @@ export class NavigationManager {
|
||||
switch (node.name) {
|
||||
case "ThemePanel":
|
||||
return PanelType.THEME;
|
||||
case "GirlDetailPanel":
|
||||
return PanelType.GIRL_DETAIL;
|
||||
case "RankPanel":
|
||||
return PanelType.RANK;
|
||||
case "PastGirlListPanel":
|
||||
return PanelType.PAST_GIRL_LIST;
|
||||
case "PersonalPanel":
|
||||
@@ -696,12 +729,8 @@ export class NavigationManager {
|
||||
* 获取面板数据
|
||||
*/
|
||||
private getPanelData(panelType: PanelType): any {
|
||||
switch (panelType) {
|
||||
case PanelType.GIRL_DETAIL:
|
||||
return this.selectedGirlId; // 使用当前选中的角色ID
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
// 所有主页面都不需要特殊数据
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user