You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
AdLike2048/assets/script/battle/ai/match/AiMatchPlayerBuffCounts.ts

42 lines
1.6 KiB

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,
};
}
}