import { Weapon2TileType } from 'db://assets/mx/module/merge'; import type { BagRollEntry } from '../bag/BagWeaponPool'; import { textDisplayName } from '../config/BattleHeroTable'; import { WeaponComposeConfigProvider } from '../bag/WeaponComposeConfigProvider'; import { isDesignDebugEnabled } from './DesignDebug'; const TAG = '[BagRefreshDebug]'; const STYLE = 'color:#E6A23C;font-weight:bold'; /** 策划验算法开关(默认关,随 DesignDebug 或单独开启) */ let _enabled = false; export function setBagRefreshDebugEnabled(enabled: boolean): void { _enabled = enabled; } export function isBagRefreshDebugEnabled(): boolean { return _enabled || isDesignDebugEnabled(); } export function logBagRefreshDebug(message: string, ...args: unknown[]): void { if (!_enabled) return; console.debug(`%c${TAG} ${message}`, STYLE, ...args); } export function logBagRefreshSection(title: string): void { logBagRefreshDebug(`──────── ${title} ────────`); } const TILE_TYPE_LABEL: Record = { 1: '五行1', 2: '五行2', /** type=3 与遗留 Grid 同值 */ [Weapon2TileType.Grid]: '五行3/格', 4: '五行4(火)', 5: '五行5', }; export function formatWeapon2Brief( weapon2Id: number, provider: WeaponComposeConfigProvider = WeaponComposeConfigProvider.instance, ): string { const row = provider.getWeapon2Config(weapon2Id); const type = provider.getWeapon2Type(weapon2Id); const typeLabel = TILE_TYPE_LABEL[type] ?? `type${type}`; if (!row) return `id=${weapon2Id}(${typeLabel})`; const name = textDisplayName(row); return `${name}(id=${weapon2Id},${typeLabel})`; } export function formatBagRollEntries( entries: readonly BagRollEntry[], provider: WeaponComposeConfigProvider = WeaponComposeConfigProvider.instance, ): string { if (entries.length === 0) return '[]'; return `[${entries.map((e, i) => `${i}:${formatWeapon2Brief(e.weapon2Id, provider)}`).join(', ')}]`; } export function formatIdList(ids: readonly number[] | null | undefined): string { if (!ids?.length) return '[]'; const provider = WeaponComposeConfigProvider.instance; return `[${ids.map((id) => formatWeapon2Brief(id, provider)).join(', ')}]`; }