init
This commit is contained in:
42
game-server/app/servers/role/handler/equipHandler.ts
Normal file
42
game-server/app/servers/role/handler/equipHandler.ts
Normal file
@@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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[];
|
||||
|
||||
|
||||
@@ -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<Equip>;
|
||||
@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<Equip>[]; // 武将装备引用数组
|
||||
@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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user