Example #1
0
        public static List <Fight> PlayMultiple(int numberOfTimes, Fighter f1, Fighter f2, FightPlan fp1, FightPlan fp2, FightOptions options)
        {
            int perEach = numberOfTimes / 20;
            var results = new ConcurrentBag <List <Fight> >();

            Parallel.For(0, 20, (i) =>
            {
                FightTracker tracker = new FightTracker(f1, f2, fp1.Copy(), fp2.Copy(), options);
                List <Fight> resTemp = tracker.PlayFights(perEach);
                results.Add(resTemp);
            });
            List <Fight> ret = results.SelectMany(fr => fr).ToList();

            if (ret.Count < numberOfTimes)
            {
                int          numSim  = ret.Count - numberOfTimes;
                FightTracker tracker = new FightTracker(f1, f2, fp1.Copy(), fp2.Copy(), options);
                var          v       = tracker.PlayFights(numSim);
                foreach (var res in v)
                {
                    ret.Add(res);
                }
            }
            return(ret);
        }