示例#1
0
        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);
        }
示例#2
0
 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);
 }