import { _decorator, Component, director, Node, Prefab } from 'cc'; import { ElementAction } from './ElementAction'; import { LayerAction } from './LayerAction'; import { ColorDate } from './ColorDate'; import { Global } from './Global'; import { PinAction } from './PinAction'; import { DataModel } from './DataModel'; import { events } from './Enums'; import { CatColorRules } from './CatColorRules'; const { ccclass, property } = _decorator; @ccclass('LevelAction') export class LevelAction extends Component { start() { console.log("zh:LevelAction.ts start"); } update(deltaTime: number) { } get_lvl(): number { let arr = this.node.name.split("_"); // console.log("split get_lvl>>>>>:", arr); return Number(arr[1].trim()); } get_hole_num(): number { let hole_num: number = 0; this.node.children.forEach(layer_node => { let num = layer_node.getComponent(LayerAction).get_hole_num(); hole_num += num; }); return hole_num; } public init_level() { //每次开始把基础颜色打乱 DataModel.random_base_color(); DataModel.generate_lvl_color_arr(Global.cur_lvl+4); // init every layer this.node.children.forEach(layer_node => { // console.log("init_level this.node>>>>>:", this.node); layer_node.getComponent(LayerAction).init_layer(); }); // let color_pin_arr = []; let color_cat_arr = []; let total_hole_num = this.get_hole_num(); let need_slot_num = total_hole_num / 3; for (let i = 0; i < need_slot_num; i++) { let base = DataModel.get_lvl_color(); color_pin_arr.push(base.clone()); color_pin_arr.push(base.clone()); color_pin_arr.push(base.clone()); color_cat_arr.push(base); } color_pin_arr.sort(() => { return 0.5 - Math.random(); }); color_cat_arr.sort(() => { return 0.5 - Math.random(); }); console.log(" current lvl pin num:", color_pin_arr.length); console.log(" current lvl solt num:", color_cat_arr.length); this.node.children.forEach(layer_node => { // console.log("init_level this.node>>>>>:", this.node); layer_node.getComponent(LayerAction).init_pin(color_pin_arr); }); // console.log("need pin num:",need_slot_num); CatColorRules.set_cat_color(color_cat_arr); Global.layer_empty_action.init_empty(); Global.layer_cat_action.init_cat(); //本关,钉子总数 Global.init_pin_info(total_hole_num); director.on(events.remove_element, this.remove_element, this); //默认隐藏一些 this.set_default_layer(); } set_default_layer(){ //默认都是不显示的 for(let i = this.node.children.length-1;i>=0;i--){ let layer_action = this.node.children[i].getComponent(LayerAction); layer_action.node.active = false; } this.remove_element(); } remove_element(){ let default_show_layer_num = 4; let show_num = 0; for(let i = this.node.children.length-1;i>=0;i--){ let layer_action = this.node.children[i].getComponent(LayerAction); if(layer_action.get_element_size()<=0){ continue; } if(show_num { // layer_node.getComponent(LayerAction)?.get_pin_color(arr); // }); for(let i = this.node.children.length-1;i>=0;i--){ let layer_action = this.node.children[i].getComponent(LayerAction); layer_action?.get_pin_color(arr); } return arr } }