军团活动:蛮夷入侵主动接口
This commit is contained in:
@@ -148,4 +148,20 @@ export enum GUILD_ACTIVITY_STATUS {
|
||||
WAITING = 0,
|
||||
START = 1,
|
||||
END = 2
|
||||
}
|
||||
|
||||
// 积分获取类型
|
||||
export enum GET_POINT_WAYS {
|
||||
ROUND_START = 1,
|
||||
ENEMY = 2, // 小兵
|
||||
LITTLE_BOSS = 3, // 小boss
|
||||
BOSS = 4, // 大boss
|
||||
DEFENSE_SUCCESS = 5
|
||||
}
|
||||
|
||||
// 敌军类型,和上面的相对应
|
||||
export enum ENEMIES_TYPE {
|
||||
ENEMY = 2, // 小兵
|
||||
LITTLE_BOSS = 3, // 小boss
|
||||
BOSS = 4, // 大boss
|
||||
}
|
||||
@@ -197,6 +197,7 @@ export const STATUS = {
|
||||
|
||||
// 军团活动 21100-21199
|
||||
GUILD_ACTIVITY_NOT_OPEN: { code: 21100, simStr: '活动未开放' },
|
||||
GATE_HP_IS_ZERO: { code: 21101, simStr: '城门已被击破' },
|
||||
|
||||
// 通用 30000 - 30099
|
||||
DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },
|
||||
|
||||
@@ -10,8 +10,12 @@ export class Record {
|
||||
@prop({ required: true })
|
||||
dataId: number; // 出兵表上的dataId
|
||||
|
||||
@prop({ required: true })
|
||||
enemyType: number; // 敌人类型 2-小兵 3-小boss 4-大boss
|
||||
|
||||
@prop({ required: true })
|
||||
score: number; // 得分
|
||||
|
||||
}
|
||||
|
||||
@index({ code: 1 })
|
||||
@@ -55,9 +59,6 @@ export default class UserGuildActivityRec extends BaseModel {
|
||||
@prop({ required: true, type: Number })
|
||||
heroes: number[]; // 使用的武将
|
||||
|
||||
@prop({ required: true })
|
||||
round: number; // 坚持回合数
|
||||
|
||||
@prop({ required: true })
|
||||
score: number; // 个人总军功
|
||||
|
||||
@@ -76,7 +77,7 @@ export default class UserGuildActivityRec extends BaseModel {
|
||||
{ $setOnInsert: update },
|
||||
{new: true, upsert: true}).lean();
|
||||
if(heroes.length > 0 && rec) {
|
||||
rec = await UserGuildActivityRecModel.findOneAndUpdate( { code: rec.code}, { $push: { heroes: { $each: heroes}}}, {new: true}).lean();
|
||||
rec = await UserGuildActivityRecModel.findOneAndUpdate( { code: rec.code}, { $push: { heroes: { $each: heroes}}, $inc: { challengeCnt: 1 }}, {new: true}).lean();
|
||||
}
|
||||
return rec;
|
||||
}
|
||||
@@ -89,6 +90,11 @@ export default class UserGuildActivityRec extends BaseModel {
|
||||
).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async updateInfo(code: string, update: UserGuildActivityRecUpdateParam) {
|
||||
let rec: UserGuildActivityRec = await UserGuildActivityRecModel.findOneAndUpdate({ code }, { $set: update }, { new: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
}
|
||||
|
||||
export const UserGuildActivityRecModel = getModelForClass(UserGuildActivityRec);
|
||||
|
||||
58
shared/domain/battleField/guildActivity.ts
Normal file
58
shared/domain/battleField/guildActivity.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import { GUILDACTIVITY } from "../../pubUtils/dicParam";
|
||||
|
||||
export class GateMembersRec {
|
||||
roleId: string;
|
||||
round: number = 0;
|
||||
enemies: number[] = [];
|
||||
constructor(roleId: string) {
|
||||
this.roleId = roleId;
|
||||
}
|
||||
}
|
||||
|
||||
export class GateActivityObject {
|
||||
private gateHp: Map<string, number> = new Map(); // 城门血条,每个军团有一条血条
|
||||
private members: Map<string, Array<string>> = new Map(); // 每个军团参与的成员
|
||||
private membersRecord: Map<string, GateMembersRec> = new Map(); // 每个成员的回合数和敌军数,防刷
|
||||
|
||||
public getObj(guildCode: string) {
|
||||
return {
|
||||
gateHp: this.getGateHpAndInc(guildCode),
|
||||
members: this.members.get(guildCode),
|
||||
memberesRecord: this.membersRecord.get(guildCode)
|
||||
}
|
||||
}
|
||||
|
||||
public getGateHpAndInc(guildCode: string, inc: number = 0) {
|
||||
let gateHp = this.gateHp.get(guildCode);
|
||||
if(!this.gateHp.has(guildCode)) {
|
||||
gateHp = GUILDACTIVITY.GATEACTIVITY_GATEHP;
|
||||
}
|
||||
if(inc != 0) {
|
||||
gateHp += inc;
|
||||
this.gateHp.set(guildCode, gateHp);
|
||||
}
|
||||
if(gateHp <= 0) gateHp = 0;
|
||||
return gateHp
|
||||
}
|
||||
|
||||
public pushMembers(guildCode: string, roleId: string) {
|
||||
|
||||
if(this.members.has(guildCode)) {
|
||||
this.members.get(guildCode).push(roleId);
|
||||
} else {
|
||||
this.members.set(guildCode, [roleId]);
|
||||
}
|
||||
}
|
||||
|
||||
public getMemberRecord(code: string, roleId: string) {
|
||||
return this.membersRecord.get(code)||new GateMembersRec(roleId)
|
||||
}
|
||||
|
||||
public setMemberRecord(code: string, newMemberRecord: GateMembersRec) {
|
||||
this.membersRecord.set(code, newMemberRecord);
|
||||
}
|
||||
|
||||
public delMemberRecord(code: string) {
|
||||
this.membersRecord.delete(code);
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ export const dicGuildActiveWays = new Map<number, DicGuildActiveWays>();
|
||||
|
||||
arr.forEach(o => {
|
||||
o.activePoint = decodeIdCntArrayStr(o.activePoint, 1);
|
||||
if(!o.count) o.count = o.cout;
|
||||
dicGuildActiveWays.set(o.id, o);
|
||||
});
|
||||
arr = undefined;
|
||||
Reference in New Issue
Block a user