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/debug/BagRefreshDebugLog.ts

64 lines
2.2 KiB

3 weeks ago
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<number, string> = {
2 weeks ago
1: '五行1',
2: '五行2',
3: '五行3/格',
4: '五行4(火)',
5: '五行5',
3 weeks ago
[Weapon2TileType.Grid]: '格子',
};
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(', ')}]`;
}