171 lines
5.5 KiB
TypeScript
171 lines
5.5 KiB
TypeScript
import DB from "../utils/DB";
|
|
|
|
|
|
export default class PetSupport {
|
|
static shared = new PetSupport();
|
|
|
|
supportlist: any[];
|
|
|
|
constructor() {
|
|
this.supportlist = [];
|
|
}
|
|
|
|
init() {
|
|
this.readDB();
|
|
}
|
|
|
|
readDB() {
|
|
let sql = `SELECT * FROM qy_pet_support`;
|
|
DB.query(sql, (error: any, rows: any) => {
|
|
for (let i = 0; i < rows.length; i++) {
|
|
this.supportlist.push({
|
|
roleid: rows[i].roleid, //角色id
|
|
petid: rows[i].petid, //宠物id
|
|
petname: rows[i].petname, // 宠物名字
|
|
resid: rows[i].resid, // 宠物名字
|
|
sorder: rows[i].sorder, //支援顺序
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
//查询角色的宠物
|
|
getPetlistById(roleid: number) {
|
|
let list = [];
|
|
for (let i = 0; i < this.supportlist.length; i++) {
|
|
if (this.supportlist[i] == undefined) {
|
|
continue
|
|
}
|
|
if (roleid == this.supportlist[i].roleid) {
|
|
list.push({
|
|
petid: this.supportlist[i].petid,
|
|
petname: this.supportlist[i].petname,
|
|
resid: this.supportlist[i].resid,
|
|
sorder: this.supportlist[i].sorder
|
|
})
|
|
}
|
|
}
|
|
list.sort((a: any, b: any) => {
|
|
return a.sorder - b.sorder;
|
|
});
|
|
return list;
|
|
}
|
|
|
|
//查询玩家宠物个数
|
|
getPetCountById(roleid: number) {
|
|
let count = 0;
|
|
for (let i = 0; i < this.supportlist.length; i++) {
|
|
if (this.supportlist[i] == undefined) {
|
|
continue
|
|
}
|
|
if (roleid == this.supportlist[i].roleid) {
|
|
count++;
|
|
}
|
|
}
|
|
return count;
|
|
}
|
|
|
|
//获取宠物顺序
|
|
getPetSorder(data: any) {
|
|
let sorder = 0;
|
|
let list = this.getPetlistById(data.roleid);
|
|
for (let i = 0; i < list.length; i++) {
|
|
if (list[i] == undefined) {
|
|
continue
|
|
}
|
|
if (list[i].petid == data.petid) {
|
|
sorder = list[i].sorder;
|
|
}
|
|
}
|
|
return sorder;
|
|
}
|
|
|
|
//宠物学习了闪现技能
|
|
pushPet(roleid: number, petid: number, petname: any, resid: number) {
|
|
//查询该玩家支援宠物的个数
|
|
let count = this.getPetCountById(roleid);
|
|
PetSupport.shared.supportlist.push({
|
|
roleid: roleid,
|
|
petid: petid,
|
|
petname: petname,
|
|
resid: resid,
|
|
sorder: count + 1,
|
|
})
|
|
DB.insertSupportPet({roleid: roleid, petid: petid, petname: petname, resid: resid, sorder: count + 1}, 1)
|
|
}
|
|
|
|
//如果宠物遗忘闪现技能从list里删除
|
|
deletePet(roleid: number, petid: number) {
|
|
let list = this.getPetlistById(roleid);
|
|
let sorder = 999;
|
|
for (let i = 0; i < list.length; i++) {
|
|
if (list[i] == undefined) {
|
|
continue
|
|
}
|
|
if (list[i].petid == petid) {
|
|
sorder = list[i].sorder;//找到遗忘技能宠物当前的顺序
|
|
break;
|
|
}
|
|
}
|
|
for (let i = 0; i < list.length; i++) {
|
|
if (list[i] == undefined) {
|
|
continue
|
|
}
|
|
if (list[i].sorder > sorder) {//在这个宠物后的顺序往前移一位
|
|
list[i].sorder -= 1;
|
|
DB.updateSupportPetSorder({roleid: roleid, petid: list[i].petid, sorder: list[i].sorder}, 1);
|
|
}
|
|
}
|
|
for (let i = 0; i < list.length; i++) {
|
|
if (list[i] == undefined) {
|
|
continue
|
|
}
|
|
if (list[i].petid == petid) {
|
|
delete list[i];
|
|
break;
|
|
}
|
|
}
|
|
for (let i = 0; i < this.supportlist.length; i++) {
|
|
if (this.supportlist[i] == undefined) {
|
|
continue
|
|
}
|
|
if (roleid == this.supportlist[i].roleid && petid == this.supportlist[i].petid) {
|
|
DB.deleteSupportPet(roleid, petid);
|
|
delete this.supportlist[i];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//调整支援顺序
|
|
supportOrder(data: any) {
|
|
let sorder1 = this.getPetSorder({roleid: data.roleid, petid: data.petid1});
|
|
let sorder2 = this.getPetSorder({roleid: data.roleid, petid: data.petid2});
|
|
for (let i = 0; i < this.supportlist.length; i++) {
|
|
if (this.supportlist[i] == undefined) {
|
|
continue
|
|
}
|
|
if (this.supportlist[i].petid == data.petid1 && this.supportlist[i].roleid == data.roleid) {
|
|
this.supportlist[i].sorder = sorder2;
|
|
DB.updateSupportPetSorder({
|
|
roleid: data.roleid,
|
|
petid: this.supportlist[i].petid,
|
|
sorder: this.supportlist[i].sorder
|
|
}, 1)
|
|
} else if (this.supportlist[i].petid == data.petid2 && this.supportlist[i].roleid == data.roleid) {
|
|
this.supportlist[i].sorder = sorder1;
|
|
DB.updateSupportPetSorder({
|
|
roleid: data.roleid,
|
|
petid: this.supportlist[i].petid,
|
|
sorder: this.supportlist[i].sorder
|
|
}, 1)
|
|
}
|
|
}
|
|
let list = this.getPetlistById(data.roleid);
|
|
list.sort((a: any, b: any) => {
|
|
return a.sorder - b.sorder;
|
|
});
|
|
return list;
|
|
}
|
|
}
|