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