✨ feat(gvg): 概览
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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>; // 将所有字段变成可选项
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user