✨ feat(gvg): 概览

This commit is contained in:
luying
2023-02-17 21:13:04 +08:00
parent 0a65a0863d
commit 295128d668
5 changed files with 136 additions and 16 deletions
+5 -2
View File
@@ -11,7 +11,6 @@ class Player {
teamCnt: number;
}
@index({ configId: 1, cityId: 1, groupId: 1, serverType: 1 })
// GVGCity 类,继承自 BaseModel
export default class GVGCity extends BaseModel {
@@ -77,12 +76,16 @@ export default class GVGCity extends BaseModel {
// 占领城池
public static async guardCity(configId: number, groupId: number, serverType: number, cityId: number, league: LeagueRankInfo) {
console.log('##### guardCity', configId, groupId, serverType, cityId)
const city: GVGCityType = await GVGCityModel.findOneAndUpdate({ configId: configId + 1, cityId, groupId, serverType }, { $set: {
hasGuard: true, guardLeague: league.code, guardLeagueName: league.name, guardLeagueIcon: league.icon
} }, { upsert: true, new: true }).lean();
return city;
}
public static async findByConfig(configId: number, groupId: number, serverType: number) {
const cities: GVGCityType[] = await GVGCityModel.find({ configId, groupId, serverType, hasGuard: true }).lean();
return cities
}
}
+68
View File
@@ -0,0 +1,68 @@
import BaseModel from "./BaseModel";
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { GVGTeamType } from "./GVGTeam";
@index({ configId: 1, pontId: 1, groupId: 1, serverType: 1 })
// GVGCityAreaPoint 类,继承自 BaseModel
export default class GVGCityAreaPoint extends BaseModel {
@prop({ required: true, default: 1 })
configId: number; // config唯一id
@prop({ required: true, default: 1 })
groupId: number; // 战区
@prop({ required: true, default: 1 })
serverType: number; // 1-单服 2-跨服
@prop({ required: true })
cityId: number; // 城池id
@prop({ required: true })
areaId: number; // 区域
@prop({ required: true })
pointId: number; // 积分点
@prop({ required: true })
leagueCode: string; // 联军
@prop({ required: true })
leagueName: string; // 联军
@prop({ required: true })
roleId: string; // 玩家
@prop({ required: true })
roleName: string; // 玩家
@prop({ required: true })
teamCode: string; // 玩家的编队
public static async settlePoint(cityId: number, areaId: number, pointId: number, team: GVGTeamType) {
let { configId, groupId, serverType, leagueCode, leagueName, roleId, roleName, teamCode } = team;
await GVGCityAreaPointModel.findOneAndUpdate({ configId, groupId, serverType, pointId }, { $setOnInsert: { teamCode: '' }}, { upsert: true });
let result: GVGCityAreaPointType = await GVGCityAreaPointModel.findOneAndUpdate(
{ configId, groupId, serverType, pointId },
{ $set: { cityId, areaId, leagueCode, leagueName, roleId, roleName, teamCode } },
{ new: true }).lean();
return result;
}
public static async leavePoint(configId: number, groupId: number, serverType: number, pointId: number) {
let result: GVGCityAreaPointType = await GVGCityAreaPointModel.findOneAndUpdate({ configId, groupId, serverType, pointId }, { $set: { teamCode: '' }}, { new: true }).lean();
return result;
}
public static async findByConfig(configId: number, groupId: number, serverType: number) {
let result: GVGCityAreaPointType[] = await GVGCityAreaPointModel.find({ configId, groupId, serverType }).lean();
return result
}
}
export const GVGCityAreaPointModel = getModelForClass(GVGCityAreaPoint);
export interface GVGCityAreaPointType extends Pick<DocumentType<GVGCityAreaPoint>, keyof GVGCityAreaPoint> {};
export type GVGCityAreaPointUpdate = Partial<GVGCityAreaPointType>; // 将所有字段变成可选项
+5 -2
View File
@@ -84,7 +84,10 @@ export default class GVGTeam extends BaseModel {
startMoveTime: number;
@prop({ required: true, default: 0 })
stopMoveTime: number; // 移动冷却时间
moveCdTime: number; // 移动冷却时间
@prop({ required: true, default: 0 })
stopMoveTime: number; // 移动时间
@prop({ required: true, default: 0 })
defenseTime: number; // 防守保护时间
@@ -164,7 +167,7 @@ export default class GVGTeam extends BaseModel {
// 移动
public static async startMove(teamCode: string, areaId: number, fromAreaId: number) {
const res: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: { areaId, fromAreaId, stopMoveTime: nowSeconds() + GVG.GVG_DEFAULT_MOVE_CD } }, { new: true }).lean();
const res: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: { areaId, fromAreaId, stopMoveTime: nowSeconds() + GVG.GVG_DEFAULT_MOVE_CD, moveCdTime: nowSeconds() + GVG.GVG_DEFAULT_MOVE_CD } }, { new: true }).lean();
return res;
}