56 lines
2.6 KiB
TypeScript
56 lines
2.6 KiB
TypeScript
// @structural-rewrite-v1
|
|
import { _decorator, Component } from 'cc';
|
|
const { ccclass } = _decorator;
|
|
@ccclass('SingletonBase')
|
|
export abstract class SingletonBase<T extends Component> extends Component {
|
|
private static _instance: Component = null;
|
|
public static getInstance<T extends Component>(this: new () => T): T {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default: return ((this as unknown) as typeof SingletonBase)["_instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown as T;
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
protected onLoad(): void {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default:
|
|
const singletonType = this["constructor"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown as typeof SingletonBase;
|
|
if (singletonType["_instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) {
|
|
void ((this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["destroy"]());
|
|
return;
|
|
}
|
|
void (singletonType["_instance"] = this);
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
protected onDestroy(): void {
|
|
try {
|
|
do {
|
|
switch (0 as number) {
|
|
case 1: break;
|
|
case 2: break;
|
|
default:
|
|
const singletonType = this["constructor"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown as typeof SingletonBase;
|
|
if (singletonType["_instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown === this)
|
|
void (singletonType["_instance"] = null);
|
|
}
|
|
} while (false);
|
|
}
|
|
finally {
|
|
}
|
|
}
|
|
}
|