镇念塔:支持多层碾压
This commit is contained in:
@@ -404,6 +404,11 @@ export default class Role extends BaseModel {
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async setTowerLv(roleId: string, towerLv: number, newWarStar: WarStar[] = []) {
|
||||
let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $set: { towerLv }, $push: { warStar: { $each: newWarStar }}, towerUpTime: new Date() }, { new: true }).lean({ getters: true, virtuals: true });
|
||||
return role;
|
||||
}
|
||||
|
||||
public static async receiveTowerBox(roleId: string, ids: number[] = []) {
|
||||
let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $push: { towerReceived: { $each: ids }} }, { new: true }).lean();
|
||||
return role;
|
||||
|
||||
@@ -2,7 +2,7 @@ import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { gameData } from '../pubUtils/data';
|
||||
|
||||
class WarStatus {
|
||||
export class WarStatus {
|
||||
@prop({ required: true })
|
||||
warId: number; // 策划表中战斗编号
|
||||
@prop({ required: false })
|
||||
@@ -21,6 +21,8 @@ export default class TowerRecord extends BaseModel {
|
||||
roleId: string; // 角色 id
|
||||
@prop({ required: true, default: 1 })
|
||||
lv: number; // 天梯层数
|
||||
@prop({ required: true, default: 0 })
|
||||
skipFrom: number; // 从哪层跳过来的天梯层数
|
||||
@prop({ required: true, default: [], type: Number })
|
||||
heroes: Array<number>; // 本层已使用武将
|
||||
@prop({ required: true, type: WarStatus, default: [], _id: false })
|
||||
@@ -34,13 +36,13 @@ export default class TowerRecord extends BaseModel {
|
||||
@prop({ required: true, default: false })
|
||||
passed: boolean; // 此层是否通过,true-通过,false-未通过
|
||||
|
||||
public static async createRecord(towerInfo: {roleId: string, lv: number, warStatus: Array<WarStatus>}, lean = true) {
|
||||
public static async createRecord(towerInfo: {roleId: string, lv: number, warStatus: Array<WarStatus>}) {
|
||||
const recDoc = new TowerRecordModel();
|
||||
const update = Object.assign(recDoc.toJSON(), towerInfo );
|
||||
delete update._id;
|
||||
const { roleId, lv } = towerInfo;
|
||||
// console.log(JSON.stringify(towerInfo))
|
||||
let rec: TowerRecordType = await TowerRecordModel.findOneAndUpdate({roleId, lv}, {$set: update}, {upsert: true, new: true}).lean(lean);
|
||||
let rec: TowerRecordType = await TowerRecordModel.findOneAndUpdate({roleId, lv}, {$set: update}, {upsert: true, new: true}).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
@@ -74,10 +76,16 @@ export default class TowerRecord extends BaseModel {
|
||||
}
|
||||
|
||||
// 跳过当前层
|
||||
public static async skipTower(roleId: string, curLv: number, heroes: number[]) {
|
||||
let rec: TowerRecordType = await TowerRecordModel.findOneAndUpdate({ roleId, lv: curLv, 'warStatus.status': false }, {
|
||||
$set: { 'warStatus.$.status': true, heroes, passed: true },
|
||||
}, { new: true }).lean()
|
||||
public static async skipTower(roleId: string, fromLv: number, curLv: number, warStatus: WarStatus[]) {
|
||||
console.log('######## skipTower', roleId, fromLv, curLv)
|
||||
|
||||
await TowerRecordModel.findOneAndUpdate({ roleId, lv: fromLv }, { $set: { passed: true } }, { new: true });
|
||||
|
||||
const recDoc = new TowerRecordModel();
|
||||
const update = Object.assign(recDoc.toJSON(), { roleId, lv: curLv, skipFrom: fromLv, passed: true, warStatus } );
|
||||
delete update._id;
|
||||
|
||||
let rec: TowerRecordType = await TowerRecordModel.findOneAndUpdate({ roleId, lv: curLv }, { $setOnInsert: update }, { new: true, upsert: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user