Exemplo n.º 1
0
        public GameObjectCodegenJob(string outputDir, IFileSystem fileSystem, DetailsStore store)
            : base(outputDir, fileSystem, store)
        {
            var jobName = nameof(GameObjectCodegenJob);

            logger.Info($"Initialising {jobName}.");

            AddInputFiles(store.SchemaFiles.ToList());

            logger.Info("Gathering component details.");
            componentsToGenerate = store.Components
                                   .Select(kv => new GenerationTarget <UnityComponentDetails>(kv.Value, kv.Value.Package))
                                   .ToList();

            logger.Trace("Adding job output files.");
            foreach (var componentTarget in componentsToGenerate)
            {
                var relativeOutputPath = componentTarget.OutputPath;
                var componentName      = componentTarget.Content.ComponentName;

                logger.Trace($"Adding job output files for component {componentTarget.Content.QualifiedName}.");

                if (componentTarget.Content.CommandDetails.Count > 0)
                {
                    AddOutputFile(Path.Combine(relativeOutputPath,
                                               Path.ChangeExtension($"{componentName}CommandSenderReceiver", FileExtension)));
                }

                AddOutputFile(Path.Combine(relativeOutputPath,
                                           Path.ChangeExtension($"{componentName}ComponentReaderWriter", FileExtension)));
            }
            logger.Info($"Added job output files for {componentsToGenerate.Count} components.");

            logger.Info($"Finished initialising {jobName}.");
        }
        public GameObjectCodegenJob(string outputDir, IFileSystem fileSystem, DetailsStore store) : base(
                outputDir, fileSystem, store)
        {
            InputFiles  = store.SchemaFiles.ToList();
            OutputFiles = new List <string>();

            componentsToGenerate = store.Components
                                   .Select(kv => new GenerationTarget <UnityComponentDetails>(kv.Value, kv.Value.Package))
                                   .ToList();

            foreach (var componentTarget in componentsToGenerate)
            {
                var relativeOutputPath = componentTarget.OutputPath;
                var componentName      = componentTarget.Content.ComponentName;

                if (componentTarget.Content.CommandDetails.Count > 0)
                {
                    OutputFiles.Add(Path.Combine(relativeOutputPath,
                                                 Path.ChangeExtension($"{componentName}CommandSenderReceiver", FileExtension)));
                }

                OutputFiles.Add(Path.Combine(relativeOutputPath,
                                             Path.ChangeExtension($"{componentName}ComponentReaderWriter", FileExtension)));
            }
        }
Exemplo n.º 3
0
        public CodegenJob(string baseOutputDirectory, IFileSystem fileSystem, DetailsStore detailsStore)
        {
            logger = LogManager.GetLogger(GetType().FullName);

            OutputDirectory   = baseOutputDirectory;
            this.fileSystem   = fileSystem;
            this.detailsStore = detailsStore;
        }
Exemplo n.º 4
0
        protected CodegenJob(string baseOutputDirectory, IFileSystem fileSystem, DetailsStore detailsStore, bool force)
        {
            Logger = LogManager.GetLogger(GetType().FullName);

            OutputDirectory   = baseOutputDirectory;
            this.fileSystem   = fileSystem;
            this.detailsStore = detailsStore;
            isDirtyOverride   = force;
        }
Exemplo n.º 5
0
        protected CodegenJob(CodegenJobOptions options, IFileSystem fileSystem, DetailsStore detailsStore)
        {
            Logger = LogManager.GetLogger(GetType().FullName);

            OutputDirectory   = options.OutputDir;
            this.fileSystem   = fileSystem;
            this.detailsStore = detailsStore;
            isDirtyOverride   = options.IsForce;
        }
Exemplo n.º 6
0
        public void OneTimeSetup()
        {
            var json      = JsonParsingTests.GetBundleContents();
            var overrides = new List <string>
            {
                "global::Improbable.Gdk.Tests.SomeType;global::UserCode.SerializationExtensions.Type"
            };

            store = new DetailsStore(SchemaBundle.LoadBundle(json), overrides);
        }
