PC-20230316NUNE\Administrator 720542eadd 提交
2023-11-28 19:20:11 +08:00

133 lines
3.3 KiB
TypeScript

import { _decorator, Component, Node } from 'cc';
import PlayerTacticalData from '../../../data/PlayerTacticalData';
import { app } from '../../../App';
import { GUI } from '../../UIConfig';
import { sp } from 'cc';
import { UIPetAnim } from '../../../consts/GData';
import PlayerPetData from '../../../data/PlayerPetData';
import { Vec3 } from 'cc';
import { NodeEventType } from 'cc';
import { EventTouch } from 'cc';
import JNodeDrag from '../../../../../extensions/ngame/assets/ngame/util/components/JNodeDrag';
import { PetIcon } from '../Pet/PetIcon';
const { ccclass, property } = _decorator;
@ccclass('PlayerTacticalItem')
export class PlayerTacticalItem extends Component {
//阵法的Index;
index:number;
//没有宠物的节点
@property(Node)
noPet:Node;
//有宠物的节点
@property(Node)
havePet:Node;
//宠物节点
@property(PetIcon)
petIcon:PetIcon;
//拖拽
@property(JNodeDrag)
drag:JNodeDrag;
//当前上阵的宠物
petId:number;
//初始位置
initPos:Vec3;
//初始化阵法
onInit(index:number){
this.index = index;
this.initPos = this.node.position;
}
protected start(): void {
this.onUpdateView();
}
//更新信息
onUpdateView(){
//获取阵法下的宠物
this.petId = PlayerTacticalData.getIns().getItem(this.index);
//如果为0则没有宠物
if(this.petId){
this.havePet.active = true;
this.noPet.active = false;
this.onUpdatePetView();
}else{
this.noPet.active = true;
this.havePet.active = false;
}
}
//更新宠物信息
onUpdatePetView(){
//获取宠物信息
let info = PlayerPetData.getIns().petIdQueryPetInfo(this.petId);
this.petIcon.set(info);
}
//打开选择阵法宠物
onClick(){
//如果拖拽了则不生效点击事件
if(this.drag.isMove) return;
//如果没有宠物则弹出选择宠物 负责 删除宠物
if(this.petId){
//移除宠物
//提示是否移除宠物
app.layer.Open(GUI.SelectionBox,{
tigText:"是否移除宠物?",
cancel:()=>{},
confirm:async ()=>{
//移除宠物 (0就是移除)
await PlayerTacticalData.getIns().UpdateIndexTactical(this.index,0);
}
})
}else{
//选择宠物
app.layer.Open(GUI.IntoBattleView,{
index:this.index, //当前选择的阵法下标
});
}
}
//交换阵法
onExchange(item:PlayerTacticalItem){
let rootIndex = this.index;
this.index = item.index;
item.index = rootIndex;
//更新拖拽位置
let rootOriginal = this.drag.original;
this.drag.onUpdateOriginal(item.drag.original);
item.drag.onUpdateOriginal(rootOriginal);
}
addMoveEvent(fun:Function){
this.drag.addMoveEvent((e) => {
fun(this,e);
});
}
addMoveEndEvent(fun:Function){
this.drag.addMoveEndEvent((e) => {
fun(this,e);
});
}
}