chore:代码重构

This commit is contained in:
2026-07-17 10:15:42 +08:00
parent 5e689878ca
commit 56ea1dfd7b
58 changed files with 5784 additions and 2685 deletions
+99 -42
View File
@@ -1,57 +1,114 @@
import { _decorator, Node, director, resources, instantiate, Canvas, Component, js } from 'cc';
// @structural-rewrite-v1
import { _decorator, Component, js, Node } from 'cc';
import { PanelBase } from './PanelBase';
const { ccclass, property } = _decorator;
@ccclass('UIManager')
export class UIManager extends Component {
static instance: UIManager
private panels: Map<string, PanelBase> = new Map();
@property({ type: Node })
static instance: UIManager;
@property({ "type": Node })
uiRoot: Node = null;
onLoad() {
UIManager.instance = this;
private readonly panels = new Map<string, PanelBase>();
private readonly loadingPanels = new Map<string, Promise<PanelBase>>();
protected onLoad(): void {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default: void (UIManager["instance"] = this);
}
} while (false);
}
finally {
}
}
// 打开UI面板
public async openPanel<T extends PanelBase>(panelClass: new () => T): Promise<T> {
const panelName = js.getClassName(panelClass);
if (!this.panels.has(panelName)) {
let panelNode = PanelBase.LoadPanel(`ui/${js.getClassName(panelClass)}`, this.uiRoot)
let newPanel = (await panelNode).getComponent(PanelBase)
this.panels.set(panelName, newPanel);
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
const panelName = js["getClassName"](panelClass);
return ((this["panels"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["get"](panelName)
?? await ((this["loadingPanels"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["get"](panelName) ?? this["createPanel"](panelName))) as T;
}
} while (false);
}
const existingPanel = this.panels.get(panelName);
if (existingPanel) {
existingPanel.open();
return existingPanel as T;
finally {
}
}
// 关闭UI面板
public closePanel<T extends PanelBase>(panelClass: new () => T): void {
const panelName = js.getClassName(panelClass);
if (this.panels.has(panelName)) {
const panel = this.panels.get(panelName);
if (panel) {
panel.close();
this.panels.delete(panelName);
}
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
const panelName = js["getClassName"](panelClass);
const panel = (this["panels"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["get"](panelName);
if (!panel)
return;
void ((this["panels"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["delete"](panelName));
void (panel["close"]());
}
} while (false);
}
finally {
}
}
// 关闭所有面板
public closeAllPanels(): void {
this.panels.forEach(panel => {
console.log("关闭页面", panel.node.name)
panel.close();
});
this.panels.clear();
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
const openedPanels = Array["from"]((this["panels"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["values"]());
void ((this["panels"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["clear"]());
void (openedPanels["forEach"]((panel) => panel["close"]()));
}
} while (false);
}
finally {
}
}
}
private async createPanel(panelName: string): Promise<PanelBase> {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
const loadingPanel = PanelBase["LoadPanel"](`ui/${panelName}`, this["uiRoot"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["then"]((node) => {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
const panel = node["getComponent"](PanelBase);
if (!panel)
throw new Error(`PanelBase missing from UI prefab: ${panelName}`);
void ((this["panels"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["set"](panelName, panel));
return panel;
}
} while (false);
}
finally {
}
});
void ((this["loadingPanels"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["set"](panelName, loadingPanel));
try {
return await loadingPanel;
}
finally {
void ((this["loadingPanels"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["delete"](panelName));
}
}
} while (false);
}
finally {
}
}
}