Exemplo n.º 7
0
        public GameObjectCodegenJob(string outputDir, IFileSystem fileSystem, DetailsStore store, bool force)
            : base(outputDir, fileSystem, store, force)
        {
            const string jobName = nameof(GameObjectCodegenJob);

            Logger.Trace($"Initialising {jobName}.");

            AddInputFiles(store.SchemaFiles);

            var componentsToGenerate = store.Components.Values.ToList();

            AddGenerators(componentsToGenerate, c
                          => ($"{c.Name}ComponentReaderWriter.cs", UnityComponentReaderWriterGenerator.Generate));
            Logger.Trace($"Added job targets for {componentsToGenerate.Count} components.");

            var componentsWithCommands = componentsToGenerate.Where(c => c.CommandDetails.Count > 0).ToList();

            AddGenerators(componentsWithCommands, c
                          => ($"{c.Name}CommandSenderReceiver.cs", UnityCommandSenderReceiverGenerator.Generate));
            Logger.Trace($"Added job targets for {componentsWithCommands.Count} components with commands.");

            Logger.Trace($"Finished initialising {jobName}.");
        }
Exemplo n.º 8
0
 public CodegenStub(string outputDirectory, IFileSystem fileSystem, DetailsStore detailsStore, bool force)
     : base(outputDirectory, fileSystem, detailsStore, force)
 {
     myFileSystem = (MockFileSystem)fileSystem;
 }
Exemplo n.º 9
0
        public CoreCodegenJob(string outputDir, IFileSystem fileSystem, DetailsStore store) : base(
                outputDir, fileSystem, store)
        {
            InputFiles  = store.SchemaFiles.ToList();
            OutputFiles = new List <string>();

            var allNestedTypes = store.Types
                                 .SelectMany(kv => store.GetNestedTypes(kv.Key))
                                 .ToHashSet();

            typesToGenerate = store.Types
                              .Where(kv => !allNestedTypes.Contains(kv.Key))
                              .Select(kv => new GenerationTarget <UnityTypeDetails>(kv.Value, kv.Value.Package))
                              .ToList();

            enumsToGenerate = store.Enums
                              .Where(kv => !allNestedTypes.Contains(kv.Key))
                              .Select(kv => new GenerationTarget <UnityEnumDetails>(kv.Value, kv.Value.Package))
                              .ToList();

            componentsToGenerate = store.Components
                                   .Select(kv => new GenerationTarget <UnityComponentDetails>(kv.Value, kv.Value.Package))
                                   .ToList();

            foreach (var typeTarget in typesToGenerate)
            {
                var fileName = Path.ChangeExtension(typeTarget.Content.CapitalisedName, FileExtension);
                OutputFiles.Add(Path.Combine(typeTarget.OutputPath, fileName));
            }

            foreach (var componentTarget in componentsToGenerate)
            {
                var relativeOutputPath = componentTarget.OutputPath;
                var componentName      = componentTarget.Content.ComponentName;

                OutputFiles.Add(Path.Combine(relativeOutputPath, Path.ChangeExtension(componentTarget.Content.ComponentName, FileExtension)));

                if (componentTarget.Content.CommandDetails.Count > 0)
                {
                    OutputFiles.Add(Path.Combine(relativeOutputPath,
                                                 Path.ChangeExtension($"{componentName}CommandPayloads", FileExtension)));
                    OutputFiles.Add(Path.Combine(relativeOutputPath,
                                                 Path.ChangeExtension($"{componentName}CommandComponents", FileExtension)));
                    OutputFiles.Add(Path.Combine(relativeOutputPath,
                                                 Path.ChangeExtension($"{componentName}CommandDiffDeserializer", FileExtension)));
                    OutputFiles.Add(Path.Combine(relativeOutputPath,
                                                 Path.ChangeExtension($"{componentName}CommandDiffStorage", FileExtension)));
                    OutputFiles.Add(Path.Combine(relativeOutputPath,
                                                 Path.ChangeExtension($"{componentName}CommandMetaDataStorage", FileExtension)));
                }

                if (componentTarget.Content.EventDetails.Count > 0)
                {
                    OutputFiles.Add(Path.Combine(relativeOutputPath,
                                                 Path.ChangeExtension($"{componentName}Events", FileExtension)));
                }

                OutputFiles.Add(Path.Combine(relativeOutputPath,
                                             Path.ChangeExtension($"{componentName}UpdateSender", FileExtension)));
                OutputFiles.Add(Path.Combine(relativeOutputPath,
                                             Path.ChangeExtension($"{componentName}EcsViewManager", FileExtension)));
                OutputFiles.Add(Path.Combine(relativeOutputPath,
                                             Path.ChangeExtension($"{componentName}ComponentDiffStorage", FileExtension)));
                OutputFiles.Add(Path.Combine(relativeOutputPath,
                                             Path.ChangeExtension($"{componentName}ComponentDiffDeserializer", FileExtension)));
                OutputFiles.Add(Path.Combine(relativeOutputPath,
                                             Path.ChangeExtension($"{componentName}Providers", FileExtension)));
                OutputFiles.Add(Path.Combine(relativeOutputPath,
                                             Path.ChangeExtension($"{componentName}ViewStorage", FileExtension)));
                OutputFiles.Add(Path.Combine(relativeOutputPath, Path.ChangeExtension($"{componentName}Metaclass", FileExtension)));
            }

            foreach (var enumTarget in enumsToGenerate)
            {
                var fileName = Path.ChangeExtension(enumTarget.Content.TypeName, FileExtension);
                OutputFiles.Add(Path.Combine(enumTarget.OutputPath, fileName));
            }
        }
