public static Toil PlaySustainerOrSound(this Toil toil, Func <SoundDef> soundDefGetter) { Sustainer sustainer = null; toil.AddPreInitAction(delegate { SoundDef soundDef2 = soundDefGetter(); if (soundDef2 != null && !soundDef2.sustain) { soundDef2.PlayOneShot(new TargetInfo(toil.GetActor().Position, toil.GetActor().Map, false)); } }); toil.AddPreTickAction(delegate { if (sustainer == null || sustainer.Ended) { SoundDef soundDef = soundDefGetter(); if (soundDef != null && soundDef.sustain) { SoundInfo info = SoundInfo.InMap(toil.actor, MaintenanceType.PerTick); sustainer = soundDef.TrySpawnSustainer(info); } } else { sustainer.Maintain(); } }); return(toil); }
public static Toil PlaySoundAtStart(this Toil toil, SoundDef sound) { toil.AddPreInitAction(delegate { sound.PlayOneShot(new TargetInfo(toil.GetActor().Position, toil.GetActor().Map, false)); }); return(toil); }