import type { DOStage } from "../models/DOStage" import { config } from "../constants/config" import { respath } from "../constants/respath" import { ResourceManager } from "../models/ResourceManager" import { StorageManager } from "../models/StorageManager" import { UIManager } from "../models/UIManager" import { Utility_ConvertSecondToString } from "../utils/utility" import { Difficulty } from "./Difficulty" const { regClass, property } = Laya @regClass() export class GameDone extends Laya.Script { declare owner: Laya.Box @property(Laya.Image) public bg: Laya.Image @property(Laya.Image) public obj_light: Laya.Image @property(Laya.Image) public obj_top: Laya.Image @property(Laya.Box) public obj_panel: Laya.Box @property(Laya.Image) public star1: Laya.Image @property(Laya.Image) public star2: Laya.Image @property(Laya.Image) public star3: Laya.Image @property(Laya.Image) public star4: Laya.Image @property(Laya.Label) public label_diffucuty: Laya.Label @property(Laya.Label) public label_time: Laya.Label @property(Laya.Label) public label_score: Laya.Label @property(Laya.Box) public btn_new: Laya.Box @property(Laya.Box) public btn_home: Laya.Box @property(Laya.Box) public btn_continue: Laya.Box onAwake(): void { ResourceManager.getInstance().loadTexture(respath.bg_done, this.bg) ResourceManager.getInstance().loadTexture(respath.bg_done_light, this.obj_light) ResourceManager.getInstance().loadTexture(respath.bg_done_top, this.obj_top) ResourceManager.getInstance().loadTexture(respath.icon_star2, this.star1) ResourceManager.getInstance().loadTexture(respath.icon_star2, this.star2) ResourceManager.getInstance().loadTexture(respath.icon_star2, this.star3) ResourceManager.getInstance().loadTexture(respath.icon_star1, this.star4) this.owner.x = 0 this.owner.y = 0 this.obj_panel.alpha = 0 this.obj_panel.scaleX = 0.8 this.obj_panel.scaleY = 0.8 this.star1.scaleX = 1.2 this.star1.scaleY = 1.2 this.star2.scaleX = 1.2 this.star2.scaleY = 1.2 this.star3.scaleX = 1.2 this.star3.scaleY = 1.2 this.star4.scaleX = 1.2 this.star4.scaleY = 1.2 } onStart(): void { // Laya.Tween.to(this.owner, { y: 0 }, 300, Laya.Ease.elasticOut) Laya.Tween.to(this.obj_panel, { alpha: 1 }, 400, Laya.Ease.elasticOut, null, 100) Laya.Tween.to(this.obj_panel, { scaleX: 1, scaleY: 1 }, 400, Laya.Ease.elasticOut, null, 100) Laya.Tween.to(this.star1, { scaleX: 1, scaleY: 1 }, 300, Laya.Ease.elasticOut, null, 400) const y1 = this.star1.y this.star1.y = y1 - 10 Laya.Tween.to(this.star1, { y: y1 }, 300, Laya.Ease.elasticOut, null, 400) Laya.Tween.to(this.star2, { scaleX: 1, scaleY: 1 }, 300, Laya.Ease.elasticOut, null, 600) const y2 = this.star2.y this.star2.y = y2 - 10 Laya.Tween.to(this.star2, { y: y2 }, 300, Laya.Ease.elasticOut, null, 600) Laya.Tween.to(this.star3, { scaleX: 1, scaleY: 1 }, 300, Laya.Ease.elasticOut, null, 800) const y3 = this.star3.y this.star3.y = y3 - 10 Laya.Tween.to(this.star3, { y: y3 }, 300, Laya.Ease.elasticOut, null, 800) Laya.Tween.to(this.star4, { scaleX: 1, scaleY: 1 }, 300, Laya.Ease.elasticOut, null, 600) const y4 = this.star4.y this.star4.y = y4 - 10 Laya.Tween.to(this.star4, { y: y4 }, 300, Laya.Ease.elasticOut, null, 600) this.obj_light.alpha = 0 Laya.Tween.to(this.obj_light, { alpha: 0.2 }, 500, Laya.Ease.elasticOut, null, 1000) this.btn_new.alpha = 0 Laya.Tween.to(this.btn_new, { alpha: 1 }, 300, Laya.Ease.elasticOut, null, 1200) } public onSetStageInfo(doStage: DOStage): void { this.label_diffucuty.text = doStage.get_difficulty() this.label_time.text = Utility_ConvertSecondToString(doStage.get_duration()) this.label_score.text = doStage.get_score().toString() this.btn_new.on(Laya.Event.CLICK, this, () => { if (config.H_SCREEN) { const user = StorageManager.getInstance().getUser() user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度 StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, doStage.get_difficulty(), doStage.get_difficulty()) UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID) this.owner.destroy() } 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.owner.destroy() }) }) } }) this.btn_continue.on(Laya.Event.CLICK, this, () => { // 这个按钮只有从DC来的会显示 UIManager.getInstance().loadDCUI() UIManager.getInstance().closeStageUI() this.owner.destroy() }) this.btn_home.on(Laya.Event.CLICK, this, () => { if (config.H_SCREEN) { UIManager.getInstance().closeDCUI() if (doStage.get_stageType() === config.STAGE_TYPE.MAIN) { const user = StorageManager.getInstance().getUser() user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度 StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, doStage.get_difficulty(), doStage.get_difficulty()) UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID) } else if (doStage.get_stageType() === config.STAGE_TYPE.DC) { UIManager.getInstance().setTopbarTo(true) } } else { UIManager.getInstance().loadHomeUI() UIManager.getInstance().closeStageUI() } this.owner.destroy() }) } }