213 lines
6.0 KiB
TypeScript
213 lines
6.0 KiB
TypeScript
import type { TrophyRecord } from "../types/global"
|
|
import type { DOStage } from "./DOStage"
|
|
import { config } from "../constants/config"
|
|
import { respath } from "../constants/respath"
|
|
import { DailyChallenge } from "../views/dc/DailyChallenge"
|
|
import { TrophyClaim } from "../views/dc/TrophyClaim"
|
|
import { TrophyRoom } from "../views/dc/TrophyRoom"
|
|
import { TrophyShow } from "../views/dc/TrophyShow"
|
|
import { GameDone } from "../views/GameDone"
|
|
import { GameOver } from "../views/GameOver"
|
|
import { GamePause } from "../views/GamePause"
|
|
import { Stage } from "../views/Stage"
|
|
import { TopBar } from "../views/TopBar"
|
|
import { StorageManager } from "./StorageManager"
|
|
|
|
const { regClass, property } = Laya
|
|
|
|
@regClass()
|
|
export class UIManager extends Laya.Script {
|
|
declare owner: Laya.Scene
|
|
|
|
private static _instance: UIManager
|
|
public static getInstance(): UIManager {
|
|
return UIManager._instance
|
|
}
|
|
|
|
@property(Boolean)
|
|
public debug: boolean = false
|
|
|
|
@property(Laya.Image)
|
|
public mask: Laya.Image
|
|
|
|
@property(Laya.Box)
|
|
public btn_clean: Laya.Box
|
|
|
|
onAwake(): void {
|
|
UIManager._instance = this
|
|
config.DEBUG = this.debug
|
|
this.mask.on(Laya.Event.CLICK, this, () => {
|
|
console.log("on click mask >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
|
|
})
|
|
this.mask.visible = false
|
|
|
|
this.btn_clean.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
|
|
console.log("btn_clean=", evt)
|
|
StorageManager.getInstance().cleanAll()
|
|
})
|
|
this.btn_clean.visible = this.debug
|
|
}
|
|
|
|
private UIRoot: Laya.Panel
|
|
public getUIRoot(): Laya.Node {
|
|
if (!this.UIRoot) {
|
|
this.UIRoot = this.owner.getChildByName("UIRoot") as Laya.Panel
|
|
if (config.H_SCREEN) {
|
|
this.UIRoot.width = config.DESIGN_HEIGHT
|
|
this.UIRoot.height = config.DESIGN_WIDTH
|
|
} else {
|
|
this.UIRoot.width = config.DESIGN_WIDTH
|
|
this.UIRoot.height = config.DESIGN_HEIGHT
|
|
}
|
|
}
|
|
return this.UIRoot
|
|
}
|
|
|
|
private topbar: TopBar
|
|
private stage: Stage
|
|
private dc_ui: DailyChallenge
|
|
private dc_year: number = -1
|
|
private dc_month: number = -1
|
|
private trophyRoom: TrophyRoom
|
|
|
|
onStart(): void {
|
|
if (config.H_SCREEN) {
|
|
this.loadTopBarUI()
|
|
} else {
|
|
this.loadHomeUI()
|
|
}
|
|
}
|
|
|
|
public loadHomeUI(): void {
|
|
Laya.loader.load(respath.home_ui_res).then((go) => {
|
|
const prefab = go.create()
|
|
this.getUIRoot().addChild(prefab)
|
|
})
|
|
}
|
|
|
|
public loadTopBarUI(): void {
|
|
Laya.loader.load(respath.topbar_ui_res).then((go) => {
|
|
const prefab = go.create()
|
|
this.topbar = this.getUIRoot().addChild(prefab).getComponent(TopBar)
|
|
})
|
|
}
|
|
|
|
public setTopbarTo(isClassic: boolean): void {
|
|
if (this.topbar) {
|
|
this.topbar.onClickTab(isClassic)
|
|
}
|
|
}
|
|
|
|
public setCurrentDCMonth(year: number, month: number): void {
|
|
this.dc_year = year
|
|
this.dc_month = month
|
|
console.log("setCurrentDCMonth >>>>>>>>>>>>>>>>>>>>", year, month)
|
|
}
|
|
|
|
public loadDCUI(): void {
|
|
this.mask.visible = true
|
|
Laya.loader.load(respath.dc_ui_res()).then((go) => {
|
|
const prefab = go.create()
|
|
this.dc_ui = this.getUIRoot().addChild(prefab).getComponent(DailyChallenge)
|
|
if (this.dc_year <= 0 || this.dc_month <= 0) {
|
|
const now = new Date()
|
|
this.dc_year = now.getFullYear()
|
|
this.dc_month = now.getMonth() + 1
|
|
}
|
|
this.dc_ui.loadWithMonth(this.dc_year, this.dc_month)
|
|
this.mask.visible = false
|
|
})
|
|
}
|
|
|
|
public loadDCWtihMonth(year: number, month: number): void {
|
|
this.closeTrophyUI()
|
|
if (this.dc_ui) {
|
|
this.dc_ui.loadWithMonth(year, month)
|
|
}
|
|
}
|
|
|
|
public closeDCUI(): void {
|
|
if (this.dc_ui) {
|
|
this.dc_ui.owner.destroy()
|
|
this.dc_ui = null
|
|
}
|
|
}
|
|
|
|
public loadTrophyClaimUI(record: TrophyRecord): void {
|
|
Laya.loader.load(respath.trophy_claim_ui_res()).then((go) => {
|
|
const prefab = go.create()
|
|
const obj = this.getUIRoot().addChild(prefab).getComponent(TrophyClaim)
|
|
obj.onSetShow(record)
|
|
})
|
|
}
|
|
|
|
public loadTrophyUI(): void {
|
|
this.mask.visible = true
|
|
Laya.loader.load(respath.trophy_ui_res()).then((go) => {
|
|
const prefab = go.create()
|
|
this.trophyRoom = this.getUIRoot().addChild(prefab).getComponent(TrophyRoom)
|
|
this.mask.visible = false
|
|
})
|
|
}
|
|
|
|
public closeTrophyUI(): void {
|
|
if (this.trophyRoom) {
|
|
this.trophyRoom.owner.destroy()
|
|
this.trophyRoom = null
|
|
}
|
|
}
|
|
|
|
public loadTrophyShowUI(record: TrophyRecord): void {
|
|
this.mask.visible = true
|
|
Laya.loader.load(respath.trophy_show_ui_res()).then((go) => {
|
|
const prefab = go.create()
|
|
const obj = this.getUIRoot().addChild(prefab).getComponent(TrophyShow)
|
|
obj.onSetShow(record)
|
|
this.mask.visible = false
|
|
})
|
|
}
|
|
|
|
public loadStageUI(stageID: string): void {
|
|
if (this.stage) {
|
|
this.stage.onLoadStage(StorageManager.getInstance().loadStage(stageID))
|
|
} else {
|
|
Laya.loader.load(respath.stage_ui_res()).then((go) => {
|
|
const prefab = go.create()
|
|
this.stage = this.getUIRoot().addChild(prefab).getComponent(Stage)
|
|
this.stage.onLoadStage(StorageManager.getInstance().loadStage(stageID))
|
|
})
|
|
}
|
|
}
|
|
|
|
public closeStageUI(): void {
|
|
if (this.stage) {
|
|
this.stage.owner.destroy()
|
|
this.stage = null
|
|
}
|
|
}
|
|
|
|
public loadGamePauseUI(doStage: DOStage): void {
|
|
Laya.loader.load(respath.gamepause_ui_res()).then((go) => {
|
|
const prefab = go.create()
|
|
const ui = this.getUIRoot().addChild(prefab).getComponent(GamePause)
|
|
ui.onSetStageInfo(doStage)
|
|
})
|
|
}
|
|
|
|
public loadGameOverUI(doStage: DOStage): void {
|
|
Laya.loader.load(respath.gameover_ui_res()).then((go) => {
|
|
const prefab = go.create()
|
|
const ui = this.getUIRoot().addChild(prefab).getComponent(GameOver)
|
|
ui.onSetStageInfo(doStage)
|
|
})
|
|
}
|
|
|
|
public loadGameDoneUI(isClassic: boolean, doStage: DOStage): void {
|
|
Laya.loader.load(respath.gamedone_ui_res(isClassic)).then((go) => {
|
|
const prefab = go.create()
|
|
const ui = this.getUIRoot().addChild(prefab).getComponent(GameDone)
|
|
ui.onSetStageInfo(doStage)
|
|
})
|
|
}
|
|
}
|