巅峰演武:赛季优化修改
This commit is contained in:
@@ -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";
|
||||
|
||||
// 数据库格式
|
||||
|
||||
@@ -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)}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user