80 lines
2.5 KiB
TypeScript
80 lines
2.5 KiB
TypeScript
import { GUILDACTIVITY } from "../../pubUtils/dicParam";
|
|
import { SimpleGuildRankParam, SimpleRoleRankParam } from '../rank'
|
|
|
|
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(); // 每个成员的回合数和敌军数,防刷
|
|
private guilds: Map<number, string[]> = 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 getGuilds() {
|
|
return this.guilds;
|
|
}
|
|
|
|
public pushMembers(guildCode: string, serverId: number, roleId: string) {
|
|
|
|
if(this.members.has(guildCode)) {
|
|
this.members.get(guildCode).push(roleId);
|
|
} else {
|
|
this.members.set(guildCode, [roleId]);
|
|
}
|
|
if(this.guilds.has(serverId)) {
|
|
this.guilds.set(serverId, []);
|
|
} else {
|
|
let arr = this.guilds.get(serverId)||[];
|
|
if(!arr.includes(guildCode)) arr.push(guildCode);
|
|
this.guilds.set(serverId, arr);
|
|
}
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
export interface GuildGateRankParam {
|
|
guildRank: SimpleGuildRankParam[],
|
|
myGuildRank: SimpleGuildRankParam,
|
|
memberRank: SimpleRoleRankParam[],
|
|
myMemberRank?: SimpleRoleRankParam
|
|
} |