public List <TSpawnable> GetSpawns(TGenContext map) { if (this.Picker is null) { return(new List <TSpawnable>()); } IMultiRandPicker <IStepSpawner <TGenContext, TSpawnable> > picker = this.Picker; if (picker.ChangesState) { picker = picker.CopyState(); } List <IStepSpawner <TGenContext, TSpawnable> > resultPickers = picker.Roll(map.Rand); List <TSpawnable> copyResults = new List <TSpawnable>(); foreach (IStepSpawner <TGenContext, TSpawnable> resultPicker in resultPickers) { List <TSpawnable> results = resultPicker.GetSpawns(map); foreach (TSpawnable result in results) { copyResults.Add((TSpawnable)result.Copy()); } } return(copyResults); }
public PickerSpawner(IMultiRandPicker <TSpawnable> picker) { this.Picker = picker; }
public MultiStepSpawner(IMultiRandPicker <IStepSpawner <TGenContext, TSpawnable> > picker) { this.Picker = picker; }