import { UIManager } from "../models/UIManager"; import { Block } from "./Block"; import { Candy } from "./Candy"; import { DOStage } from "../models/DOStage"; import { config } from "../constants/config"; import { StorageManager } from "../models/StorageManager"; import { Utility_ConvertSecondToString } from "../utils/utility"; import { EVENT_TYPES, EventManager } from "../models/EventManager"; 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_name: 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.Button) public btn_undo: Laya.Button; @property(Laya.Button) public btn_erase: Laya.Button; @property(Laya.Button) public btn_note: Laya.Button; private btn_note_normal: Laya.Box private btn_note_checked: Laya.Box private label_note: Laya.Label @property(Laya.Button) public btn_hint: Laya.Button; private btn_hint_normal: Laya.Box private btn_hint_ad: Laya.Box private btn_hint_label: Laya.Label private data: DOStage; private selectedBlock: Block; private paused: boolean private static _instance: Stage onAwake(): void { Stage._instance = this this.btn_back.on(Laya.Event.CLICK, this, ()=>{ if (this.data.get_stageType() == config.STAGE_TYPE.MAIN) { UIManager.getInstance().loadHomeUI(); UIManager.getInstance().closeStageUI(); } else { UIManager.getInstance().loadDCUI(); UIManager.getInstance().closeStageUI(); } }) for (var i=0; i{ if (this.paused) { return } var last = this.data.get_duration() last ++ this.data.set_duration(last) this.label_time.text = Utility_ConvertSecondToString(last) }) var blocks = doStage.get_blocks() for (var i=0; i>>>", JSON.stringify(undo)) this.selectedBlock = this.blocks[undo.index] this.onApplyBlock(this.selectedBlock) if (undo.notes && undo.notes.length > 0) { this.selectedBlock.setNotes(undo.notes) } else { this.selectedBlock.setShowNumber(undo.show) } this.onSetBlock(this.selectedBlock) this.onUpdateScore() } } onClickErase(evt: Laya.Event): void { if (this.selectedBlock.getData().get_checked() == false) {//未完成且有数字或者笔记才可以使用橡皮 var show = this.selectedBlock.getData().get_show() var notes = this.selectedBlock.getData().get_notes() if (show > 0 || notes.length > 0) { this.data.add_undo(this.selectedBlock.getData().get_index(), show, notes) this.selectedBlock.setShowNumber(0) this.onUpdateScore() this.onSetBlock(this.selectedBlock) } } } onClickNote(evt: Laya.Event): void { if (evt != null) { this.data.set_note_open(!this.data.get_note_open()) } this.btn_note_normal.visible = this.data.get_note_open() == false this.btn_note_checked.visible = this.data.get_note_open() this.label_note.color = this.data.get_note_open() ? "#1d5cdc" : "#545962" for (var i=0; i 0) { if (this.selectedBlock.getData().get_checked() == false) {//当前选中的格子没有完成 var correct = this.selectedBlock.getData().get_correct() this.onApplyCandy(correct) 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.onApplyBlock(block) var correct = block.getData().get_correct() this.onApplyCandy(correct) 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(showNumber: number): void { var show = this.selectedBlock.getData().get_show() var notes = this.selectedBlock.getData().get_notes() if (this.selectedBlock.getData().get_checked() == false) { 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("关卡失败") this.paused = true UIManager.getInstance().loadGameOverUI() } } } this.onUpdateCandys() } } } public onClickCandy(evt: Laya.Event): void { var candy = evt.target.getComponent(Candy); this.onApplyCandy(candy.get_show()) } onKeyUp(evt: Laya.Event): void { var n = Number(evt.key) if (n && n > 0) { this.onApplyCandy(n) } } onUpdateCandys(): void { var list: Map = new Map() for (var i=1; i<=9; i++) list.set(i, 0) 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 { 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