Пример #1
0
        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);
        }
Пример #2
0
 public PickerSpawner(IMultiRandPicker <TSpawnable> picker)
 {
     this.Picker = picker;
 }
Пример #3
0
 public MultiStepSpawner(IMultiRandPicker <IStepSpawner <TGenContext, TSpawnable> > picker)
 {
     this.Picker = picker;
 }