import { DailyShopDataManager } from '../../../manager/DailyShopDataManager'; import { aiOp } from '../runtime/AiLog'; /** 匹配用:玩家当前携带主被动数量 */ export interface PlayerBuffCountsForMatch { /** 主动数量 */ active: number; /** 被动数量 */ passive: number; } /** * 读玩家本局携带 buff 数量(供 Const 12/14 偏移)。 */ export class AiMatchPlayerBuffCounts { /** * 主动/被动已占用槽位数(以可解析携带为准)。 * @param logLabel 日志前缀;空则不打 */ static read(logLabel = '玩家携带'): PlayerBuffCountsForMatch { DailyShopDataManager.ensureToday(); const activeSlots = DailyShopDataManager.getActiveSlotIds(); const passiveSlots = DailyShopDataManager.getPassiveSlotIds(); const actives = DailyShopDataManager.getOwnedActive(); const passives = DailyShopDataManager.getOwnedPassive(); const activeIds: number[] = []; const passiveIds: number[] = []; for (let i = 0; i < actives.length; i++) activeIds.push(actives[i].id); for (let i = 0; i < passives.length; i++) passiveIds.push(passives[i].id); if (logLabel) { aiOp( `${logLabel} 推导` + ` slotA=[${activeSlots.join(',')}] parsedA=${actives.length}[${activeIds.join(',')}]` + ` slotP=[${passiveSlots.join(',')}] parsedP=${passives.length}[${passiveIds.join(',')}]`, ); } return { active: actives.length, passive: passives.length, }; } }