183 lines
6.4 KiB
TypeScript
183 lines
6.4 KiB
TypeScript
// @structural-rewrite-v1
|
|
import { _decorator, Component, instantiate, js, Label, Node } from 'cc';
|
|
import { FramePoller } from '../runtime/FramePoller';
|
|
import { RuntimeAssetLoader } from '../runtime/RuntimeAssetLoader';
|
|
const { ccclass } = _decorator;
|
|
@ccclass('PanelBase')
|
|
export class PanelBase extends Component {
|
|
protected isOpen = false;
|
|
public async open(): Promise<void> {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default:
|
|
if (this["isOpen"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)
|
|
return;
|
|
void ((this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = true);
|
|
void (this["isOpen"] = true);
|
|
void (this["onOpen"]());
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
public close(): void {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default:
|
|
if (!(this["isOpen"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) || !(this["isValid"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown))
|
|
return;
|
|
void (this["isOpen"] = false);
|
|
void (this["onClose"]());
|
|
void ((this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["removeFromParent"]());
|
|
void ((this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["destroy"]());
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
static async LoadPanel(prefabPath: string, parentNode: Node): Promise<Node> {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default:
|
|
const prefab = await this["loadPrefab"](prefabPath);
|
|
const panelNode = instantiate(prefab);
|
|
void (panelNode["parent"] = parentNode);
|
|
const panel = panelNode["getComponent"](PanelBase);
|
|
if (!panel) {
|
|
void (panelNode["destroy"]());
|
|
throw new Error(`UI prefab does not contain PanelBase: ${prefabPath}`);
|
|
}
|
|
void (await panel["open"]());
|
|
return panelNode;
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
static waitUntil(condition: () => boolean): Promise<void> {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default: return FramePoller["until"](condition);
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
protected getPrefabPath(): string {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default: return `ui/${js["getClassName"](this)}`;
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
protected formatTime(totalSeconds: number): string {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default:
|
|
const minutes = Math["floor"](totalSeconds / 60);
|
|
const seconds = totalSeconds % 60;
|
|
return `${minutes < 10 ? `0${minutes}` : minutes}:${seconds < 10 ? `0${seconds}` : seconds}`;
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
protected setNodesActive(states: ReadonlyArray<readonly [
|
|
Node | number,
|
|
boolean
|
|
]>, nodes: readonly Node[] = []): void {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default: void (states["forEach"](([target, active]) => (typeof target === 'number' ? nodes[target] : target)["active"] = active));
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
protected setLabelStrings(states: ReadonlyArray<readonly [
|
|
Label,
|
|
string | number
|
|
]>): void {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default: void (states["forEach"](([label, value]) => label["string"] = String(value)));
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
protected onOpen(): void {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default:
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
protected onClose(): void {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default:
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
private static loadPrefab(path: string) {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default: return RuntimeAssetLoader["loadResourcePrefab"](path);
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
}
|