diff --git a/game-server/app/servers/role/handler/pvpHandler.ts b/game-server/app/servers/role/handler/pvpHandler.ts new file mode 100644 index 000000000..f6dd28e3e --- /dev/null +++ b/game-server/app/servers/role/handler/pvpHandler.ts @@ -0,0 +1,13 @@ +import {Application, BackendSession} from 'pinus'; +const _ = require('underscore'); + +export default function(app: Application) { + return new PvpHandler(app); +} + +export class PvpHandler { + constructor(private app: Application) { + } + + +} diff --git a/game-server/app/services/expeditionService.ts b/game-server/app/services/expeditionService.ts index 55327ab3f..43df42f63 100644 --- a/game-server/app/services/expeditionService.ts +++ b/game-server/app/services/expeditionService.ts @@ -70,11 +70,11 @@ export async function matchPlayers(roleId: string, scale: number, range: number, if(resultRange.length > 0) { let index = Math.floor(Math.random() * resultRange.length); let result = resultRange[index]; - let {roleId, heroes, ce } = result; + let {roleId, heroes, defCe } = result; enemyObj.enemyFrom = 1; enemyObj.enemyId = roleId; - enemyObj.ce = ce; + enemyObj.ce = defCe; let heroIndex = 0; for(let enemy of dicWarJson) { diff --git a/shared/db/Hero.ts b/shared/db/Hero.ts index b284beeea..8816abfb8 100644 --- a/shared/db/Hero.ts +++ b/shared/db/Hero.ts @@ -16,6 +16,7 @@ class Connect { @prop({ required: true }) level: number; } + class Skin { @prop({ required: true }) id: number; diff --git a/shared/db/PvpDefense.ts b/shared/db/PvpDefense.ts index db2a26874..adacb2a21 100644 --- a/shared/db/PvpDefense.ts +++ b/shared/db/PvpDefense.ts @@ -4,6 +4,7 @@ import Hero, { } from './Hero'; import Role, { } from './Role'; import PvpDef, { } from './PvpDefense'; import { PVP_PLAYER_POS, PVP_POS } from '../consts'; +import SystemConfig, { } from './SystemConfig'; class Heroes { @prop({ required: true }) @@ -79,7 +80,6 @@ export default class PvpDefense extends BaseModel { roleName: string; // 角色名称 @prop({ ref: Role, type: mongoose.Schema.Types.ObjectId }) role: Ref; - @prop({ required: true, type: Heroes, default: getInitialOppHeros(), _id: false }) heroes: Array; @prop({ required: true, default: 0 }) @@ -92,8 +92,8 @@ export default class PvpDefense extends BaseModel { defCe: number; //防守ce @prop({ required: true, type: OppPlayers, default: getInitialOppPlayers(), _id: false }) oppPlayers: Array; - @prop({ required: true, default: 0 }) - map: number; + @prop({ ref: SystemConfig, type: mongoose.Schema.Types.ObjectId }) + map: Ref; @prop({ required: true, type: HidScores, default: [] }) hidScores: Array; public static async findByRoleId(roleId: string, lean = true) { @@ -102,11 +102,11 @@ export default class PvpDefense extends BaseModel { } public static async findByScale(roleId: string, min: number, max: number, lean = true) { - const result: PvpDefenseType[] = await PvpDefenseModel.find({ roleId: { $ne: roleId }, ce: { $lte: max, $gte: min } }).sort({ updatedAt: -1 }).limit(100).lean(lean); + const result: PvpDefenseType[] = await PvpDefenseModel.find({ roleId: { $ne: roleId }, defCe: { $lte: max, $gte: min } }).sort({ updatedAt: -1 }).limit(100).lean(lean); return result; } - public static async createPvpDefense(params: { roleId: string, roleName: string, heroes: Array, ce: number }, lean = true) { + public static async createPvpDefense(params: { roleId: string, roleName: string, heroes: Array, defCe: number }, lean = true) { const doc = new PvpDefenseModel(); const update = Object.assign(doc.toJSON(), params); const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true }).lean(lean); @@ -114,26 +114,26 @@ export default class PvpDefense extends BaseModel { } - public static async addHeroToDefense(roleId: string, heroInfo: any, ce: number, lean = true) { + public static async addHeroToDefense(roleId: string, heroInfo: any, defCe: number, lean = true) { const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: roleId }, { - $inc: { ce }, + $inc: { defCe }, $push: { heroes: heroInfo } }, { upsert: true, new: true }).lean(lean); return defense; } - public static async removeHeroFromDefense(roleId: string, hid: number, ce: number, lean = true) { + public static async removeHeroFromDefense(roleId: string, hid: number, defCe: number, lean = true) { const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: roleId }, { - $inc: { ce: -1 * ce }, + $inc: { defCe: -1 * defCe }, $pull: { heroes: { actorId: hid } } }, { upsert: true, new: true }).lean(lean); return defense; } - public static async updateCe(roleId: string, hid: number, ce: number, lean = true) { - const rec: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId, 'heroes.actorId': hid }, { $set: { ce } }).lean(lean); + public static async updateCe(roleId: string, hid: number, defCe: number, lean = true) { + const rec: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId, 'heroes.actorId': hid }, { $set: { defCe } }).lean(lean); return rec } diff --git a/shared/db/SystemConfig.ts b/shared/db/SystemConfig.ts new file mode 100644 index 000000000..c1c1d90d0 --- /dev/null +++ b/shared/db/SystemConfig.ts @@ -0,0 +1,17 @@ +import BaseModel from './BaseModel'; +import { getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; + +export default class SystemConfig extends BaseModel { + @prop({ required: true }) + map: number; // 地图 + @prop({ required: true }) + seasonNum: number; // 赛季 + public static async findSystemConfig(objectId: string, lean = true) { + const result: SystemConfigType = await SystemConfigModel.findOne({ objectId }).lean(lean); + return result; + } +} + +export const SystemConfigModel = getModelForClass(SystemConfig); + +export interface SystemConfigType extends Pick, keyof SystemConfig> { }; \ No newline at end of file