2024-01-09 04:33:21 +08:00
|
|
|
import { app } from "../App";
|
2024-01-08 18:55:00 +08:00
|
|
|
import { API, EquipForgingBench, PetEquip } from "../consts/API";
|
2024-01-09 18:32:21 +08:00
|
|
|
import { GUI } from "../ui/UIConfig";
|
2024-01-08 18:55:00 +08:00
|
|
|
import BaseData from "./BaseData";
|
|
|
|
import PlayerPetData from "./PlayerPetData";
|
|
|
|
|
2024-01-09 04:33:21 +08:00
|
|
|
export enum PetEquipDataEnum{
|
|
|
|
//更新锻造数据
|
2024-01-09 18:32:21 +08:00
|
|
|
UPDATE_FORGING_INFO = "PetEquipDataEnum_UPDATE_FORGING_INFO",
|
|
|
|
//更新装备
|
|
|
|
UPDATE_EQUIP = "PetEquipDataEnum_UPDATE_EQUIP"
|
2024-01-09 04:33:21 +08:00
|
|
|
}
|
|
|
|
|
2024-01-08 18:55:00 +08:00
|
|
|
//宠物装备数据类
|
|
|
|
export default class PetEquipData extends BaseData{
|
|
|
|
|
|
|
|
//装备
|
|
|
|
equips:PetEquip[];
|
|
|
|
//锻造台
|
|
|
|
info:EquipForgingBench;
|
|
|
|
|
|
|
|
//锻造台是否有宠物
|
|
|
|
get isForgingBenchPet(){
|
|
|
|
return !!PlayerPetData.getIns().petIdQueryPetInfo(this.info.forgingPetId);
|
|
|
|
}
|
|
|
|
|
|
|
|
async onInit() {
|
|
|
|
this.equips = await API.PetEquipAll();
|
|
|
|
this.info = await API.PetEquipForgingInfo();
|
|
|
|
}
|
|
|
|
|
2024-01-09 04:33:21 +08:00
|
|
|
//更新锻造数据
|
|
|
|
onUpdateInfo(info:EquipForgingBench){
|
|
|
|
this.info = info;
|
|
|
|
app.event.emit(PetEquipDataEnum.UPDATE_FORGING_INFO);
|
|
|
|
}
|
|
|
|
|
2024-01-08 18:55:00 +08:00
|
|
|
//锻造
|
|
|
|
async forging(){
|
2024-01-09 11:52:44 +08:00
|
|
|
return this.addEquip(await API.PetEquipForging());
|
|
|
|
}
|
|
|
|
|
|
|
|
//添加装备
|
|
|
|
addEquip(equip:PetEquip):PetEquip{
|
2024-01-09 18:32:21 +08:00
|
|
|
if(!equip) return null;
|
|
|
|
console.log("添加装备",equip)
|
2024-01-09 11:52:44 +08:00
|
|
|
if(this.equips.filter(item => item.equipId == equip.equipId).length) return null;
|
|
|
|
this.equips.push(equip);
|
|
|
|
return equip;
|
2024-01-08 18:55:00 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
//设置锻造宠
|
|
|
|
async setForgingPetId(petId:number){
|
2024-01-09 04:33:21 +08:00
|
|
|
this.onUpdateInfo(await API.PetEquipForgingPetId(petId));
|
2024-01-08 18:55:00 +08:00
|
|
|
}
|
|
|
|
|
2024-01-09 18:32:21 +08:00
|
|
|
//穿戴指定装备
|
|
|
|
async wear(equip:PetEquip){
|
|
|
|
if(this.equips.indexOf(equip) < 0) {
|
|
|
|
app.layer.Open(GUI.Tips,{text:"装备不存在"});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
let info = await API.PetEquipWear(this.info.forgingPetId,equip.equipId);
|
|
|
|
if(info){
|
|
|
|
//脱下之前的装备
|
|
|
|
this.equips.forEach(item => {
|
|
|
|
if(info.equipPetId == item.equipPetId && item.equipPosition == info.equipPosition){
|
|
|
|
item.equipPetId = 0;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
Object.assign(equip,info);
|
|
|
|
app.event.emit(PetEquipDataEnum.UPDATE_EQUIP);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//获取指定宠物指定位置的装备
|
|
|
|
getPetEquip(position:number,petId:number = this.info.forgingPetId){
|
|
|
|
if(!petId) return null;
|
|
|
|
return this.equips.filter(equip => (equip.equipPetId == petId && equip.equipPosition == position))[0];
|
|
|
|
}
|
|
|
|
|
2024-01-09 04:33:21 +08:00
|
|
|
|
2024-01-08 18:55:00 +08:00
|
|
|
}
|