Esempio n. 1
0
        internal Tuple <Map <T>, Dictionary <string, double> > GenerateAndMeasure(DungeonConfiguration config)
        {
            var randomizer = new Randomizer();
            var seed       = Guid.NewGuid().GetHashCode();

            randomizer.SetSeed(seed);
            var      halfHeight = config.Height / 2;
            var      halfWidth  = config.Width / 2;
            var      map        = new Map <BinaryCell>(halfWidth, halfHeight);
            var      results    = new Dictionary <string, double>();
            DateTime start      = DateTime.Now;
            var      totalStart = DateTime.Now;

            //pre processing
            foreach (var preProcessor in mPreProcessors)
            {
                start = DateTime.Now;
                preProcessor.ProcessMap(map, config, randomizer);
                results[preProcessor.GetType().Name] = DateTime.Now.Subtract(start).TotalSeconds;
            }

            //double map
            start = DateTime.Now;
            var postMap = mMapConverter.ConvertMap(map, config, randomizer);

            results[mMapConverter.GetType().Name] = DateTime.Now.Subtract(start).TotalSeconds;

            //post processing
            foreach (var postProcessor in mPostProcessors)
            {
                start = DateTime.Now;
                postProcessor.ProcessMap(postMap, config, randomizer);
                results[postProcessor.GetType().Name] = DateTime.Now.Subtract(start).TotalSeconds;
            }
            results["Total"] = DateTime.Now.Subtract(totalStart).TotalSeconds;
            return(new Tuple <Map <T>, Dictionary <string, double> >(postMap, results));
        }