import type { DOStage } from "../models/DOStage" import { config } from "../constants/config" import { respath } from "../constants/respath" import { EVENT_TYPES, EventManager } from "../models/EventManager" import { StorageManager } from "../models/StorageManager" import { UIManager } from "../models/UIManager" import { Difficulty } from "./Difficulty" import { ResourceManager } from "../models/ResourceManager" import { Utility_EaseOut, Utility_EaseOut_2 } from "../utils/utility" const { regClass, property } = Laya @regClass() export class GameOver extends Laya.Script { declare owner: Laya.Box @property(Laya.Box) public btn_second: Laya.Box @property(Laya.Box) public btn_restart: Laya.Box @property(Laya.Box) public btn_newOrClose: Laya.Box @property(Laya.Label) public label_newOrClose: Laya.Label private mask: Laya.Image private center: Laya.Box onAwake(): void { this.mask = this.owner.getChildByName("Image") as Laya.Image this.mask.alpha = 0 Laya.Tween.to(this.mask, {alpha: 0.6}, 400, Utility_EaseOut) this.center = this.owner.getChildByName("center") as Laya.Box this.center.scaleX = 0.8 this.center.scaleY = 0.8 Laya.Tween.to(this.center, {scaleX: 1, scaleY: 1}, 400, Utility_EaseOut) this.center.alpha = 0 Laya.Tween.to(this.center, {alpha: 1}, 400, Utility_EaseOut) } destroyUI(): void { Laya.Tween.to(this.mask, {alpha: 0}, 400, Utility_EaseOut_2) Laya.Tween.to(this.center, {scaleX: 0.8, scaleY: 0.8}, 400, Utility_EaseOut_2) Laya.Tween.to(this.center, {alpha: 0}, 400, Utility_EaseOut_2, Laya.Handler.create(this, () => { this.owner.destroy() })) } public onSetStageInfo(doStage: DOStage): void { this.btn_second.on(Laya.Event.CLICK, this, () => { doStage.set_mistake(doStage.get_mistake() - 1) EventManager.getInstance().DispatchEvent(EVENT_TYPES.NOT_UPDATE_MISTAKE) this.destroyUI() }) this.btn_restart.on(Laya.Event.CLICK, this, () => { const stageID = doStage.get_stageID() const type = doStage.get_stageType() const difficulty = doStage.get_difficulty() StorageManager.getInstance().newStage(stageID, type, difficulty, difficulty) UIManager.getInstance().loadStageUI(stageID) this.destroyUI() }) const type = doStage.get_stageType() if (type === config.STAGE_TYPE.MAIN) { this.label_newOrClose.text = "New Game" this.btn_newOrClose.on(Laya.Event.CLICK, this, () => { if (config.H_SCREEN) { const user = StorageManager.getInstance().getUser() user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度 const difficulty = doStage.get_difficulty() StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty) UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID) this.destroyUI() } else { ResourceManager.getInstance().loadPrefab(respath.difficulty_ui_res, (go: any)=> { const prefab = go.create() const d = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(Difficulty) d.onInit((value: string) => { console.log("选择难度", value) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value) UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID) this.destroyUI() }) }) } }) } else { this.label_newOrClose.text = "Close" this.btn_newOrClose.on(Laya.Event.CLICK, this, () => { UIManager.getInstance().loadDCUI() UIManager.getInstance().closeStageUI() this.destroyUI() }) } } }