Files
sudoku/src/views/Home.ts

87 lines
3.5 KiB
TypeScript
Raw Normal View History

2025-05-15 21:36:03 +08:00
2025-05-09 19:10:40 +08:00
import { UIManager } from "../models/UIManager";
2025-05-15 21:36:03 +08:00
import { StorageManager } from "../models/StorageManager";
2025-05-19 19:51:17 +08:00
import { respath } from "../constants/respath";
import { Difficulty } from "./Difficulty";
import { LevelManager } from "../models/LevelManager";
import { config } from "../constants/config";
import { Utility_ConvertSecondToString } from "../utils/utility";
2025-05-09 19:10:40 +08:00
const { regClass, property } = Laya
@regClass()
export class Home extends Laya.Script {
declare owner : Laya.Box;
2025-05-16 15:30:43 +08:00
@property(Laya.Box)
2025-05-19 19:51:17 +08:00
public btn_new_blue: Laya.Box;
@property(Laya.Box)
public btn_continue: Laya.Box;
@property(Laya.Box)
public btn_new_white: Laya.Box;
2025-05-09 19:10:40 +08:00
2025-05-16 15:52:18 +08:00
@property(Laya.Box)
public btn_clean: Laya.Box;
2025-05-13 20:31:44 +08:00
2025-05-09 19:10:40 +08:00
//组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
onAwake(): void {
2025-05-19 19:51:17 +08:00
this.btn_new_blue.on(Laya.Event.CLICK, this, this.onClickNew)
this.btn_new_white.on(Laya.Event.CLICK, this, this.onClickNew)
this.btn_continue.on(Laya.Event.CLICK, this, (evt: Laya.Event)=>{
UIManager.getInstance().closeStageUI()
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID);
2025-05-12 22:06:04 +08:00
this.owner.destroy()
2025-05-09 19:10:40 +08:00
})
2025-05-19 19:51:17 +08:00
var user = StorageManager.getInstance().getUser()
this.btn_new_blue.visible = user.get_isCompletedMain()
this.btn_new_white.visible = user.get_isCompletedMain() == false
this.btn_continue.visible = user.get_isCompletedMain() == false
if (user.get_isCompletedMain() == false) {
var label_time = this.btn_continue.getChildByName("time").getChildByName("label_time") as Laya.Label
var doStage = StorageManager.getInstance().loadStage(config.DEFAULT_STAGE_ID)
var duration = doStage.get_duration()
var timeStr = Utility_ConvertSecondToString(duration)
label_time.text = `${timeStr} - ${doStage.get_difficulty()}`
}
2025-05-09 19:10:40 +08:00
2025-05-19 19:51:17 +08:00
//测试逻辑
2025-05-13 20:31:44 +08:00
this.btn_clean.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
console.log("btn_clean=", evt);
2025-05-19 19:51:17 +08:00
StorageManager.getInstance().cleanAll()
user = StorageManager.getInstance().getUser()
this.btn_new_blue.visible = user.get_isCompletedMain()
this.btn_new_white.visible = user.get_isCompletedMain() == false
this.btn_continue.visible = user.get_isCompletedMain() == false
})
this.btn_clean.visible = config.DEBUG
//======
}
public onClickNew(evt: Laya.Event): void {
Laya.loader.load(respath.difficulty_ui_res).then((go)=>{
var prefab = go.create()
var d = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(Difficulty)
d.onInit((value: string)=> {
console.log("选择难度", value)
UIManager.getInstance().closeStageUI()
StorageManager.getInstance().cleanStage(config.DEFAULT_STAGE_ID)
var user = StorageManager.getInstance().getUser()
user.set_isCompletedMain(false)
var index = user.get_progress(value)
var levelStr = LevelManager.getInstance().getLevelStr(value, index)
if (!levelStr || levelStr.length <= 0) {//说明当前难度已经打通了,所以给他从头开始
user.update_progress(value, 0)
}
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value, user.get_progress(value))
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID);
this.owner.destroy()
})
2025-05-13 20:31:44 +08:00
})
}
2025-05-09 19:10:40 +08:00
}