好友:武将详情

This commit is contained in:
luying
2022-02-18 11:30:42 +08:00
parent 13ad1c1f19
commit 2773d1d9db
5 changed files with 129 additions and 20 deletions

View File

@@ -62,6 +62,20 @@ export default class Jewel extends BaseModel {
return jewels;
}
public static async findbyRoleAndHids(roleId: string, hids: number[]) {
const jewels: JewelType[] = await JewelModel.find({ roleId, hid: { $in: hids } }).lean();
return jewels;
}
public static async findMapbyRoleAndHids(roleId: string, hids: number[]) {
const jewels = await JewelModel.findbyRoleAndHids(roleId, hids);
let map = new Map<number, JewelType>();
for(let jewel of jewels) {
map.set(jewel.seqId, jewel);
}
return map;
}
public static async findbySeqId(seqId: number, select?: string ) {
const jewel: JewelType = await JewelModel.findOne({ seqId }).select(select).lean();
return jewel;

View File

@@ -2,6 +2,9 @@ import { RoleType } from "../../db/Role";
import { FriendShipType } from "../../db/FriendShip";
import * as friendUtil from '../../pubUtils/friendUtil'
import { FRIEND_RELATION_TYPE } from "../../consts";
import { EPlace, HeroType, Stone } from "../../db/Hero";
import { JewelType, RandSe } from "../../db/Jewel";
import { reduceCe } from "../../pubUtils/util";
export class FriendParams {
roleId: string;
@@ -118,4 +121,102 @@ export class BlackListParam extends FriendParams {
setOnline(isOnline: boolean) {
this.isOnline = isOnline;
}
}
export class HeroDetailJewelRandSeParam {
id: number;
seid: number;
rand: number;
constructor(randSe: RandSe) {
this.id = randSe.id;
this.seid = randSe.seid;
this.rand = randSe.rand;
}
}
export class HeroDetailJewelParam {
seqId: number;
id: number;
randSe: HeroDetailJewelRandSeParam[] = [];
constructor(jewel: JewelType) {
this.seqId = jewel.seqId;
this.id = jewel.id;
for(let randSe of jewel.randSe) {
this.randSe.push(new HeroDetailJewelRandSeParam(randSe));
}
}
}
export class HeroDetailEplaceParam {
id: number;
equipId: number;
lv: number;
quality: number;
star: number;
stone: Stone[];
jewelId: number;
jewel: HeroDetailJewelParam = null;
constructor(equip: EPlace) {
this.id = equip.id;
this.equipId = equip.equipId;
this.lv = equip.lv;
this.quality = equip.quality;
this.star = equip.star;
this.stone = equip.stones;
this.jewelId = equip.jewel;
}
setJewel(jewel: JewelType) {
this.jewel = new HeroDetailJewelParam(jewel);
}
}
export class HeroDetailParam {
roleId: string;
hid: number;
ce: number;
lv: number;
star: number;
colorStar: number;
quality: number;
job: number;
skinId: number;
ePlace: HeroDetailEplaceParam[] = [];
attributes: {
hp: number;
atk: number;
def: number;
mdef: number;
}
constructor(hero: HeroType) {
this.roleId = hero.roleId;
this.hid = hero.hid;
this.ce = reduceCe(hero.ce);
this.lv = hero.lv;
this.star = hero.star;
this.colorStar = hero.colorStar;
this.quality = hero.quality;
this.job = hero.job;
this.skinId = hero.skinId;
for(let equip of hero.ePlace) {
this.ePlace.push(new HeroDetailEplaceParam(equip));
}
}
setAttributes(attributes: {hp: number, atk: number, def: number, mdef: number}) {
this.attributes = attributes;
}
setJewels(jewels: Map<number, JewelType>) {
for(let eplaceParam of this.ePlace) {
if(jewels.has(eplaceParam.jewelId)) {
eplaceParam.setJewel(jewels.get(eplaceParam.jewelId));
}
}
}
}

View File

@@ -736,7 +736,7 @@ export function calEquipPutOnOrOffJewelIncAttr(hero: HeroType, update: HeroUpdat
}
function setRandSeToSeidList(jewel: JewelType, equip: EPlace, list: number[]) {
if(equip && equip.jewel) {
if(equip && jewel) {
for(let { id, seid, rand } of jewel.randSe) {
if(isRandSeUnLock(jewel.id, id, equip.stones)) {
list.push(seid, rand);