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.
43 lines
1.6 KiB
43 lines
1.6 KiB
|
3 weeks ago
|
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,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
}
|