using OGSoundRemaster.Audio; using OGSoundRemaster.Mapping;
var bank=new AudioBank(); bank.Scan("/home/claude/build/payload/OGSound", m=>Console.WriteLine("WARN "+m));
var map=new SoundMap(bank); int bad=0,good=0;
void C(List<BankFile> l){ if(l==null||l.Count==0) bad++; else good++; }
foreach(var w in new[]{"WeaponColt45","WeaponGarand","WeaponK98","WeaponSpringfield","WeaponThompson","WeaponMP40","WeaponMG42","WeaponWaltherP38","WeaponBazooka","WeaponPanzerschreck"}){
  C(map.WeaponFire(w,false)); C(map.WeaponFire(w,true)); C(map.WeaponReload(w)); }
foreach(var r in new[]{"attackMyTargetSound","fireAtWillSound","followSound","holdFireSound","holdPositionSound","switchToSound","killSound","damagedSound","deathSound","friendlyFireSound","objectivesCompleteSound","noTargetSound"})
  for(int p=0;p<4;p++) C(map.SquadVoice(p,r));
foreach(var l in new[]{map.EnemyAlert,map.EnemyDamaged,map.EnemyDeath,map.EnemyKilledPlayer,map.EnemyEndSearch,map.DogAttack,map.DogDamaged,map.DogDeath,map.DogAlert,
 map.HitDirt,map.HitMetal,map.HitGlass,map.HitFlesh,map.HitWood,map.Footsteps,map.FoliageMove,map.Wading,map.Swimming,map.HitGround,
 map.APMinePlace,map.APMineExplode,map.ATMinePlace,map.ATMineExplode,map.MineExplode,map.TntPlace,map.TntBeep,map.TntTicToc,map.TntExplode,
 map.GrenadeBounce,map.GrenadeExplode,map.GrenadeThrow,map.GrenadeDraw,map.CoinThrow,map.CoinBounce,map.FirstAid,map.Binoculars,map.DropItem,
 map.PickupGun,map.PickupItem,map.GenericExplode,map.RocketFly,map.RocketExplode,map.CarHitBody,map.WeaponDraw,map.GarandPing,
 map.TankIdle,map.TankMove,map.TankTurretLoop,map.TankTurretMove,map.VehicleCrash,map.VehicleGearChange,map.VehicleSkid,map.VehicleBrake,map.VehicleHorn,map.VehicleSuspension,
 map.MenuMusic,map.BriefingMusic,map.BattleMusic,map.VictoryCamMusic,map.DeathCamMusic,map.VictoryDebrief,map.FailDebrief,
 map.AmbientWind,map.AmbientWindGust,map.AmbientBirds,map.AmbientNight,map.AmbientOcean,map.AmbientRiver,map.AmbientRain,map.AmbientThunder,map.DistantWar,map.Planes,map.UiClick,map.UiBeep}) C(l);
C(map.TankFire("PanzerIV")); C(map.TankFire("Sherman"));
foreach(SoundMap.VehicleFamily f in Enum.GetValues<SoundMap.VehicleFamily>()){ C(map.VehicleIdle(f)); C(map.VehicleDriving(f)); C(map.VehicleStart(f)); C(map.VehicleStop(f)); }
for(int m=0;m<10;m++) C(map.MissionMusic(m));
int vo=0; for(int m=0;m<10;m++) foreach(char k in "bsf") if(map.BriefingVO(m,k)!=null) vo++;
Console.WriteLine($"bank: {bank.Describe()}");
Console.WriteLine($"RESULT: {good} sets resolved, {bad} EMPTY, briefing VO {vo}/30");
return bad;
