军团活动:粮草先行事件计算
This commit is contained in:
@@ -133,12 +133,15 @@ export class RaceActivityObject {
|
||||
this.events.set(toGuild, events);
|
||||
}
|
||||
let { guildRank, myGuildRank, myIndex } = await this.getRanks(serverId, toGuild);
|
||||
console.log('####', myIndex)
|
||||
if(myGuildRank) {
|
||||
let woodenHorseList = await this.getScreenHorses(serverId, guildRank, myIndex, true, Date.now() - event.startTime);
|
||||
for(let woodenHorse of woodenHorseList||[]) {
|
||||
if(woodenHorse) await sendMessageToGuildWithSuc(woodenHorse.guildCode, PUSH_ROUTE.GUILD_RACE_EVENT, { timestamp: Date.now(), events: [event] });
|
||||
}
|
||||
let ranks = this.getScreenHorseRanks(guildRank, myIndex);
|
||||
for(let rank of ranks||[]) {
|
||||
if(rank) await sendMessageToGuildWithSuc(rank.code, PUSH_ROUTE.GUILD_RACE_EVENT, { timestamp: Date.now(), events: [event] });
|
||||
}
|
||||
let timeout = setTimeout(async () => {
|
||||
await this.getScreenHorses(serverId, guildRank, myIndex, true);
|
||||
clearTimeout(timeout);
|
||||
}, event.startTime - Date.now())
|
||||
} else {
|
||||
await sendMessageToGuildWithSuc(toGuild, PUSH_ROUTE.GUILD_RACE_EVENT, { timestamp: Date.now(), events: [event] });
|
||||
}
|
||||
@@ -279,42 +282,50 @@ export class RaceActivityObject {
|
||||
|
||||
}
|
||||
|
||||
private async getScreenHorses(serverId: number, ranks: RaceActivityRankParam[], i: number, needSend: boolean, time = 0) {
|
||||
private getScreenHorseRanks(ranks: RaceActivityRankParam[], i: number) {
|
||||
let curRank = ranks[i];
|
||||
if(curRank.durability == 0) return;
|
||||
if(!curRank || curRank.durability == 0) return;
|
||||
|
||||
let beforeHorses: WoodenHorse[] = [], afterHorses: WoodenHorse[] = [], beforeCnt = 0, afterCnt = 0;
|
||||
let beforeHorses: RaceActivityRankParam[] = [], afterHorses: RaceActivityRankParam[] = [], beforeCnt = 0, afterCnt = 0;
|
||||
for(let j = i - 1; j >= 0; j--) {
|
||||
if(ranks[j]) {
|
||||
let wh = await this.getWoodenHorse(ranks[j].code, serverId);
|
||||
if(wh) {
|
||||
beforeHorses.push(wh);
|
||||
if(ranks[j].durability > 0) beforeCnt ++
|
||||
}
|
||||
beforeHorses.push(ranks[j]);
|
||||
if(ranks[j].durability > 0) beforeCnt ++
|
||||
}
|
||||
if(beforeCnt >= 2) break;
|
||||
}
|
||||
for(let j = i + 1; j < ranks.length; j++) {
|
||||
if(ranks[j]) {
|
||||
let wh = await this.getWoodenHorse(ranks[j].code, serverId);
|
||||
if(wh) {
|
||||
afterHorses.push(wh);
|
||||
if(ranks[j].durability > 0) afterCnt++;
|
||||
}
|
||||
afterHorses.push(ranks[j]);
|
||||
if(ranks[j].durability > 0) afterCnt++;
|
||||
}
|
||||
if(afterCnt >= 2) break;
|
||||
}
|
||||
// 发送
|
||||
// console.log('send', woodenHorseList.length);
|
||||
return [...beforeHorses.reverse(), curRank, ...afterHorses]
|
||||
}
|
||||
|
||||
private async getScreenHorses(serverId: number, ranks: RaceActivityRankParam[], i: number, needSend: boolean) {
|
||||
let curRank = ranks[i];
|
||||
if(curRank.durability == 0) return;
|
||||
// 发送
|
||||
// console.log('send', woodenHorseList.length);
|
||||
let wh = await this.getWoodenHorse(curRank.code, serverId);
|
||||
let woodenHorseList = wh? [...beforeHorses.reverse(), wh, ...afterHorses]: [...beforeHorses.reverse(), ...afterHorses];
|
||||
let screenRank = this.getScreenHorseRanks(ranks, i);
|
||||
let woodenHorseList: WoodenHorse[] = [];
|
||||
for(let rank of screenRank) {
|
||||
if(rank.code == curRank.code) {
|
||||
woodenHorseList.push(wh);
|
||||
} else {
|
||||
let wh = await this.getWoodenHorse(rank.code, serverId);
|
||||
woodenHorseList.push(wh);
|
||||
}
|
||||
}
|
||||
|
||||
if(needSend) {
|
||||
let timeout = setTimeout(async () => {
|
||||
let events = this.getEvents(curRank.code, wh ? wh.distance : 0);
|
||||
await sendMessageToGuildWithSuc(curRank.code, PUSH_ROUTE.GUILD_RACE_UPDATE, { timestamp: Date.now(), woodenHorseList, guildRank: ranks, myGuildRank: curRank, events });
|
||||
clearTimeout(timeout);
|
||||
}, time);
|
||||
let events = this.getEvents(curRank.code, wh ? wh.distance : 0);
|
||||
await sendMessageToGuildWithSuc(curRank.code, PUSH_ROUTE.GUILD_RACE_UPDATE, { timestamp: Date.now(), woodenHorseList, guildRank: ranks, myGuildRank: curRank, events });
|
||||
}
|
||||
return woodenHorseList
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user