From 8cc43403404af9e559a00e45a2789eb3ad1001e4 Mon Sep 17 00:00:00 2001 From: bluextx Date: Fri, 10 Jan 2025 20:45:37 +0300 Subject: [PATCH 01/24] Added source solution folder to organize project structure --- .gitignore | 5 ++++- LootDumpProcessor.sln | 7 ++++++- {Config => source/LootDumpProcessor/Config}/config.json | 0 .../LootDumpProcessor/Config}/forced_loose.yaml | 0 .../LootDumpProcessor/Config}/forced_static.yaml | 0 GCHandler.cs => source/LootDumpProcessor/GCHandler.cs | 0 {Logger => source/LootDumpProcessor/Logger}/ILogger.cs | 0 {Logger => source/LootDumpProcessor/Logger}/LogLevel.cs | 0 .../LootDumpProcessor/Logger}/LoggerFactory.cs | 0 {Logger => source/LootDumpProcessor/Logger}/QueueLogger.cs | 0 .../LootDumpProcessor/LootDumpProcessor.csproj | 0 .../LootDumpProcessor/LootDumpProcessorContext.cs | 0 {Model => source/LootDumpProcessor/Model}/ComposedKey.cs | 0 .../LootDumpProcessor/Model}/Config/CollectorConfig.cs | 0 {Model => source/LootDumpProcessor/Model}/Config/Config.cs | 0 .../LootDumpProcessor/Model}/Config/DataStorageConfig.cs | 0 .../LootDumpProcessor/Model}/Config/DumpProcessorConfig.cs | 0 .../LootDumpProcessor/Model}/Config/ForcedStatic.cs | 0 .../LootDumpProcessor/Model}/Config/IntakeReaderConfig.cs | 0 .../LootDumpProcessor/Model}/Config/LoggerConfig.cs | 0 .../LootDumpProcessor/Model}/Config/MapDirectoryMapping.cs | 0 .../LootDumpProcessor/Model}/Config/PreProcessorConfig.cs | 0 .../LootDumpProcessor/Model}/Config/ProcessorConfig.cs | 0 .../LootDumpProcessor/Model}/Config/ReaderConfig.cs | 0 .../LootDumpProcessor/Model}/Config/WriterConfig.cs | 0 {Model => source/LootDumpProcessor/Model}/FireMode.cs | 0 {Model => source/LootDumpProcessor/Model}/Foldable.cs | 0 {Model => source/LootDumpProcessor/Model}/GroupPosition.cs | 0 .../Model}/Input/AdditionalHostilitySetting.cs | 0 .../LootDumpProcessor/Model}/Input/AirdropParameter.cs | 0 .../LootDumpProcessor/Model}/Input/BTRServerSettings.cs | 0 {Model => source/LootDumpProcessor/Model}/Input/Banner.cs | 0 .../LootDumpProcessor/Model}/Input/BotLocationModifier.cs | 0 .../LootDumpProcessor/Model}/Input/ChancedEnemy.cs | 0 .../LootDumpProcessor/Model}/Input/ColliderParams.cs | 0 .../LootDumpProcessor/Model}/Input/CompletedQuest.cs | 0 {Model => source/LootDumpProcessor/Model}/Input/Data.cs | 0 {Model => source/LootDumpProcessor/Model}/Input/Exit.cs | 0 .../LootDumpProcessor/Model}/Input/ItemCost.cs | 0 .../LootDumpProcessor/Model}/Input/LocationLoot.cs | 0 .../LootDumpProcessor/Model}/Input/MapSettings.cs | 0 .../Model}/Input/MatchMakerMinPlayersByWaitTime.cs | 0 .../LootDumpProcessor/Model}/Input/NonWaveGroupScenario.cs | 0 {Model => source/LootDumpProcessor/Model}/Input/Pic.cs | 0 {Model => source/LootDumpProcessor/Model}/Input/Preview.cs | 0 {Model => source/LootDumpProcessor/Model}/Input/Props.cs | 0 .../LootDumpProcessor/Model}/Input/Requirements.cs | 0 .../LootDumpProcessor/Model}/Input/RootData.cs | 0 {Model => source/LootDumpProcessor/Model}/Input/Scene.cs | 0 .../LootDumpProcessor/Model}/Input/ServerMapBTRSettings.cs | 0 .../LootDumpProcessor/Model}/Input/ServerSettings.cs | 0 .../LootDumpProcessor/Model}/Input/ServiceItemCost.cs | 0 .../LootDumpProcessor/Model}/Input/SpawnPointParam.cs | 0 .../LootDumpProcessor/Model}/Input/Standing.cs | 0 .../LootDumpProcessor/Model}/Input/TraderServerSettings.cs | 0 .../LootDumpProcessor/Model}/Input/TraderService.cs | 0 .../LootDumpProcessor/Model}/Input/TraderServices.cs | 0 {Model => source/LootDumpProcessor/Model}/Input/Transit.cs | 0 {Model => source/LootDumpProcessor/Model}/Input/Update.cs | 0 {Model => source/LootDumpProcessor/Model}/Item.cs | 0 .../Model}/Output/AbstractDistribution.cs | 0 .../LootDumpProcessor/Model}/Output/AmmoDistribution.cs | 0 .../Model}/Output/ItemCountDistribution.cs | 0 .../LootDumpProcessor/Model}/Output/ItemDistribution.cs | 0 .../Model}/Output/LooseLoot/LooseLootRoot.cs | 0 .../Model}/Output/LooseLoot/SpawnPoint.cs | 0 .../Model}/Output/LooseLoot/SpawnPointCount.cs | 0 .../Model}/Output/LooseLoot/SpawnPointsForced.cs | 0 .../Model}/Output/StaticContainer/MapStaticLoot.cs | 0 .../Model}/Output/StaticContainer/StaticContainerRoot.cs | 0 .../Model}/Output/StaticContainer/StaticDataPoint.cs | 0 .../Model}/Output/StaticContainer/StaticForced.cs | 0 .../LootDumpProcessor/Model}/Output/StaticDistribution.cs | 0 .../Model}/Output/StaticItemDistribution.cs | 0 .../LootDumpProcessor/Model}/Processing/BaseClasses.cs | 0 .../LootDumpProcessor/Model}/Processing/BasicInfo.cs | 0 .../Model}/Processing/CaliberTemplateCount.cs | 0 .../LootDumpProcessor/Model}/Processing/DumpProcessData.cs | 0 .../LootDumpProcessor/Model}/Processing/LooseLootCounts.cs | 0 .../LootDumpProcessor/Model}/Processing/ParsedDump.cs | 0 .../LootDumpProcessor/Model}/Processing/PartialData.cs | 0 .../Model}/Processing/PreProcessedLooseLoot.cs | 0 .../Model}/Processing/PreProcessedStaticLoot.cs | 0 {Model => source/LootDumpProcessor/Model}/Repairable.cs | 0 .../LootDumpProcessor/Model}/Tarkov/Handbook.cs | 0 .../LootDumpProcessor/Model}/Tarkov/TemplateItems.cs | 0 {Model => source/LootDumpProcessor/Model}/Template.cs | 0 {Model => source/LootDumpProcessor/Model}/Upd.cs | 0 {Model => source/LootDumpProcessor/Model}/Vector3.cs | 0 .../Process}/Collector/CollectorFactory.cs | 0 .../LootDumpProcessor/Process}/Collector/CollectorType.cs | 0 .../LootDumpProcessor/Process}/Collector/DumpCollector.cs | 0 .../Process}/Collector/HashSetCollector.cs | 0 .../LootDumpProcessor/Process}/Collector/ICollector.cs | 0 {Process => source/LootDumpProcessor/Process}/IPipeline.cs | 0 .../LootDumpProcessor/Process}/OutputFileType.cs | 0 .../LootDumpProcessor/Process}/PipelineFactory.cs | 0 .../Processor/DumpProcessor/DumpProcessorFactory.cs | 0 .../Process}/Processor/DumpProcessor/IDumpProcessor.cs | 0 .../DumpProcessor/MultithreadSteppedDumpProcessor.cs | 0 .../Process}/Processor/FileProcessor/FileProcessor.cs | 0 .../Processor/FileProcessor/FileProcessorFactory.cs | 0 .../Process}/Processor/FileProcessor/IFileProcessor.cs | 0 .../Process}/Processor/LooseLootProcessor.cs | 0 .../Process}/Processor/StaticLootProcessor.cs | 0 .../LootDumpProcessor/Process}/QueuePipeline.cs | 0 .../Process}/Reader/Filters/FileFilterFactory.cs | 0 .../Process}/Reader/Filters/FileFilterTypes.cs | 0 .../Process}/Reader/Filters/IFileFilter.cs | 0 .../Process}/Reader/Filters/JsonDumpFileFilter.cs | 0 .../Process}/Reader/Intake/IIntakeReader.cs | 0 .../Process}/Reader/Intake/IntakeReaderFactory.cs | 0 .../Process}/Reader/Intake/IntakeReaderTypes.cs | 0 .../Process}/Reader/Intake/JsonFileIntakeReader.cs | 0 .../Process}/Reader/PreProcess/AbstractPreProcessReader.cs | 0 .../Process}/Reader/PreProcess/IPreProcessReader.cs | 0 .../Process}/Reader/PreProcess/PreProcessReaderFactory.cs | 0 .../Process}/Reader/PreProcess/PreProcessReaderTypes.cs | 0 .../Process}/Reader/PreProcess/SevenZipPreProcessReader.cs | 0 .../LootDumpProcessor/Process}/TarkovItems.cs | 0 .../LootDumpProcessor/Process}/Writer/FileWriter.cs | 0 .../LootDumpProcessor/Process}/Writer/IWriter.cs | 0 .../LootDumpProcessor/Process}/Writer/WriterFactory.cs | 0 Program.cs => source/LootDumpProcessor/Program.cs | 0 .../LootDumpProcessor/Serializers}/ISerializer.cs | 0 .../Serializers}/Json/Converters/NetDateTimeConverter.cs | 0 .../Serializers}/Json/Converters/NetJsonKeyConverter.cs | 0 .../Json/Converters/NewtonsoftDateTimeConverter.cs | 0 .../Json/Converters/NewtonsoftJsonKeyConverter.cs | 0 .../LootDumpProcessor/Serializers}/Json/IJsonSerializer.cs | 0 .../Serializers}/Json/JsonSerializerFactory.cs | 0 .../Serializers}/Json/JsonSerializerTypes.cs | 0 .../Serializers}/Json/NetJsonSerializer.cs | 0 .../Serializers}/Json/NewtonsoftJsonSerializer.cs | 0 .../LootDumpProcessor/Serializers}/Yaml/IYamlSerializer.cs | 0 .../Serializers}/Yaml/YamlDotNetYamlSerializer.cs | 0 .../Serializers}/Yaml/YamlSerializerFactory.cs | 0 .../LootDumpProcessor/Storage}/AbstractKey.cs | 0 .../Storage}/Collections/FlatKeyableDictionary.cs | 0 .../Storage}/Collections/FlatKeyableList.cs | 0 .../Storage}/Collections/SubdivisionedKeyableDictionary.cs | 0 .../LootDumpProcessor/Storage}/DataStorageFactory.cs | 0 .../LootDumpProcessor/Storage}/DataStorageTypes.cs | 0 .../LootDumpProcessor/Storage}/FlatUniqueKey.cs | 0 .../LootDumpProcessor/Storage}/IDataStorage.cs | 0 {Storage => source/LootDumpProcessor/Storage}/IKey.cs | 0 {Storage => source/LootDumpProcessor/Storage}/IKeyable.cs | 0 .../Storage}/Implementations/File/FileDataStorage.cs | 0 .../Implementations/File/Handlers/AbstractStoreHandler.cs | 0 .../Implementations/File/Handlers/FlatStoreHandler.cs | 0 .../File/Handlers/SubdivisionedStoreHandler.cs | 0 .../Storage}/Implementations/File/IStoreHandler.cs | 0 .../File/Serializers/DataStorageFileSerializerFactory.cs | 0 .../File/Serializers/IDataStorageFileSerializer.cs | 0 .../File/Serializers/JsonDataStorageFileSerializer.cs | 0 .../File/Serializers/YamlDataStorageFileSerializer.cs | 0 .../Storage}/Implementations/File/StoreHandlerFactory.cs | 0 .../Storage}/Implementations/Memory/MemoryDataStorage.cs | 0 .../LootDumpProcessor/Storage}/SubdivisionedUniqueKey.cs | 0 .../LootDumpProcessor/Utils}/FileDateParser.cs | 0 {Utils => source/LootDumpProcessor/Utils}/KeyGenerator.cs | 0 {Utils => source/LootDumpProcessor/Utils}/ProcessorUtil.cs | 0 162 files changed, 10 insertions(+), 2 deletions(-) rename {Config => source/LootDumpProcessor/Config}/config.json (100%) rename {Config => source/LootDumpProcessor/Config}/forced_loose.yaml (100%) rename {Config => source/LootDumpProcessor/Config}/forced_static.yaml (100%) rename GCHandler.cs => source/LootDumpProcessor/GCHandler.cs (100%) rename {Logger => source/LootDumpProcessor/Logger}/ILogger.cs (100%) rename {Logger => source/LootDumpProcessor/Logger}/LogLevel.cs (100%) rename {Logger => source/LootDumpProcessor/Logger}/LoggerFactory.cs (100%) rename {Logger => source/LootDumpProcessor/Logger}/QueueLogger.cs (100%) rename LootDumpProcessor.csproj => source/LootDumpProcessor/LootDumpProcessor.csproj (100%) rename LootDumpProcessorContext.cs => source/LootDumpProcessor/LootDumpProcessorContext.cs (100%) rename {Model => source/LootDumpProcessor/Model}/ComposedKey.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/CollectorConfig.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/Config.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/DataStorageConfig.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/DumpProcessorConfig.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/ForcedStatic.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/IntakeReaderConfig.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/LoggerConfig.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/MapDirectoryMapping.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/PreProcessorConfig.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/ProcessorConfig.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/ReaderConfig.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Config/WriterConfig.cs (100%) rename {Model => source/LootDumpProcessor/Model}/FireMode.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Foldable.cs (100%) rename {Model => source/LootDumpProcessor/Model}/GroupPosition.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/AdditionalHostilitySetting.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/AirdropParameter.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/BTRServerSettings.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Banner.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/BotLocationModifier.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/ChancedEnemy.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/ColliderParams.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/CompletedQuest.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Data.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Exit.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/ItemCost.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/LocationLoot.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/MapSettings.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/MatchMakerMinPlayersByWaitTime.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/NonWaveGroupScenario.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Pic.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Preview.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Props.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Requirements.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/RootData.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Scene.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/ServerMapBTRSettings.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/ServerSettings.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/ServiceItemCost.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/SpawnPointParam.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Standing.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/TraderServerSettings.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/TraderService.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/TraderServices.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Transit.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Input/Update.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Item.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/AbstractDistribution.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/AmmoDistribution.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/ItemCountDistribution.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/ItemDistribution.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/LooseLoot/LooseLootRoot.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/LooseLoot/SpawnPoint.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/LooseLoot/SpawnPointCount.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/LooseLoot/SpawnPointsForced.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/StaticContainer/MapStaticLoot.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/StaticContainer/StaticContainerRoot.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/StaticContainer/StaticDataPoint.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/StaticContainer/StaticForced.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/StaticDistribution.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Output/StaticItemDistribution.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Processing/BaseClasses.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Processing/BasicInfo.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Processing/CaliberTemplateCount.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Processing/DumpProcessData.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Processing/LooseLootCounts.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Processing/ParsedDump.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Processing/PartialData.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Processing/PreProcessedLooseLoot.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Processing/PreProcessedStaticLoot.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Repairable.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Tarkov/Handbook.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Tarkov/TemplateItems.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Template.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Upd.cs (100%) rename {Model => source/LootDumpProcessor/Model}/Vector3.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Collector/CollectorFactory.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Collector/CollectorType.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Collector/DumpCollector.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Collector/HashSetCollector.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Collector/ICollector.cs (100%) rename {Process => source/LootDumpProcessor/Process}/IPipeline.cs (100%) rename {Process => source/LootDumpProcessor/Process}/OutputFileType.cs (100%) rename {Process => source/LootDumpProcessor/Process}/PipelineFactory.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Processor/DumpProcessor/DumpProcessorFactory.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Processor/DumpProcessor/IDumpProcessor.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Processor/FileProcessor/FileProcessor.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Processor/FileProcessor/FileProcessorFactory.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Processor/FileProcessor/IFileProcessor.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Processor/LooseLootProcessor.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Processor/StaticLootProcessor.cs (100%) rename {Process => source/LootDumpProcessor/Process}/QueuePipeline.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/Filters/FileFilterFactory.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/Filters/FileFilterTypes.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/Filters/IFileFilter.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/Filters/JsonDumpFileFilter.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/Intake/IIntakeReader.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/Intake/IntakeReaderFactory.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/Intake/IntakeReaderTypes.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/Intake/JsonFileIntakeReader.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/PreProcess/AbstractPreProcessReader.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/PreProcess/IPreProcessReader.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/PreProcess/PreProcessReaderFactory.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/PreProcess/PreProcessReaderTypes.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Reader/PreProcess/SevenZipPreProcessReader.cs (100%) rename {Process => source/LootDumpProcessor/Process}/TarkovItems.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Writer/FileWriter.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Writer/IWriter.cs (100%) rename {Process => source/LootDumpProcessor/Process}/Writer/WriterFactory.cs (100%) rename Program.cs => source/LootDumpProcessor/Program.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/ISerializer.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Json/Converters/NetDateTimeConverter.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Json/Converters/NetJsonKeyConverter.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Json/Converters/NewtonsoftDateTimeConverter.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Json/Converters/NewtonsoftJsonKeyConverter.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Json/IJsonSerializer.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Json/JsonSerializerFactory.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Json/JsonSerializerTypes.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Json/NetJsonSerializer.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Json/NewtonsoftJsonSerializer.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Yaml/IYamlSerializer.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Yaml/YamlDotNetYamlSerializer.cs (100%) rename {Serializers => source/LootDumpProcessor/Serializers}/Yaml/YamlSerializerFactory.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/AbstractKey.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Collections/FlatKeyableDictionary.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Collections/FlatKeyableList.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Collections/SubdivisionedKeyableDictionary.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/DataStorageFactory.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/DataStorageTypes.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/FlatUniqueKey.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/IDataStorage.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/IKey.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/IKeyable.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/FileDataStorage.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/Handlers/AbstractStoreHandler.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/Handlers/FlatStoreHandler.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/Handlers/SubdivisionedStoreHandler.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/IStoreHandler.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/Serializers/DataStorageFileSerializerFactory.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/Serializers/IDataStorageFileSerializer.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/Serializers/JsonDataStorageFileSerializer.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/Serializers/YamlDataStorageFileSerializer.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/File/StoreHandlerFactory.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/Implementations/Memory/MemoryDataStorage.cs (100%) rename {Storage => source/LootDumpProcessor/Storage}/SubdivisionedUniqueKey.cs (100%) rename {Utils => source/LootDumpProcessor/Utils}/FileDateParser.cs (100%) rename {Utils => source/LootDumpProcessor/Utils}/KeyGenerator.cs (100%) rename {Utils => source/LootDumpProcessor/Utils}/ProcessorUtil.cs (100%) diff --git a/.gitignore b/.gitignore index 2b6a4af..ef9d882 100644 --- a/.gitignore +++ b/.gitignore @@ -397,4 +397,7 @@ FodyWeavers.xsd *.msp # JetBrains Rider -*.sln.iml \ No newline at end of file +*.sln.iml + +# Qodo +.qodo \ No newline at end of file diff --git a/LootDumpProcessor.sln b/LootDumpProcessor.sln index 0b2eb53..d698b12 100644 --- a/LootDumpProcessor.sln +++ b/LootDumpProcessor.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.4.33213.308 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LootDumpProcessor", "LootDumpProcessor.csproj", "{887819E1-72BF-4F10-9246-77D8088AC7D2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LootDumpProcessor", "source/LootDumpProcessor/LootDumpProcessor.csproj", "{887819E1-72BF-4F10-9246-77D8088AC7D2}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "source", "source", "{2B18E894-D839-4002-8B9A-6CF8A331596F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -22,4 +24,7 @@ Global GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {39C0A9FF-B0F5-4C3F-AAA7-F9E9225AE70F} EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {887819E1-72BF-4F10-9246-77D8088AC7D2} = {2B18E894-D839-4002-8B9A-6CF8A331596F} + EndGlobalSection EndGlobal diff --git a/Config/config.json b/source/LootDumpProcessor/Config/config.json similarity index 100% rename from Config/config.json rename to source/LootDumpProcessor/Config/config.json diff --git a/Config/forced_loose.yaml b/source/LootDumpProcessor/Config/forced_loose.yaml similarity index 100% rename from Config/forced_loose.yaml rename to source/LootDumpProcessor/Config/forced_loose.yaml diff --git a/Config/forced_static.yaml b/source/LootDumpProcessor/Config/forced_static.yaml similarity index 100% rename from Config/forced_static.yaml rename to source/LootDumpProcessor/Config/forced_static.yaml diff --git a/GCHandler.cs b/source/LootDumpProcessor/GCHandler.cs similarity index 100% rename from GCHandler.cs rename to source/LootDumpProcessor/GCHandler.cs diff --git a/Logger/ILogger.cs b/source/LootDumpProcessor/Logger/ILogger.cs similarity index 100% rename from Logger/ILogger.cs rename to source/LootDumpProcessor/Logger/ILogger.cs diff --git a/Logger/LogLevel.cs b/source/LootDumpProcessor/Logger/LogLevel.cs similarity index 100% rename from Logger/LogLevel.cs rename to source/LootDumpProcessor/Logger/LogLevel.cs diff --git a/Logger/LoggerFactory.cs b/source/LootDumpProcessor/Logger/LoggerFactory.cs similarity index 100% rename from Logger/LoggerFactory.cs rename to source/LootDumpProcessor/Logger/LoggerFactory.cs diff --git a/Logger/QueueLogger.cs b/source/LootDumpProcessor/Logger/QueueLogger.cs similarity index 100% rename from Logger/QueueLogger.cs rename to source/LootDumpProcessor/Logger/QueueLogger.cs diff --git a/LootDumpProcessor.csproj b/source/LootDumpProcessor/LootDumpProcessor.csproj similarity index 100% rename from LootDumpProcessor.csproj rename to source/LootDumpProcessor/LootDumpProcessor.csproj diff --git a/LootDumpProcessorContext.cs b/source/LootDumpProcessor/LootDumpProcessorContext.cs similarity index 100% rename from LootDumpProcessorContext.cs rename to source/LootDumpProcessor/LootDumpProcessorContext.cs diff --git a/Model/ComposedKey.cs b/source/LootDumpProcessor/Model/ComposedKey.cs similarity index 100% rename from Model/ComposedKey.cs rename to source/LootDumpProcessor/Model/ComposedKey.cs diff --git a/Model/Config/CollectorConfig.cs b/source/LootDumpProcessor/Model/Config/CollectorConfig.cs similarity index 100% rename from Model/Config/CollectorConfig.cs rename to source/LootDumpProcessor/Model/Config/CollectorConfig.cs diff --git a/Model/Config/Config.cs b/source/LootDumpProcessor/Model/Config/Config.cs similarity index 100% rename from Model/Config/Config.cs rename to source/LootDumpProcessor/Model/Config/Config.cs diff --git a/Model/Config/DataStorageConfig.cs b/source/LootDumpProcessor/Model/Config/DataStorageConfig.cs similarity index 100% rename from Model/Config/DataStorageConfig.cs rename to source/LootDumpProcessor/Model/Config/DataStorageConfig.cs diff --git a/Model/Config/DumpProcessorConfig.cs b/source/LootDumpProcessor/Model/Config/DumpProcessorConfig.cs similarity index 100% rename from Model/Config/DumpProcessorConfig.cs rename to source/LootDumpProcessor/Model/Config/DumpProcessorConfig.cs diff --git a/Model/Config/ForcedStatic.cs b/source/LootDumpProcessor/Model/Config/ForcedStatic.cs similarity index 100% rename from Model/Config/ForcedStatic.cs rename to source/LootDumpProcessor/Model/Config/ForcedStatic.cs diff --git a/Model/Config/IntakeReaderConfig.cs b/source/LootDumpProcessor/Model/Config/IntakeReaderConfig.cs similarity index 100% rename from Model/Config/IntakeReaderConfig.cs rename to source/LootDumpProcessor/Model/Config/IntakeReaderConfig.cs diff --git a/Model/Config/LoggerConfig.cs b/source/LootDumpProcessor/Model/Config/LoggerConfig.cs similarity index 100% rename from Model/Config/LoggerConfig.cs rename to source/LootDumpProcessor/Model/Config/LoggerConfig.cs diff --git a/Model/Config/MapDirectoryMapping.cs b/source/LootDumpProcessor/Model/Config/MapDirectoryMapping.cs similarity index 100% rename from Model/Config/MapDirectoryMapping.cs rename to source/LootDumpProcessor/Model/Config/MapDirectoryMapping.cs diff --git a/Model/Config/PreProcessorConfig.cs b/source/LootDumpProcessor/Model/Config/PreProcessorConfig.cs similarity index 100% rename from Model/Config/PreProcessorConfig.cs rename to source/LootDumpProcessor/Model/Config/PreProcessorConfig.cs diff --git a/Model/Config/ProcessorConfig.cs b/source/LootDumpProcessor/Model/Config/ProcessorConfig.cs similarity index 100% rename from Model/Config/ProcessorConfig.cs rename to source/LootDumpProcessor/Model/Config/ProcessorConfig.cs diff --git a/Model/Config/ReaderConfig.cs b/source/LootDumpProcessor/Model/Config/ReaderConfig.cs similarity index 100% rename from Model/Config/ReaderConfig.cs rename to source/LootDumpProcessor/Model/Config/ReaderConfig.cs diff --git a/Model/Config/WriterConfig.cs b/source/LootDumpProcessor/Model/Config/WriterConfig.cs similarity index 100% rename from Model/Config/WriterConfig.cs rename to source/LootDumpProcessor/Model/Config/WriterConfig.cs diff --git a/Model/FireMode.cs b/source/LootDumpProcessor/Model/FireMode.cs similarity index 100% rename from Model/FireMode.cs rename to source/LootDumpProcessor/Model/FireMode.cs diff --git a/Model/Foldable.cs b/source/LootDumpProcessor/Model/Foldable.cs similarity index 100% rename from Model/Foldable.cs rename to source/LootDumpProcessor/Model/Foldable.cs diff --git a/Model/GroupPosition.cs b/source/LootDumpProcessor/Model/GroupPosition.cs similarity index 100% rename from Model/GroupPosition.cs rename to source/LootDumpProcessor/Model/GroupPosition.cs diff --git a/Model/Input/AdditionalHostilitySetting.cs b/source/LootDumpProcessor/Model/Input/AdditionalHostilitySetting.cs similarity index 100% rename from Model/Input/AdditionalHostilitySetting.cs rename to source/LootDumpProcessor/Model/Input/AdditionalHostilitySetting.cs diff --git a/Model/Input/AirdropParameter.cs b/source/LootDumpProcessor/Model/Input/AirdropParameter.cs similarity index 100% rename from Model/Input/AirdropParameter.cs rename to source/LootDumpProcessor/Model/Input/AirdropParameter.cs diff --git a/Model/Input/BTRServerSettings.cs b/source/LootDumpProcessor/Model/Input/BTRServerSettings.cs similarity index 100% rename from Model/Input/BTRServerSettings.cs rename to source/LootDumpProcessor/Model/Input/BTRServerSettings.cs diff --git a/Model/Input/Banner.cs b/source/LootDumpProcessor/Model/Input/Banner.cs similarity index 100% rename from Model/Input/Banner.cs rename to source/LootDumpProcessor/Model/Input/Banner.cs diff --git a/Model/Input/BotLocationModifier.cs b/source/LootDumpProcessor/Model/Input/BotLocationModifier.cs similarity index 100% rename from Model/Input/BotLocationModifier.cs rename to source/LootDumpProcessor/Model/Input/BotLocationModifier.cs diff --git a/Model/Input/ChancedEnemy.cs b/source/LootDumpProcessor/Model/Input/ChancedEnemy.cs similarity index 100% rename from Model/Input/ChancedEnemy.cs rename to source/LootDumpProcessor/Model/Input/ChancedEnemy.cs diff --git a/Model/Input/ColliderParams.cs b/source/LootDumpProcessor/Model/Input/ColliderParams.cs similarity index 100% rename from Model/Input/ColliderParams.cs rename to source/LootDumpProcessor/Model/Input/ColliderParams.cs diff --git a/Model/Input/CompletedQuest.cs b/source/LootDumpProcessor/Model/Input/CompletedQuest.cs similarity index 100% rename from Model/Input/CompletedQuest.cs rename to source/LootDumpProcessor/Model/Input/CompletedQuest.cs diff --git a/Model/Input/Data.cs b/source/LootDumpProcessor/Model/Input/Data.cs similarity index 100% rename from Model/Input/Data.cs rename to source/LootDumpProcessor/Model/Input/Data.cs diff --git a/Model/Input/Exit.cs b/source/LootDumpProcessor/Model/Input/Exit.cs similarity index 100% rename from Model/Input/Exit.cs rename to source/LootDumpProcessor/Model/Input/Exit.cs diff --git a/Model/Input/ItemCost.cs b/source/LootDumpProcessor/Model/Input/ItemCost.cs similarity index 100% rename from Model/Input/ItemCost.cs rename to source/LootDumpProcessor/Model/Input/ItemCost.cs diff --git a/Model/Input/LocationLoot.cs b/source/LootDumpProcessor/Model/Input/LocationLoot.cs similarity index 100% rename from Model/Input/LocationLoot.cs rename to source/LootDumpProcessor/Model/Input/LocationLoot.cs diff --git a/Model/Input/MapSettings.cs b/source/LootDumpProcessor/Model/Input/MapSettings.cs similarity index 100% rename from Model/Input/MapSettings.cs rename to source/LootDumpProcessor/Model/Input/MapSettings.cs diff --git a/Model/Input/MatchMakerMinPlayersByWaitTime.cs b/source/LootDumpProcessor/Model/Input/MatchMakerMinPlayersByWaitTime.cs similarity index 100% rename from Model/Input/MatchMakerMinPlayersByWaitTime.cs rename to source/LootDumpProcessor/Model/Input/MatchMakerMinPlayersByWaitTime.cs diff --git a/Model/Input/NonWaveGroupScenario.cs b/source/LootDumpProcessor/Model/Input/NonWaveGroupScenario.cs similarity index 100% rename from Model/Input/NonWaveGroupScenario.cs rename to source/LootDumpProcessor/Model/Input/NonWaveGroupScenario.cs diff --git a/Model/Input/Pic.cs b/source/LootDumpProcessor/Model/Input/Pic.cs similarity index 100% rename from Model/Input/Pic.cs rename to source/LootDumpProcessor/Model/Input/Pic.cs diff --git a/Model/Input/Preview.cs b/source/LootDumpProcessor/Model/Input/Preview.cs similarity index 100% rename from Model/Input/Preview.cs rename to source/LootDumpProcessor/Model/Input/Preview.cs diff --git a/Model/Input/Props.cs b/source/LootDumpProcessor/Model/Input/Props.cs similarity index 100% rename from Model/Input/Props.cs rename to source/LootDumpProcessor/Model/Input/Props.cs diff --git a/Model/Input/Requirements.cs b/source/LootDumpProcessor/Model/Input/Requirements.cs similarity index 100% rename from Model/Input/Requirements.cs rename to source/LootDumpProcessor/Model/Input/Requirements.cs diff --git a/Model/Input/RootData.cs b/source/LootDumpProcessor/Model/Input/RootData.cs similarity index 100% rename from Model/Input/RootData.cs rename to source/LootDumpProcessor/Model/Input/RootData.cs diff --git a/Model/Input/Scene.cs b/source/LootDumpProcessor/Model/Input/Scene.cs similarity index 100% rename from Model/Input/Scene.cs rename to source/LootDumpProcessor/Model/Input/Scene.cs diff --git a/Model/Input/ServerMapBTRSettings.cs b/source/LootDumpProcessor/Model/Input/ServerMapBTRSettings.cs similarity index 100% rename from Model/Input/ServerMapBTRSettings.cs rename to source/LootDumpProcessor/Model/Input/ServerMapBTRSettings.cs diff --git a/Model/Input/ServerSettings.cs b/source/LootDumpProcessor/Model/Input/ServerSettings.cs similarity index 100% rename from Model/Input/ServerSettings.cs rename to source/LootDumpProcessor/Model/Input/ServerSettings.cs diff --git a/Model/Input/ServiceItemCost.cs b/source/LootDumpProcessor/Model/Input/ServiceItemCost.cs similarity index 100% rename from Model/Input/ServiceItemCost.cs rename to source/LootDumpProcessor/Model/Input/ServiceItemCost.cs diff --git a/Model/Input/SpawnPointParam.cs b/source/LootDumpProcessor/Model/Input/SpawnPointParam.cs similarity index 100% rename from Model/Input/SpawnPointParam.cs rename to source/LootDumpProcessor/Model/Input/SpawnPointParam.cs diff --git a/Model/Input/Standing.cs b/source/LootDumpProcessor/Model/Input/Standing.cs similarity index 100% rename from Model/Input/Standing.cs rename to source/LootDumpProcessor/Model/Input/Standing.cs diff --git a/Model/Input/TraderServerSettings.cs b/source/LootDumpProcessor/Model/Input/TraderServerSettings.cs similarity index 100% rename from Model/Input/TraderServerSettings.cs rename to source/LootDumpProcessor/Model/Input/TraderServerSettings.cs diff --git a/Model/Input/TraderService.cs b/source/LootDumpProcessor/Model/Input/TraderService.cs similarity index 100% rename from Model/Input/TraderService.cs rename to source/LootDumpProcessor/Model/Input/TraderService.cs diff --git a/Model/Input/TraderServices.cs b/source/LootDumpProcessor/Model/Input/TraderServices.cs similarity index 100% rename from Model/Input/TraderServices.cs rename to source/LootDumpProcessor/Model/Input/TraderServices.cs diff --git a/Model/Input/Transit.cs b/source/LootDumpProcessor/Model/Input/Transit.cs similarity index 100% rename from Model/Input/Transit.cs rename to source/LootDumpProcessor/Model/Input/Transit.cs diff --git a/Model/Input/Update.cs b/source/LootDumpProcessor/Model/Input/Update.cs similarity index 100% rename from Model/Input/Update.cs rename to source/LootDumpProcessor/Model/Input/Update.cs diff --git a/Model/Item.cs b/source/LootDumpProcessor/Model/Item.cs similarity index 100% rename from Model/Item.cs rename to source/LootDumpProcessor/Model/Item.cs diff --git a/Model/Output/AbstractDistribution.cs b/source/LootDumpProcessor/Model/Output/AbstractDistribution.cs similarity index 100% rename from Model/Output/AbstractDistribution.cs rename to source/LootDumpProcessor/Model/Output/AbstractDistribution.cs diff --git a/Model/Output/AmmoDistribution.cs b/source/LootDumpProcessor/Model/Output/AmmoDistribution.cs similarity index 100% rename from Model/Output/AmmoDistribution.cs rename to source/LootDumpProcessor/Model/Output/AmmoDistribution.cs diff --git a/Model/Output/ItemCountDistribution.cs b/source/LootDumpProcessor/Model/Output/ItemCountDistribution.cs similarity index 100% rename from Model/Output/ItemCountDistribution.cs rename to source/LootDumpProcessor/Model/Output/ItemCountDistribution.cs diff --git a/Model/Output/ItemDistribution.cs b/source/LootDumpProcessor/Model/Output/ItemDistribution.cs similarity index 100% rename from Model/Output/ItemDistribution.cs rename to source/LootDumpProcessor/Model/Output/ItemDistribution.cs diff --git a/Model/Output/LooseLoot/LooseLootRoot.cs b/source/LootDumpProcessor/Model/Output/LooseLoot/LooseLootRoot.cs similarity index 100% rename from Model/Output/LooseLoot/LooseLootRoot.cs rename to source/LootDumpProcessor/Model/Output/LooseLoot/LooseLootRoot.cs diff --git a/Model/Output/LooseLoot/SpawnPoint.cs b/source/LootDumpProcessor/Model/Output/LooseLoot/SpawnPoint.cs similarity index 100% rename from Model/Output/LooseLoot/SpawnPoint.cs rename to source/LootDumpProcessor/Model/Output/LooseLoot/SpawnPoint.cs diff --git a/Model/Output/LooseLoot/SpawnPointCount.cs b/source/LootDumpProcessor/Model/Output/LooseLoot/SpawnPointCount.cs similarity index 100% rename from Model/Output/LooseLoot/SpawnPointCount.cs rename to source/LootDumpProcessor/Model/Output/LooseLoot/SpawnPointCount.cs diff --git a/Model/Output/LooseLoot/SpawnPointsForced.cs b/source/LootDumpProcessor/Model/Output/LooseLoot/SpawnPointsForced.cs similarity index 100% rename from Model/Output/LooseLoot/SpawnPointsForced.cs rename to source/LootDumpProcessor/Model/Output/LooseLoot/SpawnPointsForced.cs diff --git a/Model/Output/StaticContainer/MapStaticLoot.cs b/source/LootDumpProcessor/Model/Output/StaticContainer/MapStaticLoot.cs similarity index 100% rename from Model/Output/StaticContainer/MapStaticLoot.cs rename to source/LootDumpProcessor/Model/Output/StaticContainer/MapStaticLoot.cs diff --git a/Model/Output/StaticContainer/StaticContainerRoot.cs b/source/LootDumpProcessor/Model/Output/StaticContainer/StaticContainerRoot.cs similarity index 100% rename from Model/Output/StaticContainer/StaticContainerRoot.cs rename to source/LootDumpProcessor/Model/Output/StaticContainer/StaticContainerRoot.cs diff --git a/Model/Output/StaticContainer/StaticDataPoint.cs b/source/LootDumpProcessor/Model/Output/StaticContainer/StaticDataPoint.cs similarity index 100% rename from Model/Output/StaticContainer/StaticDataPoint.cs rename to source/LootDumpProcessor/Model/Output/StaticContainer/StaticDataPoint.cs diff --git a/Model/Output/StaticContainer/StaticForced.cs b/source/LootDumpProcessor/Model/Output/StaticContainer/StaticForced.cs similarity index 100% rename from Model/Output/StaticContainer/StaticForced.cs rename to source/LootDumpProcessor/Model/Output/StaticContainer/StaticForced.cs diff --git a/Model/Output/StaticDistribution.cs b/source/LootDumpProcessor/Model/Output/StaticDistribution.cs similarity index 100% rename from Model/Output/StaticDistribution.cs rename to source/LootDumpProcessor/Model/Output/StaticDistribution.cs diff --git a/Model/Output/StaticItemDistribution.cs b/source/LootDumpProcessor/Model/Output/StaticItemDistribution.cs similarity index 100% rename from Model/Output/StaticItemDistribution.cs rename to source/LootDumpProcessor/Model/Output/StaticItemDistribution.cs diff --git a/Model/Processing/BaseClasses.cs b/source/LootDumpProcessor/Model/Processing/BaseClasses.cs similarity index 100% rename from Model/Processing/BaseClasses.cs rename to source/LootDumpProcessor/Model/Processing/BaseClasses.cs diff --git a/Model/Processing/BasicInfo.cs b/source/LootDumpProcessor/Model/Processing/BasicInfo.cs similarity index 100% rename from Model/Processing/BasicInfo.cs rename to source/LootDumpProcessor/Model/Processing/BasicInfo.cs diff --git a/Model/Processing/CaliberTemplateCount.cs b/source/LootDumpProcessor/Model/Processing/CaliberTemplateCount.cs similarity index 100% rename from Model/Processing/CaliberTemplateCount.cs rename to source/LootDumpProcessor/Model/Processing/CaliberTemplateCount.cs diff --git a/Model/Processing/DumpProcessData.cs b/source/LootDumpProcessor/Model/Processing/DumpProcessData.cs similarity index 100% rename from Model/Processing/DumpProcessData.cs rename to source/LootDumpProcessor/Model/Processing/DumpProcessData.cs diff --git a/Model/Processing/LooseLootCounts.cs b/source/LootDumpProcessor/Model/Processing/LooseLootCounts.cs similarity index 100% rename from Model/Processing/LooseLootCounts.cs rename to source/LootDumpProcessor/Model/Processing/LooseLootCounts.cs diff --git a/Model/Processing/ParsedDump.cs b/source/LootDumpProcessor/Model/Processing/ParsedDump.cs similarity index 100% rename from Model/Processing/ParsedDump.cs rename to source/LootDumpProcessor/Model/Processing/ParsedDump.cs diff --git a/Model/Processing/PartialData.cs b/source/LootDumpProcessor/Model/Processing/PartialData.cs similarity index 100% rename from Model/Processing/PartialData.cs rename to source/LootDumpProcessor/Model/Processing/PartialData.cs diff --git a/Model/Processing/PreProcessedLooseLoot.cs b/source/LootDumpProcessor/Model/Processing/PreProcessedLooseLoot.cs similarity index 100% rename from Model/Processing/PreProcessedLooseLoot.cs rename to source/LootDumpProcessor/Model/Processing/PreProcessedLooseLoot.cs diff --git a/Model/Processing/PreProcessedStaticLoot.cs b/source/LootDumpProcessor/Model/Processing/PreProcessedStaticLoot.cs similarity index 100% rename from Model/Processing/PreProcessedStaticLoot.cs rename to source/LootDumpProcessor/Model/Processing/PreProcessedStaticLoot.cs diff --git a/Model/Repairable.cs b/source/LootDumpProcessor/Model/Repairable.cs similarity index 100% rename from Model/Repairable.cs rename to source/LootDumpProcessor/Model/Repairable.cs diff --git a/Model/Tarkov/Handbook.cs b/source/LootDumpProcessor/Model/Tarkov/Handbook.cs similarity index 100% rename from Model/Tarkov/Handbook.cs rename to source/LootDumpProcessor/Model/Tarkov/Handbook.cs diff --git a/Model/Tarkov/TemplateItems.cs b/source/LootDumpProcessor/Model/Tarkov/TemplateItems.cs similarity index 100% rename from Model/Tarkov/TemplateItems.cs rename to source/LootDumpProcessor/Model/Tarkov/TemplateItems.cs diff --git a/Model/Template.cs b/source/LootDumpProcessor/Model/Template.cs similarity index 100% rename from Model/Template.cs rename to source/LootDumpProcessor/Model/Template.cs diff --git a/Model/Upd.cs b/source/LootDumpProcessor/Model/Upd.cs similarity index 100% rename from Model/Upd.cs rename to source/LootDumpProcessor/Model/Upd.cs diff --git a/Model/Vector3.cs b/source/LootDumpProcessor/Model/Vector3.cs similarity index 100% rename from Model/Vector3.cs rename to source/LootDumpProcessor/Model/Vector3.cs diff --git a/Process/Collector/CollectorFactory.cs b/source/LootDumpProcessor/Process/Collector/CollectorFactory.cs similarity index 100% rename from Process/Collector/CollectorFactory.cs rename to source/LootDumpProcessor/Process/Collector/CollectorFactory.cs diff --git a/Process/Collector/CollectorType.cs b/source/LootDumpProcessor/Process/Collector/CollectorType.cs similarity index 100% rename from Process/Collector/CollectorType.cs rename to source/LootDumpProcessor/Process/Collector/CollectorType.cs diff --git a/Process/Collector/DumpCollector.cs b/source/LootDumpProcessor/Process/Collector/DumpCollector.cs similarity index 100% rename from Process/Collector/DumpCollector.cs rename to source/LootDumpProcessor/Process/Collector/DumpCollector.cs diff --git a/Process/Collector/HashSetCollector.cs b/source/LootDumpProcessor/Process/Collector/HashSetCollector.cs similarity index 100% rename from Process/Collector/HashSetCollector.cs rename to source/LootDumpProcessor/Process/Collector/HashSetCollector.cs diff --git a/Process/Collector/ICollector.cs b/source/LootDumpProcessor/Process/Collector/ICollector.cs similarity index 100% rename from Process/Collector/ICollector.cs rename to source/LootDumpProcessor/Process/Collector/ICollector.cs diff --git a/Process/IPipeline.cs b/source/LootDumpProcessor/Process/IPipeline.cs similarity index 100% rename from Process/IPipeline.cs rename to source/LootDumpProcessor/Process/IPipeline.cs diff --git a/Process/OutputFileType.cs b/source/LootDumpProcessor/Process/OutputFileType.cs similarity index 100% rename from Process/OutputFileType.cs rename to source/LootDumpProcessor/Process/OutputFileType.cs diff --git a/Process/PipelineFactory.cs b/source/LootDumpProcessor/Process/PipelineFactory.cs similarity index 100% rename from Process/PipelineFactory.cs rename to source/LootDumpProcessor/Process/PipelineFactory.cs diff --git a/Process/Processor/DumpProcessor/DumpProcessorFactory.cs b/source/LootDumpProcessor/Process/Processor/DumpProcessor/DumpProcessorFactory.cs similarity index 100% rename from Process/Processor/DumpProcessor/DumpProcessorFactory.cs rename to source/LootDumpProcessor/Process/Processor/DumpProcessor/DumpProcessorFactory.cs diff --git a/Process/Processor/DumpProcessor/IDumpProcessor.cs b/source/LootDumpProcessor/Process/Processor/DumpProcessor/IDumpProcessor.cs similarity index 100% rename from Process/Processor/DumpProcessor/IDumpProcessor.cs rename to source/LootDumpProcessor/Process/Processor/DumpProcessor/IDumpProcessor.cs diff --git a/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs b/source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs similarity index 100% rename from Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs rename to source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs diff --git a/Process/Processor/FileProcessor/FileProcessor.cs b/source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessor.cs similarity index 100% rename from Process/Processor/FileProcessor/FileProcessor.cs rename to source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessor.cs diff --git a/Process/Processor/FileProcessor/FileProcessorFactory.cs b/source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessorFactory.cs similarity index 100% rename from Process/Processor/FileProcessor/FileProcessorFactory.cs rename to source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessorFactory.cs diff --git a/Process/Processor/FileProcessor/IFileProcessor.cs b/source/LootDumpProcessor/Process/Processor/FileProcessor/IFileProcessor.cs similarity index 100% rename from Process/Processor/FileProcessor/IFileProcessor.cs rename to source/LootDumpProcessor/Process/Processor/FileProcessor/IFileProcessor.cs diff --git a/Process/Processor/LooseLootProcessor.cs b/source/LootDumpProcessor/Process/Processor/LooseLootProcessor.cs similarity index 100% rename from Process/Processor/LooseLootProcessor.cs rename to source/LootDumpProcessor/Process/Processor/LooseLootProcessor.cs diff --git a/Process/Processor/StaticLootProcessor.cs b/source/LootDumpProcessor/Process/Processor/StaticLootProcessor.cs similarity index 100% rename from Process/Processor/StaticLootProcessor.cs rename to source/LootDumpProcessor/Process/Processor/StaticLootProcessor.cs diff --git a/Process/QueuePipeline.cs b/source/LootDumpProcessor/Process/QueuePipeline.cs similarity index 100% rename from Process/QueuePipeline.cs rename to source/LootDumpProcessor/Process/QueuePipeline.cs diff --git a/Process/Reader/Filters/FileFilterFactory.cs b/source/LootDumpProcessor/Process/Reader/Filters/FileFilterFactory.cs similarity index 100% rename from Process/Reader/Filters/FileFilterFactory.cs rename to source/LootDumpProcessor/Process/Reader/Filters/FileFilterFactory.cs diff --git a/Process/Reader/Filters/FileFilterTypes.cs b/source/LootDumpProcessor/Process/Reader/Filters/FileFilterTypes.cs similarity index 100% rename from Process/Reader/Filters/FileFilterTypes.cs rename to source/LootDumpProcessor/Process/Reader/Filters/FileFilterTypes.cs diff --git a/Process/Reader/Filters/IFileFilter.cs b/source/LootDumpProcessor/Process/Reader/Filters/IFileFilter.cs similarity index 100% rename from Process/Reader/Filters/IFileFilter.cs rename to source/LootDumpProcessor/Process/Reader/Filters/IFileFilter.cs diff --git a/Process/Reader/Filters/JsonDumpFileFilter.cs b/source/LootDumpProcessor/Process/Reader/Filters/JsonDumpFileFilter.cs similarity index 100% rename from Process/Reader/Filters/JsonDumpFileFilter.cs rename to source/LootDumpProcessor/Process/Reader/Filters/JsonDumpFileFilter.cs diff --git a/Process/Reader/Intake/IIntakeReader.cs b/source/LootDumpProcessor/Process/Reader/Intake/IIntakeReader.cs similarity index 100% rename from Process/Reader/Intake/IIntakeReader.cs rename to source/LootDumpProcessor/Process/Reader/Intake/IIntakeReader.cs diff --git a/Process/Reader/Intake/IntakeReaderFactory.cs b/source/LootDumpProcessor/Process/Reader/Intake/IntakeReaderFactory.cs similarity index 100% rename from Process/Reader/Intake/IntakeReaderFactory.cs rename to source/LootDumpProcessor/Process/Reader/Intake/IntakeReaderFactory.cs diff --git a/Process/Reader/Intake/IntakeReaderTypes.cs b/source/LootDumpProcessor/Process/Reader/Intake/IntakeReaderTypes.cs similarity index 100% rename from Process/Reader/Intake/IntakeReaderTypes.cs rename to source/LootDumpProcessor/Process/Reader/Intake/IntakeReaderTypes.cs diff --git a/Process/Reader/Intake/JsonFileIntakeReader.cs b/source/LootDumpProcessor/Process/Reader/Intake/JsonFileIntakeReader.cs similarity index 100% rename from Process/Reader/Intake/JsonFileIntakeReader.cs rename to source/LootDumpProcessor/Process/Reader/Intake/JsonFileIntakeReader.cs diff --git a/Process/Reader/PreProcess/AbstractPreProcessReader.cs b/source/LootDumpProcessor/Process/Reader/PreProcess/AbstractPreProcessReader.cs similarity index 100% rename from Process/Reader/PreProcess/AbstractPreProcessReader.cs rename to source/LootDumpProcessor/Process/Reader/PreProcess/AbstractPreProcessReader.cs diff --git a/Process/Reader/PreProcess/IPreProcessReader.cs b/source/LootDumpProcessor/Process/Reader/PreProcess/IPreProcessReader.cs similarity index 100% rename from Process/Reader/PreProcess/IPreProcessReader.cs rename to source/LootDumpProcessor/Process/Reader/PreProcess/IPreProcessReader.cs diff --git a/Process/Reader/PreProcess/PreProcessReaderFactory.cs b/source/LootDumpProcessor/Process/Reader/PreProcess/PreProcessReaderFactory.cs similarity index 100% rename from Process/Reader/PreProcess/PreProcessReaderFactory.cs rename to source/LootDumpProcessor/Process/Reader/PreProcess/PreProcessReaderFactory.cs diff --git a/Process/Reader/PreProcess/PreProcessReaderTypes.cs b/source/LootDumpProcessor/Process/Reader/PreProcess/PreProcessReaderTypes.cs similarity index 100% rename from Process/Reader/PreProcess/PreProcessReaderTypes.cs rename to source/LootDumpProcessor/Process/Reader/PreProcess/PreProcessReaderTypes.cs diff --git a/Process/Reader/PreProcess/SevenZipPreProcessReader.cs b/source/LootDumpProcessor/Process/Reader/PreProcess/SevenZipPreProcessReader.cs similarity index 100% rename from Process/Reader/PreProcess/SevenZipPreProcessReader.cs rename to source/LootDumpProcessor/Process/Reader/PreProcess/SevenZipPreProcessReader.cs diff --git a/Process/TarkovItems.cs b/source/LootDumpProcessor/Process/TarkovItems.cs similarity index 100% rename from Process/TarkovItems.cs rename to source/LootDumpProcessor/Process/TarkovItems.cs diff --git a/Process/Writer/FileWriter.cs b/source/LootDumpProcessor/Process/Writer/FileWriter.cs similarity index 100% rename from Process/Writer/FileWriter.cs rename to source/LootDumpProcessor/Process/Writer/FileWriter.cs diff --git a/Process/Writer/IWriter.cs b/source/LootDumpProcessor/Process/Writer/IWriter.cs similarity index 100% rename from Process/Writer/IWriter.cs rename to source/LootDumpProcessor/Process/Writer/IWriter.cs diff --git a/Process/Writer/WriterFactory.cs b/source/LootDumpProcessor/Process/Writer/WriterFactory.cs similarity index 100% rename from Process/Writer/WriterFactory.cs rename to source/LootDumpProcessor/Process/Writer/WriterFactory.cs diff --git a/Program.cs b/source/LootDumpProcessor/Program.cs similarity index 100% rename from Program.cs rename to source/LootDumpProcessor/Program.cs diff --git a/Serializers/ISerializer.cs b/source/LootDumpProcessor/Serializers/ISerializer.cs similarity index 100% rename from Serializers/ISerializer.cs rename to source/LootDumpProcessor/Serializers/ISerializer.cs diff --git a/Serializers/Json/Converters/NetDateTimeConverter.cs b/source/LootDumpProcessor/Serializers/Json/Converters/NetDateTimeConverter.cs similarity index 100% rename from Serializers/Json/Converters/NetDateTimeConverter.cs rename to source/LootDumpProcessor/Serializers/Json/Converters/NetDateTimeConverter.cs diff --git a/Serializers/Json/Converters/NetJsonKeyConverter.cs b/source/LootDumpProcessor/Serializers/Json/Converters/NetJsonKeyConverter.cs similarity index 100% rename from Serializers/Json/Converters/NetJsonKeyConverter.cs rename to source/LootDumpProcessor/Serializers/Json/Converters/NetJsonKeyConverter.cs diff --git a/Serializers/Json/Converters/NewtonsoftDateTimeConverter.cs b/source/LootDumpProcessor/Serializers/Json/Converters/NewtonsoftDateTimeConverter.cs similarity index 100% rename from Serializers/Json/Converters/NewtonsoftDateTimeConverter.cs rename to source/LootDumpProcessor/Serializers/Json/Converters/NewtonsoftDateTimeConverter.cs diff --git a/Serializers/Json/Converters/NewtonsoftJsonKeyConverter.cs b/source/LootDumpProcessor/Serializers/Json/Converters/NewtonsoftJsonKeyConverter.cs similarity index 100% rename from Serializers/Json/Converters/NewtonsoftJsonKeyConverter.cs rename to source/LootDumpProcessor/Serializers/Json/Converters/NewtonsoftJsonKeyConverter.cs diff --git a/Serializers/Json/IJsonSerializer.cs b/source/LootDumpProcessor/Serializers/Json/IJsonSerializer.cs similarity index 100% rename from Serializers/Json/IJsonSerializer.cs rename to source/LootDumpProcessor/Serializers/Json/IJsonSerializer.cs diff --git a/Serializers/Json/JsonSerializerFactory.cs b/source/LootDumpProcessor/Serializers/Json/JsonSerializerFactory.cs similarity index 100% rename from Serializers/Json/JsonSerializerFactory.cs rename to source/LootDumpProcessor/Serializers/Json/JsonSerializerFactory.cs diff --git a/Serializers/Json/JsonSerializerTypes.cs b/source/LootDumpProcessor/Serializers/Json/JsonSerializerTypes.cs similarity index 100% rename from Serializers/Json/JsonSerializerTypes.cs rename to source/LootDumpProcessor/Serializers/Json/JsonSerializerTypes.cs diff --git a/Serializers/Json/NetJsonSerializer.cs b/source/LootDumpProcessor/Serializers/Json/NetJsonSerializer.cs similarity index 100% rename from Serializers/Json/NetJsonSerializer.cs rename to source/LootDumpProcessor/Serializers/Json/NetJsonSerializer.cs diff --git a/Serializers/Json/NewtonsoftJsonSerializer.cs b/source/LootDumpProcessor/Serializers/Json/NewtonsoftJsonSerializer.cs similarity index 100% rename from Serializers/Json/NewtonsoftJsonSerializer.cs rename to source/LootDumpProcessor/Serializers/Json/NewtonsoftJsonSerializer.cs diff --git a/Serializers/Yaml/IYamlSerializer.cs b/source/LootDumpProcessor/Serializers/Yaml/IYamlSerializer.cs similarity index 100% rename from Serializers/Yaml/IYamlSerializer.cs rename to source/LootDumpProcessor/Serializers/Yaml/IYamlSerializer.cs diff --git a/Serializers/Yaml/YamlDotNetYamlSerializer.cs b/source/LootDumpProcessor/Serializers/Yaml/YamlDotNetYamlSerializer.cs similarity index 100% rename from Serializers/Yaml/YamlDotNetYamlSerializer.cs rename to source/LootDumpProcessor/Serializers/Yaml/YamlDotNetYamlSerializer.cs diff --git a/Serializers/Yaml/YamlSerializerFactory.cs b/source/LootDumpProcessor/Serializers/Yaml/YamlSerializerFactory.cs similarity index 100% rename from Serializers/Yaml/YamlSerializerFactory.cs rename to source/LootDumpProcessor/Serializers/Yaml/YamlSerializerFactory.cs diff --git a/Storage/AbstractKey.cs b/source/LootDumpProcessor/Storage/AbstractKey.cs similarity index 100% rename from Storage/AbstractKey.cs rename to source/LootDumpProcessor/Storage/AbstractKey.cs diff --git a/Storage/Collections/FlatKeyableDictionary.cs b/source/LootDumpProcessor/Storage/Collections/FlatKeyableDictionary.cs similarity index 100% rename from Storage/Collections/FlatKeyableDictionary.cs rename to source/LootDumpProcessor/Storage/Collections/FlatKeyableDictionary.cs diff --git a/Storage/Collections/FlatKeyableList.cs b/source/LootDumpProcessor/Storage/Collections/FlatKeyableList.cs similarity index 100% rename from Storage/Collections/FlatKeyableList.cs rename to source/LootDumpProcessor/Storage/Collections/FlatKeyableList.cs diff --git a/Storage/Collections/SubdivisionedKeyableDictionary.cs b/source/LootDumpProcessor/Storage/Collections/SubdivisionedKeyableDictionary.cs similarity index 100% rename from Storage/Collections/SubdivisionedKeyableDictionary.cs rename to source/LootDumpProcessor/Storage/Collections/SubdivisionedKeyableDictionary.cs diff --git a/Storage/DataStorageFactory.cs b/source/LootDumpProcessor/Storage/DataStorageFactory.cs similarity index 100% rename from Storage/DataStorageFactory.cs rename to source/LootDumpProcessor/Storage/DataStorageFactory.cs diff --git a/Storage/DataStorageTypes.cs b/source/LootDumpProcessor/Storage/DataStorageTypes.cs similarity index 100% rename from Storage/DataStorageTypes.cs rename to source/LootDumpProcessor/Storage/DataStorageTypes.cs diff --git a/Storage/FlatUniqueKey.cs b/source/LootDumpProcessor/Storage/FlatUniqueKey.cs similarity index 100% rename from Storage/FlatUniqueKey.cs rename to source/LootDumpProcessor/Storage/FlatUniqueKey.cs diff --git a/Storage/IDataStorage.cs b/source/LootDumpProcessor/Storage/IDataStorage.cs similarity index 100% rename from Storage/IDataStorage.cs rename to source/LootDumpProcessor/Storage/IDataStorage.cs diff --git a/Storage/IKey.cs b/source/LootDumpProcessor/Storage/IKey.cs similarity index 100% rename from Storage/IKey.cs rename to source/LootDumpProcessor/Storage/IKey.cs diff --git a/Storage/IKeyable.cs b/source/LootDumpProcessor/Storage/IKeyable.cs similarity index 100% rename from Storage/IKeyable.cs rename to source/LootDumpProcessor/Storage/IKeyable.cs diff --git a/Storage/Implementations/File/FileDataStorage.cs b/source/LootDumpProcessor/Storage/Implementations/File/FileDataStorage.cs similarity index 100% rename from Storage/Implementations/File/FileDataStorage.cs rename to source/LootDumpProcessor/Storage/Implementations/File/FileDataStorage.cs diff --git a/Storage/Implementations/File/Handlers/AbstractStoreHandler.cs b/source/LootDumpProcessor/Storage/Implementations/File/Handlers/AbstractStoreHandler.cs similarity index 100% rename from Storage/Implementations/File/Handlers/AbstractStoreHandler.cs rename to source/LootDumpProcessor/Storage/Implementations/File/Handlers/AbstractStoreHandler.cs diff --git a/Storage/Implementations/File/Handlers/FlatStoreHandler.cs b/source/LootDumpProcessor/Storage/Implementations/File/Handlers/FlatStoreHandler.cs similarity index 100% rename from Storage/Implementations/File/Handlers/FlatStoreHandler.cs rename to source/LootDumpProcessor/Storage/Implementations/File/Handlers/FlatStoreHandler.cs diff --git a/Storage/Implementations/File/Handlers/SubdivisionedStoreHandler.cs b/source/LootDumpProcessor/Storage/Implementations/File/Handlers/SubdivisionedStoreHandler.cs similarity index 100% rename from Storage/Implementations/File/Handlers/SubdivisionedStoreHandler.cs rename to source/LootDumpProcessor/Storage/Implementations/File/Handlers/SubdivisionedStoreHandler.cs diff --git a/Storage/Implementations/File/IStoreHandler.cs b/source/LootDumpProcessor/Storage/Implementations/File/IStoreHandler.cs similarity index 100% rename from Storage/Implementations/File/IStoreHandler.cs rename to source/LootDumpProcessor/Storage/Implementations/File/IStoreHandler.cs diff --git a/Storage/Implementations/File/Serializers/DataStorageFileSerializerFactory.cs b/source/LootDumpProcessor/Storage/Implementations/File/Serializers/DataStorageFileSerializerFactory.cs similarity index 100% rename from Storage/Implementations/File/Serializers/DataStorageFileSerializerFactory.cs rename to source/LootDumpProcessor/Storage/Implementations/File/Serializers/DataStorageFileSerializerFactory.cs diff --git a/Storage/Implementations/File/Serializers/IDataStorageFileSerializer.cs b/source/LootDumpProcessor/Storage/Implementations/File/Serializers/IDataStorageFileSerializer.cs similarity index 100% rename from Storage/Implementations/File/Serializers/IDataStorageFileSerializer.cs rename to source/LootDumpProcessor/Storage/Implementations/File/Serializers/IDataStorageFileSerializer.cs diff --git a/Storage/Implementations/File/Serializers/JsonDataStorageFileSerializer.cs b/source/LootDumpProcessor/Storage/Implementations/File/Serializers/JsonDataStorageFileSerializer.cs similarity index 100% rename from Storage/Implementations/File/Serializers/JsonDataStorageFileSerializer.cs rename to source/LootDumpProcessor/Storage/Implementations/File/Serializers/JsonDataStorageFileSerializer.cs diff --git a/Storage/Implementations/File/Serializers/YamlDataStorageFileSerializer.cs b/source/LootDumpProcessor/Storage/Implementations/File/Serializers/YamlDataStorageFileSerializer.cs similarity index 100% rename from Storage/Implementations/File/Serializers/YamlDataStorageFileSerializer.cs rename to source/LootDumpProcessor/Storage/Implementations/File/Serializers/YamlDataStorageFileSerializer.cs diff --git a/Storage/Implementations/File/StoreHandlerFactory.cs b/source/LootDumpProcessor/Storage/Implementations/File/StoreHandlerFactory.cs similarity index 100% rename from Storage/Implementations/File/StoreHandlerFactory.cs rename to source/LootDumpProcessor/Storage/Implementations/File/StoreHandlerFactory.cs diff --git a/Storage/Implementations/Memory/MemoryDataStorage.cs b/source/LootDumpProcessor/Storage/Implementations/Memory/MemoryDataStorage.cs similarity index 100% rename from Storage/Implementations/Memory/MemoryDataStorage.cs rename to source/LootDumpProcessor/Storage/Implementations/Memory/MemoryDataStorage.cs diff --git a/Storage/SubdivisionedUniqueKey.cs b/source/LootDumpProcessor/Storage/SubdivisionedUniqueKey.cs similarity index 100% rename from Storage/SubdivisionedUniqueKey.cs rename to source/LootDumpProcessor/Storage/SubdivisionedUniqueKey.cs diff --git a/Utils/FileDateParser.cs b/source/LootDumpProcessor/Utils/FileDateParser.cs similarity index 100% rename from Utils/FileDateParser.cs rename to source/LootDumpProcessor/Utils/FileDateParser.cs diff --git a/Utils/KeyGenerator.cs b/source/LootDumpProcessor/Utils/KeyGenerator.cs similarity index 100% rename from Utils/KeyGenerator.cs rename to source/LootDumpProcessor/Utils/KeyGenerator.cs diff --git a/Utils/ProcessorUtil.cs b/source/LootDumpProcessor/Utils/ProcessorUtil.cs similarity index 100% rename from Utils/ProcessorUtil.cs rename to source/LootDumpProcessor/Utils/ProcessorUtil.cs From 9be5d6e342a6f7af4407c7b6becc4d52e1c3181c Mon Sep 17 00:00:00 2001 From: bluextx Date: Sat, 11 Jan 2025 06:54:59 +0300 Subject: [PATCH 02/24] Refactored processors to use dependency injection and improved immutability --- .../LootDumpProcessor.csproj | 2 + .../Model/Output/StaticItemDistribution.cs | 4 +- .../Model/Processing/ParsedDump.cs | 2 +- .../Process/PipelineFactory.cs | 10 - .../DumpProcessor/DumpProcessorFactory.cs | 12 - .../MultithreadSteppedDumpProcessor.cs | 82 +++-- .../Processor/FileProcessor/FileProcessor.cs | 8 +- .../FileProcessor/FileProcessorFactory.cs | 13 - .../Process/Processor/StaticLootProcessor.cs | 281 ------------------ .../v2/AmmoProcessor/AmmoProcessor.cs | 56 ++++ .../v2/AmmoProcessor/IAmmoProcessor.cs | 10 + .../IStaticContainersProcessor.cs | 11 + .../StaticContainerProcessor.cs | 79 +++++ .../IStaticLootProcessor.cs | 15 + .../StaticLootProcessor.cs | 117 ++++++++ .../Process/QueuePipeline.cs | 24 +- .../Process/Writer/FileWriter.cs | 4 +- source/LootDumpProcessor/Program.cs | 28 +- .../Serializers/Json/NetJsonSerializer.cs | 3 +- 19 files changed, 398 insertions(+), 363 deletions(-) delete mode 100644 source/LootDumpProcessor/Process/PipelineFactory.cs delete mode 100644 source/LootDumpProcessor/Process/Processor/DumpProcessor/DumpProcessorFactory.cs delete mode 100644 source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessorFactory.cs delete mode 100644 source/LootDumpProcessor/Process/Processor/StaticLootProcessor.cs create mode 100644 source/LootDumpProcessor/Process/Processor/v2/AmmoProcessor/AmmoProcessor.cs create mode 100644 source/LootDumpProcessor/Process/Processor/v2/AmmoProcessor/IAmmoProcessor.cs create mode 100644 source/LootDumpProcessor/Process/Processor/v2/StaticContainersProcessor/IStaticContainersProcessor.cs create mode 100644 source/LootDumpProcessor/Process/Processor/v2/StaticContainersProcessor/StaticContainerProcessor.cs create mode 100644 source/LootDumpProcessor/Process/Processor/v2/StaticLootProcessor/IStaticLootProcessor.cs create mode 100644 source/LootDumpProcessor/Process/Processor/v2/StaticLootProcessor/StaticLootProcessor.cs diff --git a/source/LootDumpProcessor/LootDumpProcessor.csproj b/source/LootDumpProcessor/LootDumpProcessor.csproj index 13a5a2c..c4bbc05 100644 --- a/source/LootDumpProcessor/LootDumpProcessor.csproj +++ b/source/LootDumpProcessor/LootDumpProcessor.csproj @@ -12,6 +12,8 @@ + + diff --git a/source/LootDumpProcessor/Model/Output/StaticItemDistribution.cs b/source/LootDumpProcessor/Model/Output/StaticItemDistribution.cs index b074afc..ac281a1 100644 --- a/source/LootDumpProcessor/Model/Output/StaticItemDistribution.cs +++ b/source/LootDumpProcessor/Model/Output/StaticItemDistribution.cs @@ -7,10 +7,10 @@ namespace LootDumpProcessor.Model.Output { [JsonProperty("itemcountDistribution", NullValueHandling = NullValueHandling.Ignore)] [JsonPropertyName("itemcountDistribution")] - public List? ItemCountDistribution { get; set; } + public IReadOnlyList? ItemCountDistribution { get; set; } [JsonProperty("itemDistribution", NullValueHandling = NullValueHandling.Ignore)] [JsonPropertyName("itemDistribution")] - public List? ItemDistribution { get; set; } + public IReadOnlyList? ItemDistribution { get; set; } } } \ No newline at end of file diff --git a/source/LootDumpProcessor/Model/Processing/ParsedDump.cs b/source/LootDumpProcessor/Model/Processing/ParsedDump.cs index 7c62a3b..a78b96e 100644 --- a/source/LootDumpProcessor/Model/Processing/ParsedDump.cs +++ b/source/LootDumpProcessor/Model/Processing/ParsedDump.cs @@ -8,7 +8,7 @@ public class ParsedDump : IKeyable private static readonly Regex _hashRegex = new("([^a-zA-Z0-9])"); public BasicInfo BasicInfo { get; set; } public PreProcessedLooseLoot LooseLoot { get; set; } - public List Containers { get; set; } + public IReadOnlyList Containers { get; set; } public override bool Equals(object? obj) { diff --git a/source/LootDumpProcessor/Process/PipelineFactory.cs b/source/LootDumpProcessor/Process/PipelineFactory.cs deleted file mode 100644 index 08867a2..0000000 --- a/source/LootDumpProcessor/Process/PipelineFactory.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace LootDumpProcessor.Process; - -public static class PipelineFactory -{ - public static IPipeline GetInstance() - { - // implement actual factory at some point - return new QueuePipeline(); - } -} \ No newline at end of file diff --git a/source/LootDumpProcessor/Process/Processor/DumpProcessor/DumpProcessorFactory.cs b/source/LootDumpProcessor/Process/Processor/DumpProcessor/DumpProcessorFactory.cs deleted file mode 100644 index eaf3ee8..0000000 --- a/source/LootDumpProcessor/Process/Processor/DumpProcessor/DumpProcessorFactory.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace LootDumpProcessor.Process.Processor.DumpProcessor; - -public static class DumpProcessorFactory -{ - - public static IDumpProcessor GetInstance() - { - // Implement real factory - return new MultithreadSteppedDumpProcessor(); - } - -} \ No newline at end of file diff --git a/source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs b/source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs index d89e148..f665f8d 100644 --- a/source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs +++ b/source/LootDumpProcessor/Process/Processor/DumpProcessor/MultithreadSteppedDumpProcessor.cs @@ -4,6 +4,9 @@ using LootDumpProcessor.Model; using LootDumpProcessor.Model.Input; using LootDumpProcessor.Model.Output.StaticContainer; using LootDumpProcessor.Model.Processing; +using LootDumpProcessor.Process.Processor.v2.AmmoProcessor; +using LootDumpProcessor.Process.Processor.v2.StaticContainersProcessor; +using LootDumpProcessor.Process.Processor.v2.StaticLootProcessor; using LootDumpProcessor.Serializers.Json; using LootDumpProcessor.Storage; using LootDumpProcessor.Storage.Collections; @@ -11,8 +14,20 @@ using LootDumpProcessor.Utils; namespace LootDumpProcessor.Process.Processor.DumpProcessor; -public class MultithreadSteppedDumpProcessor : IDumpProcessor +public class MultithreadSteppedDumpProcessor( + IStaticLootProcessor staticLootProcessor, IStaticContainersProcessor staticContainersProcessor, + IAmmoProcessor ammoProcessor +) : IDumpProcessor { + private readonly IStaticLootProcessor _staticLootProcessor = + staticLootProcessor ?? throw new ArgumentNullException(nameof(staticLootProcessor)); + + private readonly IStaticContainersProcessor _staticContainersProcessor = + staticContainersProcessor ?? throw new ArgumentNullException(nameof(staticContainersProcessor)); + + private readonly IAmmoProcessor _ammoProcessor = + ammoProcessor ?? throw new ArgumentNullException(nameof(ammoProcessor)); + private static IJsonSerializer _jsonSerializer = JsonSerializerFactory.GetInstance(); private static readonly List Runners = new(); @@ -51,14 +66,17 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor Task.Factory.StartNew(() => { if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug)) - LoggerFactory.GetInstance().Log($"Processing static data for file {dumped.BasicInfo.FileName}", LogLevel.Debug); + LoggerFactory.GetInstance().Log($"Processing static data for file {dumped.BasicInfo.FileName}", + LogLevel.Debug); var dataDump = _jsonSerializer.Deserialize(File.ReadAllText(dumped.BasicInfo.FileName)); if (dataDump == null) { if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Error)) - LoggerFactory.GetInstance().Log($"Failed to deserialize data from file {dumped.BasicInfo.FileName}", LogLevel.Error); + LoggerFactory.GetInstance() + .Log($"Failed to deserialize data from file {dumped.BasicInfo.FileName}", + LogLevel.Error); return; // Skip processing this dump } @@ -70,7 +88,9 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor if (!staticContainers.TryGetValue(mapId, out var mapStaticLoot)) { if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Info)) - LoggerFactory.GetInstance().Log($"Doing first time process for map {mapId} of real static data", LogLevel.Info); + LoggerFactory.GetInstance() + .Log($"Doing first time process for map {mapId} of real static data", + LogLevel.Info); staticContainers[mapId] = new MapStaticLoot { @@ -82,10 +102,13 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor { // .Item1 = map name // .Item2 = force/weapon static arrays - var mapStaticContainers = StaticLootProcessor.CreateStaticWeaponsAndStaticForcedContainers(dataDump); + var mapStaticContainers = + _staticContainersProcessor.CreateStaticWeaponsAndForcedContainers(dataDump); - var newStaticWeapons = mapStaticContainers.Item2.StaticWeapons.Where(x => !mapStaticLoot.StaticWeapons.Exists(y => y.Id == x.Id)); - var newStaticForced = mapStaticContainers.Item2.StaticForced.Where(x => !mapStaticLoot.StaticForced.Exists(y => y.ContainerId == x.ContainerId)); + var newStaticWeapons = mapStaticContainers.Item2.StaticWeapons.Where(x => + !mapStaticLoot.StaticWeapons.Exists(y => y.Id == x.Id)); + var newStaticForced = mapStaticContainers.Item2.StaticForced.Where(x => + !mapStaticLoot.StaticForced.Exists(y => y.ContainerId == x.ContainerId)); mapStaticLoot.StaticWeapons.AddRange(newStaticWeapons); mapStaticLoot.StaticForced.AddRange(newStaticForced); @@ -116,8 +139,10 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor IncrementMapCounterDictionaryValue(mapDumpCounter, mapId); } - var containerIgnoreListExists = LootDumpProcessorContext.GetConfig().ContainerIgnoreList.TryGetValue(mapId, out string[]? ignoreListForMap); - foreach (var dynamicStaticContainer in StaticLootProcessor.CreateDynamicStaticContainers(dataDump)) + var containerIgnoreListExists = LootDumpProcessorContext.GetConfig().ContainerIgnoreList + .TryGetValue(mapId, out string[]? ignoreListForMap); + foreach (var dynamicStaticContainer in _staticContainersProcessor.CreateDynamicStaticContainers( + dataDump)) { lock (mapStaticContainersAggregatedLock) { @@ -145,15 +170,17 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor LoggerFactory.GetInstance().Log("All static data processing threads finished", LogLevel.Info); // Aggregate and calculate the probability of a static container mapStaticContainersAggregated.ToDictionary( - kv => kv.Key, - kv => kv.Value.Select( - td => new StaticDataPoint - { - Template = td.Key, - Probability = GetStaticContainerProbability(kv.Key, td, mapDumpCounter) // kv.Key = map name - } + kv => kv.Key, + kv => kv.Value.Select( + td => new StaticDataPoint + { + Template = td.Key, + Probability = GetStaticContainerProbability(kv.Key, td, mapDumpCounter) // kv.Key = map name + } + ).ToList() ).ToList() - ).ToList().ForEach(kv => staticContainers[kv.Key].StaticContainers = kv.Value); // Hydrate staticContainers.StaticContainers + .ForEach(kv => + staticContainers[kv.Key].StaticContainers = kv.Value); // Hydrate staticContainers.StaticContainers // Static containers output.Add(OutputFileType.StaticContainer, staticContainers); @@ -162,7 +189,7 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor // Ammo distribution output.Add( OutputFileType.StaticAmmo, - StaticLootProcessor.CreateAmmoDistribution(dumpProcessData.ContainerCounts) + _ammoProcessor.CreateAmmoDistribution(dumpProcessData.ContainerCounts) ); if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Info)) @@ -170,7 +197,7 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor // Static loot distribution output.Add( OutputFileType.StaticLoot, - StaticLootProcessor.CreateStaticLootDistribution(dumpProcessData.ContainerCounts, staticContainers) + _staticLootProcessor.CreateStaticLootDistribution(dumpProcessData.ContainerCounts, staticContainers) ); if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Info)) @@ -196,9 +223,9 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor private static bool DumpWasMadeAfterConfigThresholdDate(PartialData dataDump) { return FileDateParser.TryParseFileDate(dataDump.BasicInfo.FileName, out var fileDate) && - fileDate.HasValue && - fileDate.Value > LootDumpProcessorContext.GetConfig().DumpProcessorConfig - .SpawnContainerChanceIncludeAfterDate; + fileDate.HasValue && + fileDate.Value > LootDumpProcessorContext.GetConfig().DumpProcessorConfig + .SpawnContainerChanceIncludeAfterDate; } private static void IncrementMapCounterDictionaryValue(Dictionary mapDumpCounter, string mapName) @@ -210,7 +237,8 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor } } - private static double GetStaticContainerProbability(string mapName, KeyValuePair td, Dictionary mapDumpCounter) + private static double GetStaticContainerProbability(string mapName, KeyValuePair td, + Dictionary mapDumpCounter) { return Math.Round((double)((decimal)td.Value / (decimal)mapDumpCounter[mapName]), 2); } @@ -255,7 +283,7 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor dumpProcessData.LooseLootCounts.Add(mapName, looseLootCounts.GetKey()); BlockingCollection _partialDataToProcess = new(); - + // add the items to the queue foreach (var partialData in partialFileMetaData) { @@ -286,7 +314,8 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor { if (!dumpProcessData.ContainerCounts.ContainsKey(mapName)) { - dumpProcessData.ContainerCounts.Add(mapName, dumpData.Containers); + dumpProcessData.ContainerCounts.Add(mapName, + dumpData.Containers.ToList()); } else { @@ -336,7 +365,8 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor lock (lockObjectCounts) { - looseLootCounts.MapSpawnpointCount.Add(dumpData.LooseLoot.MapSpawnpointCount); + looseLootCounts.MapSpawnpointCount.Add( + dumpData.LooseLoot.MapSpawnpointCount); } } catch (Exception e) diff --git a/source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessor.cs b/source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessor.cs index 9b3d387..3d9af88 100644 --- a/source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessor.cs +++ b/source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessor.cs @@ -1,12 +1,15 @@ using LootDumpProcessor.Logger; using LootDumpProcessor.Model; using LootDumpProcessor.Model.Processing; +using LootDumpProcessor.Process.Processor.v2.StaticLootProcessor; using LootDumpProcessor.Storage; namespace LootDumpProcessor.Process.Processor.FileProcessor; -public class FileProcessor : IFileProcessor +public class FileProcessor(IStaticLootProcessor staticLootProcessor) : IFileProcessor { + private readonly IStaticLootProcessor _staticLootProcessor = staticLootProcessor ?? throw new ArgumentNullException(nameof(staticLootProcessor)); + public PartialData Process(BasicInfo parsedData) { if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug)) @@ -43,10 +46,11 @@ public class FileProcessor : IFileProcessor $"Cached not found for {string.Join("/", dumpData.GetKey().GetLookupIndex())} processing.", LogLevel.Debug ); - dumpData.Containers = StaticLootProcessor.PreProcessStaticLoot(staticLoot); + dumpData.Containers = _staticLootProcessor.PreProcessStaticLoot(staticLoot); dumpData.LooseLoot = LooseLootProcessor.PreProcessLooseLoot(looseLoot); DataStorageFactory.GetInstance().Store(dumpData); } + if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug)) LoggerFactory.GetInstance().Log($"File {parsedData.FileName} finished processing!", LogLevel.Debug); return data; diff --git a/source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessorFactory.cs b/source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessorFactory.cs deleted file mode 100644 index a31961e..0000000 --- a/source/LootDumpProcessor/Process/Processor/FileProcessor/FileProcessorFactory.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace LootDumpProcessor.Process.Processor.FileProcessor; - -public static class FileProcessorFactory -{ - private static IFileProcessor? _fileProcessor; - public static IFileProcessor GetInstance() - { - // TODO: implement actual factory someday - if (_fileProcessor == null) - _fileProcessor = new FileProcessor(); - return _fileProcessor; - } -} \ No newline at end of file diff --git a/source/LootDumpProcessor/Process/Processor/StaticLootProcessor.cs b/source/LootDumpProcessor/Process/Processor/StaticLootProcessor.cs deleted file mode 100644 index 2dfe1e7..0000000 --- a/source/LootDumpProcessor/Process/Processor/StaticLootProcessor.cs +++ /dev/null @@ -1,281 +0,0 @@ -using LootDumpProcessor.Model; -using LootDumpProcessor.Model.Input; -using LootDumpProcessor.Model.Output; -using LootDumpProcessor.Model.Output.StaticContainer; -using LootDumpProcessor.Model.Processing; -using LootDumpProcessor.Utils; -using System.Collections.Generic; - -namespace LootDumpProcessor.Process.Processor; - -public static class StaticLootProcessor -{ - public static List PreProcessStaticLoot(List