Exemplo n.º 10
0
 public CodegenStub(CodegenJobOptions options, IFileSystem fileSystem, DetailsStore detailsStore)
     : base(options, fileSystem, detailsStore)
 {
     MyFileSystem = (MockFileSystem)fileSystem;
 }
Exemplo n.º 11
0
        public CoreCodegenJob(CodegenJobOptions options, IFileSystem fileSystem, DetailsStore store)
            : base(options, fileSystem, store)
        {
            const string jobName = nameof(CoreCodegenJob);

            Logger.Trace($"Initialising {jobName}.");

            AddInputFiles(store.SchemaFiles);

            // Types
            Logger.Trace("Gathering nested types.");
            var allNestedTypes = store.Types
                                 .SelectMany(kv => store.GetNestedTypes(kv.Key))
                                 .ToHashSet();

            Logger.Trace("Gathering types details.");
            var typesToGenerate = store.Types
                                  .Where(kv => !allNestedTypes.Contains(kv.Key))
                                  .Select(kv => kv.Value)
                                  .ToList();

            Logger.Trace("Adding job targets for types.");
            AddGenerators(typesToGenerate, t => ($"{t.Name}.cs", UnityTypeGenerator.Generate));

            Logger.Trace($"Added job targets for {typesToGenerate.Count} types.");

            // Enums
            Logger.Trace("Gathering enum details.");
            var enumsToGenerate = store.Enums
                                  .Where(kv => !allNestedTypes.Contains(kv.Key))
                                  .Select(kv => kv.Value)
                                  .ToList();

            Logger.Trace("Adding job targets for enums.");
            AddGenerators(enumsToGenerate,
                          e => ($"{e.Name}.cs", UnityEnumGenerator.Generate));

            Logger.Trace($"Added job targets for {enumsToGenerate.Count} enums.");

            // Components
            Logger.Trace("Gathering component details.");
            var componentsToGenerate = store.Components.Values.ToList();

            Logger.Trace("Adding job targets for components.");
            AddGenerators(componentsToGenerate,
                          c => ($"{c.Name}.cs", UnityComponentDataGenerator.Generate),
                          c => ($"{c.Name}ReplicationSystem.cs", UnityComponentReplicationSystemGenerator.Generate),
                          c => ($"{c.Name}EcsViewManager.cs", UnityEcsViewManagerGenerator.Generate),
                          c => ($"{c.Name}ComponentDiffStorage.cs", ComponentDiffStorageGenerator.Generate),
                          c => ($"{c.Name}ComponentDiffDeserializer.cs", ComponentDiffDeserializerGenerator.Generate),
                          c => ($"{c.Name}Metaclass.cs", MetaclassGenerator.Generate));

            Logger.Trace("Adding job targets for commands.");
            AddGenerators(componentsToGenerate.Where(c => c.CommandDetails.Count > 0),
                          c => ($"{c.Name}CommandPayloads.cs", UnityCommandPayloadGenerator.Generate),
                          c => ($"{c.Name}CommandDiffDeserializer.cs", CommandDiffDeserializerGenerator.Generate),
                          c => ($"{c.Name}CommandDiffStorage.cs", CommandDiffStorageGenerator.Generate),
                          c => ($"{c.Name}CommandMetaDataStorage.cs", CommandMetaDataStorageGenerator.Generate));

            Logger.Trace("Adding job targets for events.");
            AddGenerators(componentsToGenerate.Where(c => c.EventDetails.Count > 0),
                          c => ($"{c.Name}Events.cs", UnityEventGenerator.Generate));

            Logger.Trace($"Added job targets for {componentsToGenerate.Count} components.");

            Logger.Trace($"Finished initialising {jobName}.");
        }
