Пример #1
0
        // Core generation.

        private static async Task <BattlefieldCore> GenerateCoreAsync(IProgress <string> progress, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            // Generate map.
            progress.Report("Generating map...");
            var mapGenerator = new FullOfHolesMapGenerator()
            {
                HeightLimit = 10,
                Size        = new Vector2Int(100, 100)
            };
            var map = await mapGenerator.GenerateAsync(0, cancellationToken);

            cancellationToken.ThrowIfCancellationRequested();

            // Generate layout.
            progress.Report("Generating layout...");
            var layout = await LayoutCore.CreateLayoutAsync(map.Presentation, 5, 0.3f, 0.1f, cancellationToken);

            cancellationToken.ThrowIfCancellationRequested();

            // Generate unit system.
            progress.Report("Generating units...");
            var unitSystemGenerator = new UniformUnitSystemGenerator()
            {
                Map           = map.Presentation,
                UnitCount     = 60,
                UnitTemplates = GenerateUnitTemplates()
            };
            var unitSystem = await unitSystemGenerator.GenerateAsync(0, cancellationToken);

            cancellationToken.ThrowIfCancellationRequested();

            // Assemble core.
            progress.Report("Finishing game data generation...");
            var core = new BattlefieldCore(map, layout, unitSystem);

            return(core);
        }