import { _decorator, Component, instantiate, Label, Layout, Node, Prefab, Sprite, SpriteFrame, UITransform } from 'cc'; import { base_ui } from '../../fw/base_ui'; import { tools } from '../../tools'; import { car_lib_list_item } from './car_lib_list_item'; import { userDataManager } from '../../manager/userDataManager'; const { ccclass, property } = _decorator; @ccclass('car_lib_bottom') export class car_lib_bottom extends base_ui { @property(Node) btn_num_left:Node = null @property(Node) btn_num_right:Node = null @property(Node) lab_num:Node = null @property(Node) btn_score_sort:Node = null @property(Node) btn_jiesuo:Node = null @property(SpriteFrame) sf_yijiesuo:SpriteFrame = null @property(SpriteFrame) sf_weijiesuo:SpriteFrame = null @property(Node) list:Node = null @property(Node) list_content:Node = null @property(Prefab) list_item:Prefab = null private is_jiesuo:boolean = false private num_current_count:number = 1 private num_total_count:number = 1 private current_select_list_item:car_lib_list_item = null private m_click_item_cb = null start() { this.onButtonListen(this.btn_num_left, ()=>{ if(this.num_current_count==1) { return } this.num_current_count -=1 this.updateNumStatus() }) this.onButtonListen(this.btn_num_right, ()=>{ if(this.num_current_count>=this.num_total_count) { return } this.num_current_count +=1 this.updateNumStatus() }) this.onButtonListen(this.btn_score_sort, ()=>{ }) this.onButtonListen(this.btn_jiesuo, ()=>{ this.is_jiesuo = !this.is_jiesuo this.updateJiesuoStatus() }) } public init(click_item_cb) { this.m_click_item_cb = click_item_cb this.num_current_count = 1 this.num_total_count = 1 this.updateJiesuoStatus() this.updateNumStatus() this.initListContentData() let list_content_size = this.list_content.getComponent(UITransform).contentSize let item_contenteSize = instantiate(this.list_item).getComponent(UITransform).contentSize let horizontal_padding = (list_content_size.width - item_contenteSize.width * 2) / 3 if(horizontal_padding > 0) { this.list_content.getComponent(Layout).paddingLeft = horizontal_padding this.list_content.getComponent(Layout).paddingRight = horizontal_padding this.list_content.getComponent(Layout).spacingX = horizontal_padding } } updateJiesuoStatus() { if(this.is_jiesuo) { this.btn_jiesuo.getComponent(Sprite).spriteFrame = this.sf_yijiesuo } else { this.btn_jiesuo.getComponent(Sprite).spriteFrame = this.sf_weijiesuo } } updateNumStatus() { this.lab_num.getComponent(Label).string = this.num_current_count + '/' + this.num_total_count } initListContentData() { this.list_content.removeAllChildren() for (let index = 0; index < tools.all_car_list.length; index++) { const element = tools.all_car_list[index]; let item = instantiate(this.list_item) item.parent = this.list_content let item_component = item.getComponent(car_lib_list_item) item_component.initView(element, index, this.onClickListItem.bind(this)) if(userDataManager.user_car_list.default_car_id == element.id) { this.current_select_list_item = item_component item_component.setSelectedStatus() } else { item_component.setUnselectedStatus() } } } onClickListItem(item:car_lib_list_item) { if(this.current_select_list_item.getData().id == item.getData().id) { return } this.current_select_list_item.setUnselectedStatus() item.setSelectedStatus() this.current_select_list_item = item if(this.m_click_item_cb!=null) { this.m_click_item_cb(item) } } }