Exemplo n.º 12
0
        public CoreCodegenJob(string outputDir, IFileSystem fileSystem, DetailsStore store)
            : base(outputDir, fileSystem, store)
        {
            var jobName = nameof(CoreCodegenJob);

            logger.Info($"Initialising {jobName}.");

            AddInputFiles(store.SchemaFiles.ToList());

            logger.Info("Gathering nested types.");
            var allNestedTypes = store.Types
                                 .SelectMany(kv => store.GetNestedTypes(kv.Key))
                                 .ToHashSet();

            logger.Info("Gathering types details.");
            typesToGenerate = store.Types
                              .Where(kv => !allNestedTypes.Contains(kv.Key))
                              .Select(kv => new GenerationTarget <UnityTypeDetails>(kv.Value, kv.Value.Package))
                              .ToList();

            logger.Info("Gathering enum details.");
            enumsToGenerate = store.Enums
                              .Where(kv => !allNestedTypes.Contains(kv.Key))
                              .Select(kv => new GenerationTarget <UnityEnumDetails>(kv.Value, kv.Value.Package))
                              .ToList();

            logger.Info("Gathering component details.");
            componentsToGenerate = store.Components
                                   .Select(kv => new GenerationTarget <UnityComponentDetails>(kv.Value, kv.Value.Package))
                                   .ToList();

            logger.Trace("Adding job output files for types.");
            foreach (var typeTarget in typesToGenerate)
            {
                logger.Trace($"Adding output file for type {typeTarget.Content.QualifiedName}.");

                var fileName = Path.ChangeExtension(typeTarget.Content.CapitalisedName, FileExtension);
                AddOutputFile(Path.Combine(typeTarget.OutputPath, fileName));
            }
            logger.Info($"Added output files for {typesToGenerate.Count} types.");

            logger.Trace("Adding job output files for components.");
            foreach (var componentTarget in componentsToGenerate)
            {
                var relativeOutputPath = componentTarget.OutputPath;
                var componentName      = componentTarget.Content.ComponentName;

                logger.Trace($"Adding job output files for component {componentTarget.Content.QualifiedName}.");

                AddOutputFile(Path.Combine(relativeOutputPath, Path.ChangeExtension(componentTarget.Content.ComponentName, FileExtension)));

                if (componentTarget.Content.CommandDetails.Count > 0)
                {
                    logger.Trace("Adding job output files for commands.");

                    AddOutputFile(Path.Combine(relativeOutputPath,
                                               Path.ChangeExtension($"{componentName}CommandPayloads", FileExtension)));
                    AddOutputFile(Path.Combine(relativeOutputPath,
                                               Path.ChangeExtension($"{componentName}CommandComponents", FileExtension)));
                    AddOutputFile(Path.Combine(relativeOutputPath,
                                               Path.ChangeExtension($"{componentName}CommandDiffDeserializer", FileExtension)));
                    AddOutputFile(Path.Combine(relativeOutputPath,
                                               Path.ChangeExtension($"{componentName}CommandDiffStorage", FileExtension)));
                    AddOutputFile(Path.Combine(relativeOutputPath,
                                               Path.ChangeExtension($"{componentName}CommandMetaDataStorage", FileExtension)));
                }

                if (componentTarget.Content.EventDetails.Count > 0)
                {
                    logger.Trace("Adding job output file for events.");

                    AddOutputFile(Path.Combine(relativeOutputPath,
                                               Path.ChangeExtension($"{componentName}Events", FileExtension)));
                }

                AddOutputFile(Path.Combine(relativeOutputPath,
                                           Path.ChangeExtension($"{componentName}UpdateSender", FileExtension)));
                AddOutputFile(Path.Combine(relativeOutputPath,
                                           Path.ChangeExtension($"{componentName}EcsViewManager", FileExtension)));
                AddOutputFile(Path.Combine(relativeOutputPath,
                                           Path.ChangeExtension($"{componentName}ComponentDiffStorage", FileExtension)));
                AddOutputFile(Path.Combine(relativeOutputPath,
                                           Path.ChangeExtension($"{componentName}ComponentDiffDeserializer", FileExtension)));
                AddOutputFile(Path.Combine(relativeOutputPath,
                                           Path.ChangeExtension($"{componentName}Providers", FileExtension)));
                AddOutputFile(Path.Combine(relativeOutputPath,
                                           Path.ChangeExtension($"{componentName}ViewStorage", FileExtension)));
                AddOutputFile(Path.Combine(relativeOutputPath,
                                           Path.ChangeExtension($"{componentName}Metaclass", FileExtension)));
            }
            logger.Info($"Added output files for {componentsToGenerate.Count} components.");

            logger.Trace("Adding job output files for enums.");
            foreach (var enumTarget in enumsToGenerate)
            {
                logger.Trace($"Adding job output file for enum {enumTarget.Content.QualifiedName}.");

                var fileName = Path.ChangeExtension(enumTarget.Content.TypeName, FileExtension);
                AddOutputFile(Path.Combine(enumTarget.OutputPath, fileName));
            }
            logger.Info($"Added output files for {enumsToGenerate.Count} enums.");

            logger.Info($"Finished initialising {jobName}.");
        }
