军团活动:诸侯混战城门血量

This commit is contained in:
luying
2022-03-01 10:10:11 +08:00
parent 478bfd5ddd
commit c5e5ca4b51
19 changed files with 231 additions and 77 deletions
@@ -1,10 +1,12 @@
// 军团活动蛮夷入侵城门血量等数据存储
import { Member } from "../../domain/battleField/guildActivity";
import { getCityActivityGateHp } from "./guildActivityService";
// 军团诸侯混战等数据
export class CityActivityObject {
private gateHp: Map<string, number> = new Map(); // 城门血条,每个cityId有一条血条 serverId&cityId => gateHp
private maxHp: Map<string, number> = new Map(); // 城门血条,每个cityId最大城门血量 serverId&cityId => gateHp
private members: Map<string, Array<Member>> = new Map(); // 每个军团参与的成员 guildCode => [{roleId, job}]
private cities: Map<string, string[]> = new Map(); // 各个城池参与的军团 serverId&cityId => [guildCode]
private guilds: Map<string, number> = new Map(); // 军团所在的城池 guildCode => cityId
@@ -27,6 +29,7 @@ export class CityActivityObject {
let key = this.getKey(serverId, cityId);
return {
gateHp: this.gateHp.get(key),
maxHp: this.maxHp.get(key),
members: this.members.get(guildCode),
city: this.cities.get(key),
guild: this.guilds.get(guildCode)
@@ -55,18 +58,20 @@ export class CityActivityObject {
return this.members.get(guildCode)||[];
}
public getGateHpAndInc(serverId: number, cityId: number, maxHp: number, inc: number = 0) {
public async getGateHpAndInc(serverId: number, cityId: number, inc: number = 0) {
let key = this.getKey(serverId, cityId);
let gateHp = this.gateHp.get(key);
if(!this.gateHp.has(key)) {
gateHp = maxHp;
gateHp = await getCityActivityGateHp(serverId, cityId);
this.gateHp.set(key, gateHp);
this.maxHp.set(key, gateHp);
}
if(inc != 0) {
gateHp += inc;
this.gateHp.set(key, gateHp);
}
if(gateHp <= 0) gateHp = 0;
return gateHp
return { gateHp, maxHp: this.maxHp.get(key)||0 }
}
public getHistoryCity(roleId: string) {