MatchMaster/assets/lose/script/LosePanel.ts
2026-08-28 19:21:40 +08:00

67 lines
1.9 KiB
TypeScript

const { ccclass } = cc._decorator;
type LosePanelAction = (event?: cc.Event, customEventData?: string) => void;
interface LosePanelActions {
[name: string]: LosePanelAction;
}
/** Lose prefab 的按钮桥接层;失败流程仍由 Map 和 SceneManager 管理。 */
@ccclass
export default class LosePanel extends cc.Component {
private actions: LosePanelActions = null;
bind(actions: LosePanelActions) {
this.actions = actions || {};
}
shareFriend(event?: cc.Event, customEventData?: string) {
this.invoke("shareFriend", event, customEventData);
}
shareFriend2(event?: cc.Event, customEventData?: string) {
this.invoke("shareFriend2", event, customEventData);
}
shareClose(event?: cc.Event, customEventData?: string) {
this.invoke("shareClose", event, customEventData);
}
homeBtn(event?: cc.Event, customEventData?: string) {
this.invoke("homeBtn", event, customEventData);
}
reviewLevel(event?: cc.Event, customEventData?: string) {
this.invoke("reviewLevel", event, customEventData);
}
closeWinStreak(event?: cc.Event, customEventData?: string) {
this.invoke("closeWinStreak", event, customEventData);
}
openHealth(event?: cc.Event, customEventData?: string) {
this.invoke("openHealth", event, customEventData);
}
returnHome(event?: cc.Event, customEventData?: string) {
this.invoke("returnHome", event, customEventData);
}
againLevel(event?: cc.Event, customEventData?: string) {
this.invoke("againLevel", event, customEventData);
}
private invoke(name: string, event?: cc.Event, customEventData?: string) {
const action = this.actions && this.actions[name];
if (action) {
action(event, customEventData);
return;
}
cc.warn("LosePanel action is not bound:", name);
}
onDestroy() {
this.actions = null;
}
}