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 = new Map(); // 城门血条,每个军团有一条血条 guildCode => hp private members: Map> = new Map(); // 每个军团参与的成员 guildCode => [roleId] private membersRecord: Map = new Map(); // 每个成员的回合数和敌军数,防刷 recCode => GateMembersRec private guilds: Map = new Map(); // 参加的所有军团 server => [guildCode] public getObj(guildCode: string, serverId: number) { console.log(guildCode, serverId) return { gateHp: this.getGateHpAndInc(guildCode), members: this.members.get(guildCode)||[], memberesRecord: [...this.membersRecord], guilds: this.guilds.get(serverId)||[] } } 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 { let arr = new Array(); arr.push(roleId); this.members.set(guildCode, [roleId]); } if(this.guilds.has(serverId)) { let arr = this.guilds.get(serverId); if(!arr.includes(guildCode)) arr.push(guildCode); this.guilds.set(serverId, arr); } else { this.guilds.set(serverId, [guildCode]); } } public getMemberRecord(recCode: string, roleId: string) { return this.membersRecord.get(recCode)||new GateMembersRec(roleId) } public setMemberRecord(recCode: string, newMemberRecord: GateMembersRec) { this.membersRecord.set(recCode, newMemberRecord); } public delMemberRecord(recCode: string) { this.membersRecord.delete(recCode); } public delGuildRecord(guildCode: string, serverId: number) { let guildList = this.guilds.get(serverId); if(guildList) { let index = guildList.indexOf(guildCode); guildList.splice(index, 1); } this.gateHp.delete(guildCode); this.members.delete(guildCode); } } export interface GuildGateRankParam { guildRank: SimpleGuildRankParam[], myGuildRank: SimpleGuildRankParam, memberRank: SimpleRoleRankParam[], myMemberRank?: SimpleRoleRankParam }