巅峰演武:赛季优化修改

This commit is contained in:
luying
2022-10-17 14:42:40 +08:00
parent ddff18eb20
commit 08ca06d7ac
30 changed files with 590 additions and 272 deletions

View File

@@ -6,7 +6,7 @@ import { RewardInter } from "../../pubUtils/interface";
import { parseNumberList } from "../../pubUtils/util";
import { stringWithTypeToRewardInter } from "../../pubUtils/roleUtil";
import { ActivityBase } from './activityField';
import { PVPConfigModel } from "../../db/SystemConfig";
import { PVPConfigModel } from "../../db/PvpConfig";
import { getZeroPointOfTimeD, nowSeconds } from "../../pubUtils/timeUtil";
// 数据库格式

View File

@@ -3,7 +3,7 @@ import { isArray, isNumber, isString } from 'underscore';
import ServerStategy, { GMMail } from "../../db/ServerStategy";
import { RegionType } from "../../db/Region";
import { RewardInter } from "../../pubUtils/interface";
import { isTimestamp } from '../../pubUtils/util';
import { isTimestamp, parseNumberList } from '../../pubUtils/util';
import { isBoolean, isDate } from "util";
export class UpdateMailParams {
@@ -438,4 +438,36 @@ export class UpdateChannelParam {
if(this.privacyPolicyLink && !isString(this.privacyPolicyLink)) return false;
return true;
}
}
export class CreatePvpConfigParam {
env: string = '';
seasonNum: number|'new' = 0;
seasonStartTime: number = 0;
seasonEndTime: number = 0;
seasonRewardTime: number = 0;
warIds: string = '';
constructor(obj?: any) {
if(obj) {
for(let key in obj) {
this[key] = obj[key];
}
}
}
checkParams() {
// console.log('##### createNew', this.env, this.openTime, this.stopRegisterTime, this.hasOpenMail, this.hasCircleMail)
if(this.seasonNum != 'new' && !isNumber(this.seasonNum)) return false;
if(!this.env || !isNumber(this.seasonStartTime) || !isNumber(this.seasonEndTime) || !isNumber(this.seasonRewardTime) || !isString(this.warIds)) {
return false
}
return true;
}
getUpdateParam() {
let { seasonStartTime, seasonEndTime, seasonRewardTime, warIds } = this;
return { seasonStartTime, seasonEndTime, seasonRewardTime, warIds: parseNumberList(warIds)}
}
}

View File

@@ -3,13 +3,13 @@ import { prop, Ref, mongoose } from '@typegoose/typegoose';
import Hero from '../../db/Hero';
import { PvpDefenseType } from '../../db/PvpDefense';
import PvpHistoryOpp from '../../db/PvpHistoryOpp';
import { PvpSaveDataType } from '../../db/PvpSaveData';
import { PvpSeasonResultType } from '../../db/PvpSeasonResult';
import { getPlvAndScore } from '../../pubUtils/data';
import { RewardInter } from '../../pubUtils/interface';
import { nowSeconds } from '../../pubUtils/timeUtil';
// 防守阵容武将
export class DefenseHero {
export class DefenseHeroInSaveData {
@prop({ required: true })
actorId: number; // 武将id
@prop({ required: true })
@@ -18,16 +18,26 @@ export class DefenseHero {
dataId: number;
@prop({ required: true })
order: number;
@prop({ ref: 'Hero', type: mongoose.Schema.Types.ObjectId })
hero: Ref<Hero>;
constructor(param: { actorId: number, ai: number, dataId: number, order: number }, heroId: string) {
constructor(param: { actorId: number, ai: number, dataId: number, order: number }) {
this.actorId = param.actorId;
this.ai = param.ai;
this.dataId = param.dataId;
this.order = param.order;
}
}
// 防守阵容武将
export class DefenseHero extends DefenseHeroInSaveData {
@prop({ ref: 'Hero', type: mongoose.Schema.Types.ObjectId })
hero: Ref<Hero>;
constructor(param: { actorId: number, ai: number, dataId: number, order: number }, heroId: string) {
super(param);
this.hero = heroId;
}
}
// 防守阵容
@@ -228,7 +238,9 @@ export class PvpSeasonResultRecord {
export class PvpDataReturn {
seasonNum: number;
seasonStartTime: number;
seasonEndTime: number;
seasonRewardTime: number;
myRank: number = 0;
oppPlayers: OppPlayerReturn[] = [];
defense: DefenseLineupReturn = null;
@@ -244,7 +256,7 @@ export class PvpDataReturn {
receivedBox: number[] = [];
hisScore: number = 0;
heroScores: HeroScoreReturn[] = [];
isFirstEntry: boolean = false;
hasSaveDefense: boolean = false;
resultRecord: PvpSeasonResultRecord;
setPvpDefense(pvpDefense: PvpDefenseType) {
@@ -284,10 +296,6 @@ export class PvpDataReturn {
return { attackCe, defenseCe };
}
setIsFirstEntry(isFirstEntry: boolean) {
this.isFirstEntry = isFirstEntry;
}
setOppPlayers(oppPlayers: OppPlayerReturn[]) {
this.oppPlayers = oppPlayers;
}
@@ -296,12 +304,53 @@ export class PvpDataReturn {
this.myRank = rankLv;
}
setPvpConfig(seasonNum: number, seasonEndTime: number) {
setPvpConfig(seasonNum: number, seasonStartTime: number, seasonEndTime: number, seasonRewardTime: number) {
this.seasonNum = seasonNum;
this.seasonStartTime = seasonStartTime;
this.seasonEndTime = seasonEndTime;
this.seasonRewardTime = seasonRewardTime;
}
setPvpSeasonResult(pvpSeasonResult: PvpSeasonResultType) {
this.resultRecord = new PvpSeasonResultRecord(pvpSeasonResult);
}
getHasSaveDefense() {
if(this.seasonRewardTime < nowSeconds() && this.seasonStartTime > nowSeconds()) {
return true;
}
return !!this.defense;
}
calHasSaveDefense() {
this.hasSaveDefense = this.getHasSaveDefense();
return this.hasSaveDefense;
}
setChallengeCnt(challengeCnt: number) {
return this.challengeCnt = challengeCnt;
}
}
export class pvpSaveDataReturn {
warId: number; // 地图id
isUsing: boolean = false; // 设置的是否是这张地图
hasSet: boolean = false; // 玩家是否设置过
buff: number; // 选择的地图buff没有设置过不返回
heroes: DefenseHeroInSaveData[]; // 玩家武将,没有设置不返回
constructor(warId: number) {
this.warId = warId;
}
setUserSaveData(pvpSaveData: PvpSaveDataType) {
if(!pvpSaveData) return;
this.hasSet = true;
this.buff = pvpSaveData.buff;
this.heroes = pvpSaveData.heroes;
}
setAsUsing() {
this.isUsing = true;
}
}