diff --git a/game-server/app/servers/role/handler/equipHandler.ts b/game-server/app/servers/role/handler/equipHandler.ts new file mode 100644 index 000000000..923315594 --- /dev/null +++ b/game-server/app/servers/role/handler/equipHandler.ts @@ -0,0 +1,42 @@ +import { Application, BackendSession } from "pinus"; +import { resResult } from "../../../pubUtils/util"; +import { STATUS } from "../../../consts"; +import { addItems } from "../../../services/rewardService"; + +export default function(app: Application) { + return new EquipHandler(app); +} + +export class EquipHandler { + + constructor(private app: Application) { + } + + // TODO 合成装备 + public async composeEquip(msg: { gid: number, originalEquip: number[]}, session: BackendSession) { + // 消耗材料 + // 获得装备 + + // 1. 获得部位 + } + + // TODO 装备栏强化 + public async strengthen(msg: { }, session: BackendSession) { + + } + + // TODO 装备栏精炼 + public async refine(msg: { }, session: BackendSession) { + + } + + // TODO 装备洗炼锁定 + public async lockRandSe(msg: { }, session: BackendSession) { + + } + + // TODO 装备洗炼 + public async reStrengthen(msg: { }, session: BackendSession) { + + } +} \ No newline at end of file diff --git a/shared/db/Equip.ts b/shared/db/Equip.ts index f03899603..591510bd9 100644 --- a/shared/db/Equip.ts +++ b/shared/db/Equip.ts @@ -3,17 +3,24 @@ import { index, getModelForClass, prop, DocumentType, modelOptions } from '@type class RandSe { @prop({ required: true }) - seType: number; // 属性类型 + id: number; // 随机属性位置id @prop({ required: true }) - value: number; // 属性数值 + seid: number; // 随机属性池id + @prop({ required: true }) + rand: number; // 随机属性内需要随机的值 + @prop({ required: true }) + locked: boolean; // 洗炼是否锁定 } class Holes { @prop({ required: true }) - id: number; // 宝石 id,待定,也可能是 type + lv + id: number; // 孔的id @prop({ required: true }) - lv: number; // 宝石等级 + isOpen: boolean; // 是否开孔 + @prop({ required: true }) + jewel: number; // 装备的宝石id } + @index({ roleId: 1, hid: 1, id: 1 }) @index({ seqId: 1 }) @modelOptions({schemaOptions: {id: false}}) @@ -23,14 +30,12 @@ export default class Equip extends BaseModel { @prop({ required: true }) roleName: string; // 角色名称 + @prop({ required: true }) + seqId: number; // 装备表自增 id @prop({ required: true }) id: number; // 装备 id @prop({ required: true }) - type: number; // 装备类型 - @prop({ required: true }) name: string; // 装备名称 - @prop({ required: true }) - seqId: number; // 装备表自增 id @prop({ required: false }) hid: number; // 装备此装备的武将 id @prop({ required: false, default: 1 }) @@ -38,15 +43,17 @@ export default class Equip extends BaseModel { @prop({ required: true, default: 1 }) quality: number; // 品质 + @prop({ required: true, default: 0 }) + type: number; // 装备类型 @prop({ required: true, default: 1 }) - lv: number; // 强化等级 - @prop({ required: false, type: RandSe, default: [] }) - randSe: RandSe[]; // 强化随机属性 + wearLv: number; // 穿戴等级 + @prop({ required: true, default: 0 }) + suitId: number; // 套装id @prop({ required: true, default: 0 }) - randRange: number; // 物攻策攻数值浮动上下限变化率,浮点数 - @prop({ required: true, default: 0 }) - initHoleCnt: number; // 初始珠宝孔位个数 + randRange: number; // 固定属性随机值 + @prop({ required: false, type: RandSe, default: [] }) + randSe: RandSe[]; // 强化随机属性 @prop({ required: true, type: Holes, default: [] }) holes: Holes[]; diff --git a/shared/db/Hero.ts b/shared/db/Hero.ts index cecdbf834..d73c0ee7d 100644 --- a/shared/db/Hero.ts +++ b/shared/db/Hero.ts @@ -22,6 +22,19 @@ class Skin { enable: boolean; } +class EPlace { + @prop({ required: true }) + id: number; + @prop({ ref: Equip, type: mongoose.Schema.Types.ObjectId }) + equip: Ref; + @prop({ required: true }) + lv: number; + @prop({ required: true }) + refineLv: number; + @prop({ required: true }) + refineCount: number; +} + interface heroUpdate { exp?: number; lv?: number; @@ -95,8 +108,8 @@ export default class Hero extends BaseModel { @prop({ required: true, type: Skin, default: [] }) skins: Skin[]; // 皮肤 - @prop({ ref: Equip, type: mongoose.Schema.Types.ObjectId }) - equips: Ref[]; // 武将装备引用数组 + @prop({ required: true, type: EPlace, default:[] }) + ePlact: EPlace[]; // 武将装备引用数组 public static async findByRole(roleId: string, lean = true) { const heros: HeroType[] = await HeroModel.find({ roleId }).populate('equips').lean(lean); @@ -129,7 +142,7 @@ export default class Hero extends BaseModel { const seqId = await CounterModel.getNewCounter(COUNTER.HID)||-1; const update = Object.assign(doc.toJSON(), heroInfo, {seqId}); delete update._id; - const hero: HeroType = await HeroModel.findOneAndUpdate({roleId: heroInfo.roleId, hid: heroInfo.hid}, update, {upsert: true, new: true}).select('hid hName lv exp star starStage colorStar colorStarStage quality job jobStage conections favour favourLv skins equips ce ceAttr').lean(lean); + const hero: HeroType = await HeroModel.findOneAndUpdate({roleId: heroInfo.roleId, hid: heroInfo.hid}, update, {upsert: true, new: true}).select('seqId hid hName lv exp star starStage colorStar colorStarStage quality job jobStage conections favour favourLv skins equips ce ceAttr').lean(lean); return hero; }