后台添加装备时可以选择武将穿上

This commit is contained in:
luying
2020-12-18 15:15:01 +08:00
parent b39c9bdc8b
commit f2c124a6e4
9 changed files with 592 additions and 267 deletions

View File

@@ -2,6 +2,7 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { COUNTER } from '../consts';
import { CounterModel } from './Counter';
import { HeroModel } from './Hero';
export class RandSe {
@prop({ required: true })
@@ -48,7 +49,7 @@ export default class Equip extends BaseModel {
id: number; // 装备 id
@prop({ required: true })
name: string; // 装备名称
@prop({ required: false })
@prop({ required: false, default: 0 })
hid: number; // 装备此装备的武将 id
@prop({ required: false, default: 0 })
ePlaceId: number; // 武将装备的部位
@@ -77,12 +78,18 @@ export default class Equip extends BaseModel {
return equip;
}
public static async createEquip(equipInfo: {roleId: string, roleName: string, id: number, name: string, quality: number, suitId: number, ePlaceId: number, randSe: RandSe[], randRange: number, holes: Holes[]}, lean = true) {
public static async createEquip(equipInfo: {roleId: string, roleName: string, id: number, name: string, quality: number, suitId: number, ePlaceId: number, randSe: RandSe[], randRange: number, holes: Holes[], hid?: number}, lean = true) {
const seqId = await CounterModel.getNewCounter(COUNTER.EID);
const doc = new EquipModel();
const update = Object.assign(doc.toJSON(), seqId, equipInfo);
const equip: EquipType = await EquipModel.findOneAndUpdate({ seqId }, update, {upsert: true, new: true}).lean(lean);
if(equipInfo.hid > 0) {
await HeroModel.findOneAndUpdate(
{ roleId: equipInfo.roleId, hid: equipInfo.hid, 'ePlace.id': 1 },
{$set: {'ePlace.$.equip': equip._id}},
{new: true}).lean(lean);
}
return equip;
}

View File

@@ -152,7 +152,7 @@ export default class Hero extends BaseModel {
{$set: {'ePlace.$.equip': equipId}},
{new: true}).lean(lean);
if (hero) {
await Equip.putOn(hero.hid, equipId);
await Equip.putOn(hero.hid, equipId);
}
return hero;
}

View File

@@ -34,6 +34,7 @@ export interface EquipInter {
hole: number;
randomEffect: Array<number>;
itid: number;
hid?: number;
};

View File

@@ -31,7 +31,7 @@ export async function addBags(roleId: string, roleName: string, data: BagInter)
}
export async function addEquips(roleId: string, roleName: string, weapon: EquipInter) {
let { id, name, quality, suitId, hole, randomEffect, itid } = weapon;
let { id, name, quality, suitId, hole, randomEffect, itid, hid } = weapon;
let {type} = ITID.get(itid);
let randomNum = RANDOM_SE_COUNT.get(quality);
@@ -40,9 +40,9 @@ export async function addEquips(roleId: string, roleName: string, weapon: EquipI
let randSe = new Array<RandSe>();
for(let i = 0; i < randomNum; i++) {
pool = pool.filter(cur => !chosen.includes(cur.id));
console.log(JSON.stringify(pool))
let random = getRandomByLen(pool);
if(!random) break;
chosen.push(random.id);
let rand = 0;
if(random.id > 0) rand = Math.floor(Math.random() * (random.Max - random.Min) + random.Min);
randSe.push({
@@ -58,6 +58,6 @@ export async function addEquips(roleId: string, roleName: string, weapon: EquipI
holes.push({id: i+1, isOpen: false, jewel: 0})
}
const equip = await EquipModel.createEquip({roleId, roleName, id, name, quality, suitId, randRange, ePlaceId: type, randSe, holes});
const equip = await EquipModel.createEquip({roleId, roleName, id, name, quality, suitId, randRange, ePlaceId: type, randSe, holes, hid});
return equip
}

File diff suppressed because it is too large Load Diff