import { UIManager } from "../models/UIManager"; import { Block } from "./Block"; import { Candy } from "./Candy"; import { DOStage } from "../models/DOStage"; import { config } from "../constants/config"; const { regClass, property } = Laya; @regClass() export class Stage extends Laya.Script { declare owner : Laya.Box; @property(Laya.Button) public btn_back: Laya.Button @property(Laya.Label) public label_score: Laya.Label; @property(Laya.Label) public label_mistake: Laya.Label; @property(Laya.Label) public label_diff: Laya.Label; @property(Laya.Label) public label_time: Laya.Label; @property(Laya.Box) public obj_blocks: Laya.Box; @property(Laya.Box) public obj_block_labels: Laya.Box; private blocks: Array = new Array(); @property(Laya.Box) public obj_candys: Laya.Box; @property(Laya.Box) public obj_candy_labels: Laya.Box; private candys: Array = new Array(); @property(Laya.Box) public btn_undo: Laya.Box; @property(Laya.Box) public btn_erase: Laya.Box; @property(Laya.Box) public btn_note: Laya.Box; private btn_note_normal: Laya.Box private btn_note_checked: Laya.Box @property(Laya.Box) public btn_hint: Laya.Box; private btn_hint_normal: Laya.Box private btn_hint_ad: Laya.Box private btn_hint_label: Laya.Label private selectedBlock: Block; private data: DOStage; //组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次 onAwake(): void { this.btn_back.on(Laya.Event.CLICK, this, ()=>{ UIManager.getInstance().loadHome(); UIManager.getInstance().closeStage(); }) for (var i=0; i{ var now = Date.now() this.data.set_duration(this.data.get_duration() + Math.floor((now-begin)/1000)) begin = now var last = this.data.get_duration() var hour = Math.floor(last/3600) last = last - hour * 3600 var minite = Math.floor(last/60) last = last - minite * 60 var second = Math.floor(last) this.label_time.text = `${hour>=10?hour:("0"+hour)}:${minite>=10?minite:("0"+minite)}:${second>10?second:("0"+second)}` }) var blocks = doStage.get_blocks() for (var i=0; i 0) { if (this.selectedBlock && this.selectedBlock.getData().get_checked() == false) {//当前选中的格子没有完成 var correct = this.selectedBlock.getData().get_correct() var candy = this.candys[correct-1] this.onApplyCandy(candy) this.data.set_hint(hint-1) this.onUpdateHintStatus() } else { var list: Array = new Array() for (var i=0; i 0) { var random = Math.random() var index = Math.round(random*list.length) if (index >= list.length) index = list.length -1 var block = list[index] this.selectedBlock = block var correct = block.getData().get_correct() var candy = this.candys[correct-1] this.onApplyCandy(candy) this.data.set_hint(hint-1) this.onUpdateHintStatus() } } } else { //这里播放广告 现在每个广告每次点击+9 this.data.set_hint(9) this.onUpdateHintStatus() } } onUpdateHintStatus(): void { var hint = this.data.get_hint() this.btn_hint_normal.visible = hint > 0 this.btn_hint_ad.visible = hint <= 0 this.btn_hint_label.text = hint.toString() } public onApplyCandy(candy: Candy): void { if (this.selectedBlock && this.selectedBlock.getData().get_checked() == false) { var showNumber = candy.getData().get_show() if (this.data.get_note_open()) { var relateds = this.findRelatedBlocks(this.selectedBlock) var find = false for (var i=0; i= config.MISTAKE_MAX) { console.log("关卡失败") // UIManager.getInstance().loadGameOver() } } } } } } public onClickCandy(evt: Laya.Event): void { var candy = evt.target.getComponent(Candy); this.onApplyCandy(candy) } onKeyUp(evt: Laya.Event): void { var n = Number(evt.key) if (n && n > 0) { var candy = this.candys[n-1] this.onApplyCandy(candy) } } findRelatedBlocks(obj: Block): Array { var list: Array = new Array() for (var i=0; i { var list: Array = new Array() for (var i=0; i { var list: Array = new Array() for (var i=0; i= 0) list.push(block) } return list } getIsComplete(): boolean { var b = true; for (var i=1; i