xy-server/game/object/PetSupport.ts
2025-04-23 09:34:08 +08:00

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;
}
}