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))); } }
public CodegenJob(string baseOutputDirectory, IFileSystem fileSystem, DetailsStore detailsStore) { logger = LogManager.GetLogger(GetType().FullName); OutputDirectory = baseOutputDirectory; this.fileSystem = fileSystem; this.detailsStore = detailsStore; }
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; }
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; }
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); }
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}."); }
public CodegenStub(string outputDirectory, IFileSystem fileSystem, DetailsStore detailsStore, bool force) : base(outputDirectory, fileSystem, detailsStore, force) { myFileSystem = (MockFileSystem)fileSystem; }
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)); } }
public CodegenStub(CodegenJobOptions options, IFileSystem fileSystem, DetailsStore detailsStore) : base(options, fileSystem, detailsStore) { MyFileSystem = (MockFileSystem)fileSystem; }
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}."); }
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}."); }
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; } } }
public void OneTimeSetup() { var bundle = JsonParsingTests.GetBundleContents(); store = new DetailsStore(SchemaBundle.FromJson(bundle)); }
public CodegenJob(string baseOutputDirectory, IFileSystem fileSystem, DetailsStore detailsStore) { OutputDirectory = baseOutputDirectory; this.fileSystem = fileSystem; this.detailsStore = detailsStore; }