90 lines
2.5 KiB
TypeScript
Raw Normal View History

2024-01-08 18:55:00 +08:00
import { _decorator, Component, Node } from 'cc';
import JNLayerBase from '../../../../extensions/ngame/assets/ngame/ui/base/JNLayerBase';
2024-01-09 04:33:21 +08:00
import JNScrollView from '../../../../extensions/ngame/assets/ngame/util/components/scrollview/JNScrollView';
import { PetOV, PlayerPetOVSelect } from '../VO/PetOV';
import PlayerPetData from '../../data/PlayerPetData';
import { NodeEventType } from 'cc';
import { PetIconSelectScroll } from '../Consts/Pet/PetIconSelectScroll';
import { PlayerPetOV } from '../../consts/API';
import { app } from '../../App';
import { GUI } from '../UIConfig';
2024-01-08 18:55:00 +08:00
const { ccclass, property } = _decorator;
2024-01-09 04:33:21 +08:00
export interface PetRadioViewArgs{
isHaveSelect:boolean, //是否必须选择
resolve?:(value:PlayerPetOV) => {},
}
2024-01-08 18:55:00 +08:00
//宠物单选页面
@ccclass('PetRadioView')
export class PetRadioView extends JNLayerBase {
2024-01-09 04:33:21 +08:00
data:PetRadioViewArgs;
@property(JNScrollView)
views:JNScrollView; //宠物列表
index:number = -1;
onJNLoad(data?: PetRadioViewArgs): void {
data = data || {isHaveSelect:false};
this.isClickMaskeClose = !data.isHaveSelect;
this.data = data;
super.onJNLoad();
this.onUpdateView();
}
onUpdateView(){
//当前需要升星的宠物并且未上阵 并且排除自己
let pets = PetOV.PlayerPetOVSelects( PlayerPetData.getIns().getData() );
this.views.refreshData(pets);
//向子节点添加点击事件
this.views.addItemEvent(NodeEventType.TOUCH_START,this.onClickItem.bind(this));
}
//刷新选择
onUpdateSelect(){
//刷新
this.views.getItems<PetIconSelectScroll>().forEach((item) => {
let data = item.data as PlayerPetOVSelect;
item.select.isSelect = data.isSelect;
})
}
//点击Item
onClickItem(index:number){
this.index = index;
let pets = this.views.getData<PlayerPetOVSelect>();
pets.forEach(item => item.isSelect = false);
pets[index].isSelect = !pets[index].isSelect;
this.onUpdateSelect();
}
//选择宠物
onClickSelect(){
let pets = this.views.getData<PlayerPetOVSelect>();
if(!(pets[this.index])){
this.data.resolve && this.data.resolve(null)
if(this.data.isHaveSelect) {
app.layer.Open(GUI.Tips,{text:"请选择宠物"});
return;
}
}else{
this.data.resolve && this.data.resolve(pets[this.index]);
}
app.layer.CloseNode(this.node);
}
2024-01-08 18:55:00 +08:00
}