import { ServerlistModel } from "../db/Serverlist"; import { RoleModel } from "../db/Role"; import { reduceCe } from "../pubUtils/util"; import { GUILDACTIVITY } from "../pubUtils/dicParam"; import { gameData } from "../pubUtils/data"; import { getCurHourPoint, getCutDay, nowSeconds } from "../pubUtils/timeUtil"; import { GUILD_ACTIVITY_STATUS } from "../consts"; import { Record } from "../db/UserGuildActivityRec"; /** * 定时任务,获得前一天的活跃玩家中位数武将战力 */ export async function setMedianCe() { let servers = await ServerlistModel.getAllServerList(); for(let server of servers) { if(server.serverType == 'official') { let medianRole = await RoleModel.getMedianRole(server.id); if(!medianRole) { await ServerlistModel.updateByServerId(server.id, { medianCe: GUILDACTIVITY.GATEACTIVITY_ENEMYCE }); } else { let { topLineup } = medianRole; let topHero = topLineup.sort((a, b) => b.ce - a.ce); let medianCe = reduceCe(topHero[0].ce); await ServerlistModel.updateByServerId(server.id, { medianCe }); } } } return servers; } /** * 获得本服前一天活跃玩家中位数玩家的最强武将战力 * @param serverId */ export async function getMedianCe(serverId: number) { let server = await ServerlistModel.findByServerId(serverId); if(server) { return server.medianCe; } return GUILDACTIVITY.GATEACTIVITY_ENEMYCE; } /** * 根据当前时间判断军团活动倒计时 * @param id 军团活动id */ export function getGuildActivityStatus(id: number) { let dicGuildActivity = gameData.guildActivity.get(id); if(!dicGuildActivity) return false; let startTime = getCurHourPoint(dicGuildActivity.startTime); let countdownTime = getCurHourPoint(dicGuildActivity.countDown); let { duringTime, openDay } = dicGuildActivity; let endTime = startTime + duringTime; let status = 0, time = 0; let now = nowSeconds(); if(now >= countdownTime && now < startTime) { status = GUILD_ACTIVITY_STATUS.WAITING; time = startTime - now; } else if (now >= startTime && now < endTime) { status = GUILD_ACTIVITY_STATUS.START; time = endTime - now; } else { status = GUILD_ACTIVITY_STATUS.END; } let day = getCutDay(); let isOpen = openDay.includes(day); return { status, time, isOpen } } export function getRecordScore(aid: number, record: { round: number, dataId: number }[]) { let dicGuildActivity = gameData.guildActivity.get(aid); console.log('xxxx', dicGuildActivity.warid) if(!dicGuildActivity) return false; let dicWarJson = gameData.warJson.get(dicGuildActivity.warid); if(!dicWarJson) return false; let curRound = record[0]?.round; let sum = 0, newRecords = new Array() for(let {round, dataId} of record) { let enemy = dicWarJson.find(cur => cur.dataId == dataId); console.log('yyyy', enemy.enemyType); let enemyType = enemy.enemyType; let score = gameData.gateActivityPoint.get(enemyType); newRecords.push({ round, dataId, score}); sum += score; console.log('***%*****', sum, score) if(round != curRound) { // 每回合开始得10分 sum += gameData.gateActivityPoint.get(1); console.log('***%%*****', sum) curRound = round; } } console.log('***&**', sum) return { score: sum, newRecords } }