Exemplo n.º 13
0
        static void Main(string[] args)
        {
            DailyQueueOfCars dailyQueueOfCars = new DailyQueueOfCars();
            CarService       carService       = new CarService();
            Car          car;
            DetailsStore detailsStore = new DetailsStore();
            int          userInput;
            int          userChoice;
            bool         carServiceWorking = true;

            while (carServiceWorking)
            {
                Console.Clear();
                carService.DisplayWallet();
                Console.WriteLine("Это меню управления вашим автосервисом.");
                Console.WriteLine("1. Принять следующего клиента");
                Console.WriteLine("2. Открыть каталог деталей");
                Console.WriteLine("3. Осмотреть склад деталей");
                Console.WriteLine("0. Выйти");

                userInput = Convert.ToInt32(Console.ReadLine());

                switch (userInput)
                {
                case 1:
                    car = dailyQueueOfCars.ReturnNextCar();

                    if (car == null)
                    {
                        Console.Clear();
                        Console.WriteLine($"На сегодня клиенты закончились. Поздравляем с окончанием рабочего дня! Хотите начать новый день?");
                        Console.WriteLine("1. Да.");
                        Console.WriteLine("2. Нет. Выйти.");
                        userInput = Convert.ToInt32(Console.ReadLine());

                        if (userInput == 1)
                        {
                            dailyQueueOfCars = new DailyQueueOfCars();
                            continue;
                        }
                        else if (userInput == 2)
                        {
                            carServiceWorking = false;
                            continue;
                        }
                        else
                        {
                            Console.Clear();
                            Console.WriteLine("Неверная команда");
                            Console.ReadKey();
                            continue;
                        }
                    }

                    Console.Clear();
                    Console.WriteLine("Новый клиент");
                    car.DisplayListDetails();
                    Console.WriteLine();
                    Console.WriteLine("1. Выбрать деталь для замены");
                    Console.WriteLine("2. Отказатся ремонтировать");
                    userChoice = Convert.ToInt32(Console.ReadLine());

                    if (userChoice == 1)
                    {
                        carService.DisplayWarehouseDetail();
                        int    DetailNumber    = Convert.ToInt32(Console.ReadLine());
                        Detail detailForRepair = carService.Repair(DetailNumber);
                        int    countIncome     = car.Repair(detailForRepair);
                        carServiceWorking = carService.TakeIncome(countIncome);
                    }
                    else if (userChoice == 2)
                    {
                        Console.Clear();
                        carServiceWorking = carService.PayFine();
                        Console.WriteLine("Шраф 100 рублей");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.Clear();
                        Console.WriteLine("Неверная команда");
                        Console.ReadKey();
                    }
                    break;

                case 2:
                    detailsStore.Menu();
                    userChoice = Convert.ToInt32(Console.ReadLine());
                    Detail detail = detailsStore.SellingDetail(userChoice);

                    if (detail != null)
                    {
                        carService.BuyDetail(detail);
                    }
                    break;

                case 3:
                    carService.DisplayWarehouseDetail();
                    Console.ReadKey();
                    break;

                case 0:
                    carServiceWorking = false;
                    break;

                default:
                    Console.Clear();
                    Console.WriteLine("Неверная команда");
                    Console.ReadKey();
                    break;
                }
            }
        }
Exemplo n.º 14
0
        public void OneTimeSetup()
        {
            var bundle = JsonParsingTests.GetBundleContents();

            store = new DetailsStore(SchemaBundle.FromJson(bundle));
        }
Exemplo n.º 15
0
 public CodegenJob(string baseOutputDirectory, IFileSystem fileSystem, DetailsStore detailsStore)
 {
     OutputDirectory   = baseOutputDirectory;
     this.fileSystem   = fileSystem;
     this.detailsStore = detailsStore;
 }