From 47ddfed9bc856f69b96a5dee3963e56a0c0d269c Mon Sep 17 00:00:00 2001 From: Mueller Wayan Date: Tue, 22 Apr 2025 20:19:35 +0200 Subject: [PATCH] Added ModulLoader --- .vs/Firebird2D/DesignTimeBuild/.dtbcache.v2 | Bin 189448 -> 195396 bytes .vs/Firebird2D/v17/.futdcache.v2 | Bin 1913 -> 2589 bytes .vs/Firebird2D/v17/.suo | Bin 156160 -> 180224 bytes .vs/Firebird2D/v17/DocumentLayout.json | 338 ++++++++++++------ .../firebird2d.metadata.v8.bin | Bin 2957 -> 3235 bytes .../firebird2d.projects.v8.bin | Bin 635694 -> 937303 bytes .../firebird2d.strings.v8.bin | Bin 158765 -> 168997 bytes .../Datatypes}/FirebirdEvent.cs | 2 +- FireBird2D.Interfaces/Datatypes/ModuleType.cs | 15 + ...> Firebird2D.DataypesAndInterfaces.csproj} | 0 FireBird2D.Interfaces/Interfaces/IEventBus.cs | 21 ++ .../{ => Interfaces}/IGame.cs | 1 + .../Interfaces/IPipeline.cs | 4 +- Firebird2D.EventPipelines/EventBus.cs | 18 +- .../Firebird2D.EventPipelines.csproj | 4 + Firebird2D.EventPipelines/Pipeline.cs | 3 +- Firebird2D.KeyMapper/KeyMapper.cs | 12 +- Firebird2D.Logger/Firebird2D.Logger.csproj | 4 - Firebird2D.Logger/GameLogger.cs | 2 +- .../net8.0/Firebird2D.Logger.AssemblyInfo.cs | 2 +- ...Firebird2D.Logger.AssemblyInfoInputs.cache | 2 +- ...Firebird2D.Logger.csproj.nuget.dgspec.json | 81 +---- Firebird2D.Logger/obj/project.assets.json | 31 +- Firebird2D.Logger/obj/project.nuget.cache | 2 +- .../Firebird2D.ModulLoading.csproj | 21 ++ Firebird2D.ModulLoader/ModulLoader.cs | 99 +++++ Firebird2D.ModulLoader/Modules/Moduls.xml | 10 + Firebird2D.Requirement/Require.cs | 2 +- .../Firebird2D.Requirement.AssemblyInfo.cs | 2 +- ...ird2D.Requirement.AssemblyInfoInputs.cache | 2 +- .../Firebird2D.Requirement.assets.cache | Bin 365 -> 228 bytes ...ird2D.Requirement.csproj.nuget.dgspec.json | 73 +--- .../obj/project.assets.json | 18 - .../obj/project.nuget.cache | 2 +- .../Firebird2D.SFMLExtensions.AssemblyInfo.cs | 2 +- ...2D.SFMLExtensions.AssemblyInfoInputs.cache | 2 +- Firebird2D.sln | 8 +- .../Debug/net8.0/Firebird2D.AssemblyInfo.cs | 2 +- .../Firebird2D.AssemblyInfoInputs.cache | 2 +- .../obj/Debug/net8.0/Firebird2D.assets.cache | Bin 66731 -> 66753 bytes .../obj/Firebird2D.csproj.nuget.dgspec.json | 20 +- Firebird2D/obj/project.assets.json | 34 +- Firebird2D/obj/project.nuget.cache | 2 +- 43 files changed, 471 insertions(+), 372 deletions(-) rename {Firebird2D.EventPipelines => FireBird2D.Interfaces/Datatypes}/FirebirdEvent.cs (99%) create mode 100644 FireBird2D.Interfaces/Datatypes/ModuleType.cs rename FireBird2D.Interfaces/{Firebird2D.Interfaces.csproj => Firebird2D.DataypesAndInterfaces.csproj} (100%) create mode 100644 FireBird2D.Interfaces/Interfaces/IEventBus.cs rename FireBird2D.Interfaces/{ => Interfaces}/IGame.cs (82%) rename Firebird2D.EventPipelines/I_Pipeline.cs => FireBird2D.Interfaces/Interfaces/IPipeline.cs (93%) create mode 100644 Firebird2D.ModulLoader/Firebird2D.ModulLoading.csproj create mode 100644 Firebird2D.ModulLoader/ModulLoader.cs create mode 100644 Firebird2D.ModulLoader/Modules/Moduls.xml diff --git a/.vs/Firebird2D/DesignTimeBuild/.dtbcache.v2 b/.vs/Firebird2D/DesignTimeBuild/.dtbcache.v2 index b2f1499ed5e5c7865d036aeb025351834cad7667..5e225aacc4cec0160d796703954bb42db7bb3bbb 100644 GIT binary patch literal 195396 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 literal 189448 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 diff --git a/.vs/Firebird2D/v17/.futdcache.v2 b/.vs/Firebird2D/v17/.futdcache.v2 index 1476eae48f268edc83710df6b75d5669124f77de..4762c914cdb47fed5e87d560a7e6dd3d47decf58 100644 GIT binary patch delta 377 zcmey#H&=vFcq8L|7M|qX-EWS?Y}oX@;V#GKH!LNLTyD-%_M$RBwRbjd&SK+dWOSeW zmRVBODYGcW$VJaHuOzi7EipN@IL0lrC>2d~;sry|eG-fJZ$Fy6`zz2u1}MO1L=vjO zAS09$ZtH)W6gPiIBf^LvkSh$(?1Q=jYJ^K-Nn&L|YO!Np3e1^6(|8ip?xxtquRXUH zXxijAESd_w`6;D2KKY3$sYPH*wvX?PH!R9wCC5&7vkDtG$q?);rvte@<8$TleIlT@N diff --git a/.vs/Firebird2D/v17/.suo b/.vs/Firebird2D/v17/.suo index 2bc41bc41744d45c660a7ceadda6d5621d467cc9..8f3a844c239779927c71a63c1d7471374518d3c4 100644 GIT binary patch delta 22006 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 CqDR62 delta 10542 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 BS0?}f diff --git a/.vs/Firebird2D/v17/DocumentLayout.json b/.vs/Firebird2D/v17/DocumentLayout.json index bea62c4..c5bb53c 100644 --- a/.vs/Firebird2D/v17/DocumentLayout.json +++ b/.vs/Firebird2D/v17/DocumentLayout.json @@ -3,48 +3,72 @@ "WorkspaceRootPath": "G:\\Coding\\Firebird2D\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{567FA588-5EE8-4B36-9C81-47C76C46D782}|Firebird2D.SFMLExtensions\\Firebird2D.SFMLExtensions.csproj|g:\\coding\\firebird2d\\firebird2d.sfmlextensions\\floatrectangeextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{567FA588-5EE8-4B36-9C81-47C76C46D782}|Firebird2D.SFMLExtensions\\Firebird2D.SFMLExtensions.csproj|solutionrelative:firebird2d.sfmlextensions\\floatrectangeextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{38CCA723-C113-4E44-B074-F9B709B0EEB4}|Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj|g:\\coding\\firebird2d\\firebird2d.keymapper\\keymapper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{38CCA723-C113-4E44-B074-F9B709B0EEB4}|Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj|solutionrelative:firebird2d.keymapper\\keymapper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\interfaces\\ieventbus.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|solutionrelative:firebird2d.interfaces\\interfaces\\ieventbus.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{917F395C-6C2E-4F23-9ED1-B123E5F272E9}|Firebird2D.ModulLoader\\Firebird2D.ModulLoading.csproj|g:\\coding\\firebird2d\\firebird2d.modulloader\\modulloader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{917F395C-6C2E-4F23-9ED1-B123E5F272E9}|Firebird2D.ModulLoader\\Firebird2D.ModulLoading.csproj|solutionrelative:firebird2d.modulloader\\modulloader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\interfaces\\igame.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|solutionrelative:firebird2d.interfaces\\interfaces\\igame.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{AF025062-8AED-4E0B-91A4-CD4245F9DB46}|Firebird2D.Requirement\\Firebird2D.Requirement.csproj|g:\\coding\\firebird2d\\firebird2d.requirement\\require.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{AF025062-8AED-4E0B-91A4-CD4245F9DB46}|Firebird2D.Requirement\\Firebird2D.Requirement.csproj|solutionrelative:firebird2d.requirement\\require.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{106D6D21-E153-476B-AE52-4B2C899F6928}|Firebird2D.Logger\\Firebird2D.Logger.csproj|g:\\coding\\firebird2d\\firebird2d.logger\\ilogger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{106D6D21-E153-476B-AE52-4B2C899F6928}|Firebird2D.Logger\\Firebird2D.Logger.csproj|solutionrelative:firebird2d.logger\\ilogger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|g:\\coding\\firebird2d\\firebird2d\\scenesystem\\scenemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|solutionrelative:firebird2d\\scenesystem\\scenemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{917F395C-6C2E-4F23-9ED1-B123E5F272E9}|Firebird2D.ModulLoader\\Firebird2D.ModulLoading.csproj|g:\\coding\\firebird2d\\firebird2d.modulloader\\modules\\moduls.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}", + "RelativeMoniker": "D:0:0:{917F395C-6C2E-4F23-9ED1-B123E5F272E9}|Firebird2D.ModulLoader\\Firebird2D.ModulLoading.csproj|solutionrelative:firebird2d.modulloader\\modules\\moduls.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}" }, { "AbsoluteMoniker": "D:0:0:{106D6D21-E153-476B-AE52-4B2C899F6928}|Firebird2D.Logger\\Firebird2D.Logger.csproj|g:\\coding\\firebird2d\\firebird2d.logger\\gamelogger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{106D6D21-E153-476B-AE52-4B2C899F6928}|Firebird2D.Logger\\Firebird2D.Logger.csproj|solutionrelative:firebird2d.logger\\gamelogger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\FireBird2D.Interfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\igame.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\FireBird2D.Interfaces.csproj|solutionrelative:firebird2d.interfaces\\igame.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\datatypes\\moduletype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|solutionrelative:firebird2d.interfaces\\datatypes\\moduletype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{38CCA723-C113-4E44-B074-F9B709B0EEB4}|Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj|g:\\coding\\firebird2d\\firebird2d.keymapper\\firebird2d.keymapping.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{38CCA723-C113-4E44-B074-F9B709B0EEB4}|Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj|solutionrelative:firebird2d.keymapper\\firebird2d.keymapping.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + "AbsoluteMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|g:\\coding\\firebird2d\\firebird2d\\core\\inputmapper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|solutionrelative:firebird2d\\core\\inputmapper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{38CCA723-C113-4E44-B074-F9B709B0EEB4}|Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj|g:\\coding\\firebird2d\\firebird2d.keymapper\\keymapper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{38CCA723-C113-4E44-B074-F9B709B0EEB4}|Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj|solutionrelative:firebird2d.keymapper\\keymapper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|g:\\coding\\firebird2d\\firebird2d\\datatypes\\ispatial.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|solutionrelative:firebird2d\\datatypes\\ispatial.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|g:\\coding\\firebird2d\\firebird2d.eventpipelines\\firebirdevent.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|solutionrelative:firebird2d.eventpipelines\\firebirdevent.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{106D6D21-E153-476B-AE52-4B2C899F6928}|Firebird2D.Logger\\Firebird2D.Logger.csproj|g:\\coding\\firebird2d\\firebird2d.logger\\ilogger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{106D6D21-E153-476B-AE52-4B2C899F6928}|Firebird2D.Logger\\Firebird2D.Logger.csproj|solutionrelative:firebird2d.logger\\ilogger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|g:\\coding\\firebird2d\\firebird2d.eventpipelines\\pipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|solutionrelative:firebird2d.eventpipelines\\pipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|g:\\coding\\firebird2d\\firebird2d.eventpipelines\\i_pipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|solutionrelative:firebird2d.eventpipelines\\i_pipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\datatypes\\firebirdevent.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|solutionrelative:firebird2d.interfaces\\datatypes\\firebirdevent.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|g:\\coding\\firebird2d\\firebird2d.eventpipelines\\eventbus.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|solutionrelative:firebird2d.eventpipelines\\eventbus.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\interfaces\\ipipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|solutionrelative:firebird2d.interfaces\\interfaces\\ipipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{567FA588-5EE8-4B36-9C81-47C76C46D782}|Firebird2D.SFMLExtensions\\Firebird2D.SFMLExtensions.csproj|g:\\coding\\firebird2d\\firebird2d.sfmlextensions\\floatrectangeextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{567FA588-5EE8-4B36-9C81-47C76C46D782}|Firebird2D.SFMLExtensions\\Firebird2D.SFMLExtensions.csproj|solutionrelative:firebird2d.sfmlextensions\\floatrectangeextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{38CCA723-C113-4E44-B074-F9B709B0EEB4}|Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj|g:\\coding\\firebird2d\\firebird2d.keymapper\\firebird2d.keymapping.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{38CCA723-C113-4E44-B074-F9B709B0EEB4}|Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj|solutionrelative:firebird2d.keymapper\\firebird2d.keymapping.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" }, { "AbsoluteMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|g:\\coding\\firebird2d\\firebird2d.eventpipelines\\eventarguments\\firebirdjoystickbuttoneventargs.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", @@ -70,10 +94,6 @@ "AbsoluteMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|g:\\coding\\firebird2d\\firebird2d\\game.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|solutionrelative:firebird2d\\game.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|g:\\coding\\firebird2d\\firebird2d\\core\\inputmapper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|solutionrelative:firebird2d\\core\\inputmapper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{8B04689D-A8E2-494B-922E-06F5EF313297}|Documentation{8B04689D-A8E2-494B-922E-06F5EF313297}|G:\\Coding\\Firebird2D\\ClassDiagram.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}", "RelativeMoniker": "D:0:0:{8B04689D-A8E2-494B-922E-06F5EF313297}|Documentation{8B04689D-A8E2-494B-922E-06F5EF313297}|solutionrelative:ClassDiagram.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}" @@ -86,37 +106,115 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 0, + "SelectedChildIndex": 13, "Children": [ { "$type": "Document", - "DocumentIndex": 0, + "DocumentIndex": 8, + "Title": "ModuleType.cs", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Datatypes\\ModuleType.cs", + "RelativeDocumentMoniker": "FireBird2D.Interfaces\\Datatypes\\ModuleType.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Datatypes\\ModuleType.cs", + "RelativeToolTip": "FireBird2D.Interfaces\\Datatypes\\ModuleType.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAVAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-04-22T16:50:37.241Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "Moduls.xml", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\Modules\\Moduls.xml", + "RelativeDocumentMoniker": "Firebird2D.ModulLoader\\Modules\\Moduls.xml", + "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\Modules\\Moduls.xml", + "RelativeToolTip": "Firebird2D.ModulLoader\\Modules\\Moduls.xml", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAcAAAAIAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|", + "WhenOpened": "2025-04-22T16:46:40.211Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ModulLoader.cs", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\ModulLoader.cs", + "RelativeDocumentMoniker": "Firebird2D.ModulLoader\\ModulLoader.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\ModulLoader.cs", + "RelativeToolTip": "Firebird2D.ModulLoader\\ModulLoader.cs", + "ViewState": "AQIAABsAAAAAAAAAAAAowEMAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-04-22T16:25:54.624Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "ISpatial.cs", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Datatypes\\ISpatial.cs", + "RelativeDocumentMoniker": "Firebird2D\\Datatypes\\ISpatial.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D\\Datatypes\\ISpatial.cs", + "RelativeToolTip": "Firebird2D\\Datatypes\\ISpatial.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-04-22T16:22:51.196Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "FirebirdEvent.cs", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Datatypes\\FirebirdEvent.cs", + "RelativeDocumentMoniker": "FireBird2D.Interfaces\\Datatypes\\FirebirdEvent.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Datatypes\\FirebirdEvent.cs", + "RelativeToolTip": "FireBird2D.Interfaces\\Datatypes\\FirebirdEvent.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABAAAAAbAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-04-22T16:17:30.533Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "IEventBus.cs", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IEventBus.cs", + "RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IEventBus.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IEventBus.cs", + "RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IEventBus.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABIAAABHAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-04-22T16:13:30.421Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "IPipeline.cs", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IPipeline.cs", + "RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IPipeline.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IPipeline.cs", + "RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IPipeline.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABIAAAAzAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-04-22T16:09:44.914Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 15, "Title": "FloatRectangeExtension.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.SFMLExtensions\\FloatRectangeExtension.cs", "RelativeDocumentMoniker": "Firebird2D.SFMLExtensions\\FloatRectangeExtension.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.SFMLExtensions\\FloatRectangeExtension.cs", "RelativeToolTip": "Firebird2D.SFMLExtensions\\FloatRectangeExtension.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAABYAAAAAAAAA", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABUAAAABAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-04-21T17:17:44.48Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 5, - "Title": "Firebird2D.KeyMapping", - "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", - "RelativeDocumentMoniker": "Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", - "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", - "RelativeToolTip": "Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-04-21T17:12:47.964Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 11, "Title": "ILogger.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\ILogger.cs", "RelativeDocumentMoniker": "Firebird2D.Logger\\ILogger.cs", @@ -129,33 +227,33 @@ }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 3, "Title": "IGame.cs", - "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\IGame.cs", - "RelativeDocumentMoniker": "FireBird2D.Interfaces\\IGame.cs", - "ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\IGame.cs", - "RelativeToolTip": "FireBird2D.Interfaces\\IGame.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAFAAAA", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IGame.cs", + "RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IGame.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IGame.cs", + "RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IGame.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAsAAAAtAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-04-21T16:58:17.745Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 17, + "DocumentIndex": 9, "Title": "InputMapper.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Core\\InputMapper.cs", "RelativeDocumentMoniker": "Firebird2D\\Core\\InputMapper.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D\\Core\\InputMapper.cs", "RelativeToolTip": "Firebird2D\\Core\\InputMapper.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAuwAsAAAAUAAAA", + "ViewState": "AQIAAE0AAAAAAAAAAAAtwG0AAAAnAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-04-18T07:43:42.972Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 20, "Title": "MainWindow.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Core\\MainWindow.cs", "RelativeDocumentMoniker": "Firebird2D\\Core\\MainWindow.cs", @@ -168,72 +266,72 @@ }, { "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 0, "Title": "KeyMapper.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\KeyMapper.cs", "RelativeDocumentMoniker": "Firebird2D.KeyMapper\\KeyMapper.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\KeyMapper.cs", "RelativeToolTip": "Firebird2D.KeyMapper\\KeyMapper.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAABAAAAA+AAAA", + "ViewState": "AQIAAAMAAAAAAAAAAAAAAB4AAAAJAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-04-18T07:43:14.35Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 9, - "Title": "I_Pipeline.cs", - "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\I_Pipeline.cs", - "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\I_Pipeline.cs", - "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\I_Pipeline.cs", - "RelativeToolTip": "Firebird2D.EventPipelines\\I_Pipeline.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAB4AAABbAAAA", + "DocumentIndex": 7, + "Title": "GameLogger.cs", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\GameLogger.cs", + "RelativeDocumentMoniker": "Firebird2D.Logger\\GameLogger.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\GameLogger.cs", + "RelativeToolTip": "Firebird2D.Logger\\GameLogger.cs", + "ViewState": "AQIAABgAAAAAAAAAAAA1wEUAAAAJAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-04-17T20:10:17.86Z", + "WhenOpened": "2025-04-17T17:56:23.324Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 4, + "Title": "Require.cs", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Require.cs", + "RelativeDocumentMoniker": "Firebird2D.Requirement\\Require.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Require.cs", + "RelativeToolTip": "Firebird2D.Requirement\\Require.cs", + "ViewState": "AQIAABAAAAAAAAAAAAAQwAsAAAA0AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-04-17T17:56:35.49Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 16, + "Title": "Firebird2D.KeyMapping.csproj", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", + "RelativeDocumentMoniker": "Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", + "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", + "RelativeToolTip": "Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-04-21T17:12:47.964Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 12, "Title": "Pipeline.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\Pipeline.cs", "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\Pipeline.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\Pipeline.cs", "RelativeToolTip": "Firebird2D.EventPipelines\\Pipeline.cs", - "ViewState": "AQIAABYAAAAAAAAAAAAQwEsAAAAAAAAA", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABEAAAAVAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-04-17T19:45:23.048Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 7, - "Title": "FirebirdEvent.cs", - "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\FirebirdEvent.cs", - "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\FirebirdEvent.cs", - "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\FirebirdEvent.cs", - "RelativeToolTip": "Firebird2D.EventPipelines\\FirebirdEvent.cs", - "ViewState": "AQIAAE8BAAAAAAAAAAAAwK4BAAAVAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-04-17T19:42:10.988Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 10, - "Title": "EventBus.cs", - "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventBus.cs", - "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventBus.cs", - "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventBus.cs", - "RelativeToolTip": "Firebird2D.EventPipelines\\EventBus.cs", - "ViewState": "AQIAACIAAAAAAAAAAAAQwCMAAAANAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-04-17T19:40:01.999Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 16, + "DocumentIndex": 22, "Title": "Game.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Game.cs", "RelativeDocumentMoniker": "Firebird2D\\Game.cs", @@ -246,33 +344,7 @@ }, { "$type": "Document", - "DocumentIndex": 3, - "Title": "GameLogger.cs", - "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\GameLogger.cs", - "RelativeDocumentMoniker": "Firebird2D.Logger\\GameLogger.cs", - "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\GameLogger.cs", - "RelativeToolTip": "Firebird2D.Logger\\GameLogger.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAABUAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-04-17T17:56:23.324Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "Require.cs", - "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Require.cs", - "RelativeDocumentMoniker": "Firebird2D.Requirement\\Require.cs", - "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Require.cs", - "RelativeToolTip": "Firebird2D.Requirement\\Require.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAcAAAAFAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-04-17T17:56:35.49Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 12, + "DocumentIndex": 18, "Title": "FirebirdKeyEventArgs.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\FirebirdKeyEventArgs.cs", "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventArguments\\FirebirdKeyEventArgs.cs", @@ -285,7 +357,7 @@ }, { "$type": "Document", - "DocumentIndex": 15, + "DocumentIndex": 21, "Title": "InputEventType.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\InputEventType.cs", "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventArguments\\InputEventType.cs", @@ -298,7 +370,7 @@ }, { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 19, "Title": "FirebirdMouseButtonEventArgs.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\FirebirdMouseButtonEventArgs.cs", "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventArguments\\FirebirdMouseButtonEventArgs.cs", @@ -311,7 +383,7 @@ }, { "$type": "Document", - "DocumentIndex": 11, + "DocumentIndex": 17, "Title": "FirebirdJoystickButtonEventArgs.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\FirebirdJoystickButtonEventArgs.cs", "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventArguments\\FirebirdJoystickButtonEventArgs.cs", @@ -324,7 +396,7 @@ }, { "$type": "Document", - "DocumentIndex": 18, + "DocumentIndex": 23, "Title": "ClassDiagram.md", "DocumentMoniker": "G:\\Coding\\Firebird2D\\ClassDiagram.md", "RelativeDocumentMoniker": "ClassDiagram.md", @@ -338,6 +410,40 @@ ] } ] + }, + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "FloatingWindowState": { + "Id": "b14934ab-f70e-4c3b-af63-28d3e15ed402", + "Display": 0, + "X": 941, + "Y": 162, + "Width": 1981, + "Height": 1231, + "WindowState": 0 + }, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 0, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "SceneManager.cs", + "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\SceneSystem\\SceneManager.cs", + "RelativeDocumentMoniker": "Firebird2D\\SceneSystem\\SceneManager.cs", + "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D\\SceneSystem\\SceneManager.cs", + "RelativeToolTip": "Firebird2D\\SceneSystem\\SceneManager.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-04-22T16:40:39.645Z", + "EditorCaption": "" + } + ] + } + ] } ] } \ No newline at end of file diff --git a/.vs/ProjectEvaluation/firebird2d.metadata.v8.bin b/.vs/ProjectEvaluation/firebird2d.metadata.v8.bin index 25be1a2dfe43ec787de8d08f75ba2bb25d125e41..1448fa9f4c05a62de104c61d6155e7cc494fc771 100644 GIT binary patch delta 287 zcmeAbUo5#{F$*K#<|QoKnT0yfax;KH0uYC`J-)HCadIw4vCwyO9*`)*QXrmSWA1dK zaq=gQA3}@?5Y@>*;rBdGL8||7b_%5}f~XD$3YXuR?hX{5&Q&fH!OII2U|`S!;;Xt6 zuXi*~R^ZOH{lm<|@F$yx@i*iCM-T;zfC^#-O@X%D9%QS&!assz*z#nUnA;-!ghD-(;vW9ozxxJW%*zo+ZTUFfc5*I9v5<}gD_B?vA^eHshtLF8 z4zRE>kUYQMd(Ec0$$vOIh4ei*;i}n!uOH@Zm^_`UTOCC&kO^ES`Nk~WM8Cij1nX1G4f^OIm(p z05v!qj)Z+R8;;hU-*aYkx03Vw@|M%J{ohPhZ(MNXTxQ=}jaQC1)b;}BEY1C_Gre(k z9lPME*w^>E?)&#|KKra-UEzCA{B?6t+3^obFQs0{ES|V&;O&3t7j(tSWm%{~d$U*` zi<2lKTJg7(;`IOa9D}xDun53L?x)!AgaJ&9ikqhqJJvAID)A2PoYGwlOS}B zRv{%ws}Z6#h?)tFBx=VgG&9Rgg0um~G=_``Mj+Z0TGM72(ZZ6kn|JmhHSZ0SIn_<* zA&3v7z%;nqH3hz*cJ2%1J)9`9+h218>DO@nU+l|<)K^%oCOnB3FM=7a!iZ}qu+f-- z1|e|ZkbsRqA%Rw1=$75d;_jd0fZx294gJClTtv<9b|qj!)Lo~YUOb7YkDqqVEx&+JYV|&;6UPvLe##a+o%lQU_hUCvN6Xxq$+3jy!SH-%;Fvyq zCZPooEH{HVGFCEt3@6`6=y5pllru1{kBleu83=x91~(Dyqai6CVK335e~V`#Jd5~; zGS)3hAe6$$tIoiLe(BAG1|e|BMvzD-mf;U&21)Q>cd#jviS}Wkd@I7U;W<7=e_+dC zJq+C-2jKOyWk87bWszKn;F+GD+=CEXl_*2{mD*Q|U2K`}iuPQPrj(%|TTs!o4h4h! zqgFEHQsZz6|G~|O(DrVVS74k9>oro&!gJthPPq0tA@F~+dAj=icDZnA8bJX+Em7!Q zN-#*%d3Co!OIh^;UX?4ff>jy3s#NHDR?USk|E?0ZWFAjz6k4kwn#qeTu#hEKySMPF zUZGpz)FfUsh*R@nMfJ$j7Dw^4RiSN)10I`wm5s7~^#WdXDD++h(}ld~)W`jh_)q?M zUi2c!4$~fm?qJ_1i>O~#Noz6uIEUhK3|kHzJ7oP>EyZAksCiSMCd5DbPK?(D7r#v} zWBP~!-!u}c2|A!qADhYxQ|*v5q8Ib@ph8Djx`b#aKauNYR2!mb)%R8OIJ;m|(Ye^Y z1MQJ#dhg8bKVSClMRnGt*W$9jNo`9w+K`m6DMV4VYMMvZ&KAqhnULy#S0!q8Ih*UN zmro3*qz*su;zY6fXkC5A2kDo;I<<1~$@>?m4J)@iw@9Ds(@GbJT&3j=xt@tryGJ}Z z+Qf)wZiJie1e2GBn7l;u4!A!dC|x`CzS7W`mJK%h*^Lg)nYHFWeN$?_zU_F$@-Z|% z`R^CgdaH-)+y$=|e4bSKJKg4NVRH__x2)Ry>o*LWvkjYXBlu4n_zB(SWxCC|VK!&~ zPn&bDv)N2co6W?u*-CVqt=h0TC)DO#yUn?V&Do(AgUw+z*bJ|L+YB=>PA!`u2)9{` zuxy5V=r)VHTQ-ZKmd(qA&3VG+{O_{)cDv05|JUYhyUojWn+vbAd4=8PB4P7N-R2d# z&AGznRd$^30l0#<0(=iY=pA7LTwryCjl42C!jE}nbc9X3vUh|ko{El8%?qO= z)bL7lgnV8Y9idiqgxh&4Izk>VjE=CGSE3_q;f3f3b$Umrhs^2-TWuWy79sBl>=@b+ z^7M|d3@-kzj<8mAga#NhL5+^k$U8!2@ z1G~GDYZi``U-T7Td0scNNf_Boa87W1&V*rPlVM~F!Hp>|u@kzHt-6tIVMaFTMz+HN z_OBgc|9Y?3zcycIq?yod@B-NW)l5tytwcA{stqHXLyc^+8`)+U*<>>^tOg_D6>uYA zhHxVx2scuUu#ALz=thdWTSkhZmXWQ($WCEomoV}^`~J1tZsh%TBOkEuUz_YkZr6?M zF^t>+?}G1Nd+kQ<6h=O%8`-NH*(Qwavm3d~Zsbpdkq_DTuRi_$FnH?rR_a<5_JK4B!h_i!US4I|rxk+3SQ{VObU-N;I2WV2;tvoO*-06#Os z$e*##GM(gRgPX`guS1ItI-?@un+V&u@Qp9~m>6MxOo|Bk7ZVTaD&iqSzQGXd9)sB} z>-@YjtlQ5k!@6N!8P*+uM`ycVm8ZhGgS;@T8{w6(u8S9jb%%s?-8>c6b@IZn?l7-} zbwB5Yuy8QQ;HS-Zzp$9Nb?nHjYZtrUPTjgzxY)988&uZr_hDh(FL-KL K_c*t%M*c6R2$IGC delta 27 icmcaU%W~Z_wT2eP7N!>F7M2#)7Pc1l7LF~PdYb{6u?fcj diff --git a/.vs/ProjectEvaluation/firebird2d.strings.v8.bin b/.vs/ProjectEvaluation/firebird2d.strings.v8.bin index b9682f676191691240c65345856d9fd6824b4ff9..16517ed5e1fb89c95e088b6a51203b7df544b6f9 100644 GIT binary patch delta 5400 zcmbVQO>7%Q6xO^V)CNPE=Eq56=ch4^8>j0ejuSUZLu{vsLjV6;)wEsPYj-Qh>w4Xa zUI-jG7pTOXP=6#OgoJ1%xT5xiIQ9fbdIJdoL8>@V6=r7R-PzsQP0FeDyua_gdGCEY z`Rb=_pMTMU?tg$jMCe-tqm@j{@*%BUR_angPfAj5QLQT(wO*W9kd~_rrCyQ?iq1~+ z&QoGht7})6@U9jkNq#F$Vl33Z3Wzv)i+2JAC&D^h|_kR$ll!MMC`G z5Crl32)wex6>Atj+yhQ)!c%Tzh2H&l}1V$%bjMLZ7xmxxE+OC?QxBJ+3wWEkCU*= zp&DauqfS*lH!j3}JN;z{$F@LATVf(PJ$@jQkWSYo7UYKVF&x{c?eh*4nm+JZvpgrCNvQ_zLZ;1(ZklRi+@q>P8F06gq!iVLRxfDPl3F&j1X#W=L5$Di zc?qJ9hBf9uc$>Z3q-Iy*)iR7aEVCXpe=V<4v7_D%B28&oOuVenXqb=2hlalt5Ub(p(2VVw2a4Q!+r*+_xX(Wp}??5Z@^ z)|dSj#!fL>62vI0dp;@m%y?SOI-xm{S;VuLOeRv<>1>mDlK9?dDC7-jnaSG)p&9R> zquz2#Lj8yRp;>&i8O`|MK7V(L&Nxf;*j0qH`m%yl9P~1>Q4rjcfrwxMQzDrY`!`uA z;qM$Xy3zc)M|c^`EX}sgZZU#1A<&h4<>qp=q>;hMGTl|Nu8X2rgEZ)FF&D&v8%ni7 z90jQhLv&axUau&ph#Eb&R#0x4DQB(|{?^<1^MQ5dvnd}_Yf43}QYXeIqoCAB3Vla&KaJ? z@?WR}U%rD{yF2l7EkqacLUtXNl|*dv&ct_g5bV~ zqAz7d_}q8(z9oiA%r+(gqO>31x&RRm#2d-U{m-y^^@%|=KOS)UEQCFJ$oh*Lgde>_#_J+87&cFR3`i9G^&cph z>f>6+G_)`TJ;X53XJo80{geKh{bg`zO=-2r$Njj}!D0yoc&Z9qOHZ$Y%^KF8aip}y_~k5b`V z&rm0ONBXMl?Hm(1!2JaXq4UmqwjCt!>5~#)o`*p$FD9TbN&L+`OmPBw)kt>wSvv^* zwj8mX2I)1ks7f8bw;hFs_&+e1LUxVKC!;X|TtHIce*0{h#Lj;;@ZPZ8j@nV#36gqp zfTVgUwjjd11IfYM#tuo_R9uAphAC!$*4n{-682{Q>e9O_m3<76tt#i^AoW`5k$JbV zVS;r@x9NGk callback, FirebirdEvent firebirdEvent); + + public IPipeline GetOrBuildPipeline(FirebirdEvent type, Type argsType, object master); + + public IPipeline? GetPipeline(FirebirdEvent type, Type argsType); + + public void DestroyPipeline(FirebirdEvent type, object master); + } +} diff --git a/FireBird2D.Interfaces/IGame.cs b/FireBird2D.Interfaces/Interfaces/IGame.cs similarity index 82% rename from FireBird2D.Interfaces/IGame.cs rename to FireBird2D.Interfaces/Interfaces/IGame.cs index 63de045..85aca03 100644 --- a/FireBird2D.Interfaces/IGame.cs +++ b/FireBird2D.Interfaces/Interfaces/IGame.cs @@ -9,5 +9,6 @@ namespace Firebird2D.Interfaces { public interface IGame { + public IEventBus EventBus { get; set; } } } diff --git a/Firebird2D.EventPipelines/I_Pipeline.cs b/FireBird2D.Interfaces/Interfaces/IPipeline.cs similarity index 93% rename from Firebird2D.EventPipelines/I_Pipeline.cs rename to FireBird2D.Interfaces/Interfaces/IPipeline.cs index 05b41e1..1a457df 100644 --- a/Firebird2D.EventPipelines/I_Pipeline.cs +++ b/FireBird2D.Interfaces/Interfaces/IPipeline.cs @@ -4,12 +4,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Firebird2D.EventPipelines +namespace Firebird2D.Interfaces { /// /// Interface for the Firebird event Pipeline /// - public interface I_Pipeline + public interface IPipeline { /// /// Class witch owns the Pipeline and has the right to send events or delete the pipeline diff --git a/Firebird2D.EventPipelines/EventBus.cs b/Firebird2D.EventPipelines/EventBus.cs index 7838325..08ef83e 100644 --- a/Firebird2D.EventPipelines/EventBus.cs +++ b/Firebird2D.EventPipelines/EventBus.cs @@ -1,4 +1,6 @@ -using System; +using Firebird2D.Datatypes; +using Firebird2D.Interfaces; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -9,15 +11,15 @@ namespace Firebird2D.EventPipelines /// /// EventBus manages event pipelines and allows registering callbacks (hooks) if a pipeline is not Build Yet, as well as creating, retrieving, and destroying pipelines. /// - public class EventBus + public class EventBus : IEventBus { // Dictionary that stores various pipelines for specific FirebirdEvents. // The key is the event, and the value is the corresponding pipeline. - private Dictionary pipelines = new(); + private Dictionary pipelines = new(); // Dictionary that stores a list of callbacks for each FirebirdEvent. // These callbacks will be invoked when the event's pipeline is build. - private Dictionary>> pendingHooks = new(); + private Dictionary>> pendingHooks = new(); /// /// Registers a callback (hook) for a specific event. The callback will be invoked when the pipeline for this event is built. @@ -25,7 +27,7 @@ namespace Firebird2D.EventPipelines /// The function to be called when the pipeline for the event is built. /// The event for which the callback should be registered. /// Thrown when the callback is null. - public void OnPipelineIsBuild(Action callback, FirebirdEvent type) + public void OnPipelineIsBuild(Action callback, FirebirdEvent type) { if (callback == null) throw new ArgumentNullException(nameof(callback)); @@ -47,12 +49,12 @@ namespace Firebird2D.EventPipelines /// The type of the arguments to be passed to the pipeline. /// The master object used when creating the pipeline. /// The pipeline for the given event. - public I_Pipeline GetOrBuildPipeline(FirebirdEvent type, Type argsType, object master) + public IPipeline GetOrBuildPipeline(FirebirdEvent type, Type argsType, object master) { if (pipelines.TryGetValue(type, out var pipeline)) return pipeline; var genericPipelineType = typeof(Pipeline<>).MakeGenericType(argsType); - var pipelineInstance = (I_Pipeline)Activator.CreateInstance(genericPipelineType, master)!; + var pipelineInstance = (IPipeline)Activator.CreateInstance(genericPipelineType, master)!; pipelines[type] = pipelineInstance; return pipelineInstance; } @@ -63,7 +65,7 @@ namespace Firebird2D.EventPipelines /// The event for which the pipeline should be retrieved. /// The type of the arguments for the pipeline. /// The pipeline for the event, or null if it does not exist. - public I_Pipeline? GetPipeline(FirebirdEvent type, Type argsType) + public IPipeline? GetPipeline(FirebirdEvent type, Type argsType) { if (!pipelines.TryGetValue(type, out var pipeline)) return null; return pipeline; diff --git a/Firebird2D.EventPipelines/Firebird2D.EventPipelines.csproj b/Firebird2D.EventPipelines/Firebird2D.EventPipelines.csproj index fc8481e..5a34ce2 100644 --- a/Firebird2D.EventPipelines/Firebird2D.EventPipelines.csproj +++ b/Firebird2D.EventPipelines/Firebird2D.EventPipelines.csproj @@ -10,4 +10,8 @@ + + + + diff --git a/Firebird2D.EventPipelines/Pipeline.cs b/Firebird2D.EventPipelines/Pipeline.cs index 2d6156f..8b979f6 100644 --- a/Firebird2D.EventPipelines/Pipeline.cs +++ b/Firebird2D.EventPipelines/Pipeline.cs @@ -1,4 +1,5 @@  +using Firebird2D.Interfaces; using System; using System.Collections.Generic; using System.Linq; @@ -12,7 +13,7 @@ namespace Firebird2D.EventPipelines /// Eventpypeline which transports an event to every Subscyber /// /// Event Arguments for the Pipeline event - public class Pipeline : I_Pipeline where T : EventArgs + public class Pipeline : IPipeline where T : EventArgs { /// /// Class witch owns the Pipeline and has the right to send events or delete the pipeline diff --git a/Firebird2D.KeyMapper/KeyMapper.cs b/Firebird2D.KeyMapper/KeyMapper.cs index f0ae915..03859ff 100644 --- a/Firebird2D.KeyMapper/KeyMapper.cs +++ b/Firebird2D.KeyMapper/KeyMapper.cs @@ -3,6 +3,8 @@ using Firebird2D.EventPipelines; using SFML.Window; using System.Runtime.CompilerServices; using System.Text.Json; +using Firebird2D.Interfaces; +using Firebird2D.Datatypes; namespace Firebird2D.KeyMapping { @@ -11,7 +13,7 @@ namespace Firebird2D.KeyMapping /// public class KeyMapper { - private EventBus eventBus; + private readonly IEventBus eventBus; // Stores registered input events by name. private Dictionary inputEvents = []; @@ -23,9 +25,9 @@ namespace Firebird2D.KeyMapping private Dictionary inputMapping = []; // Caches active pipelines for performance. - private Dictionary cachedPipelines = []; + private Dictionary cachedPipelines = []; - public KeyMapper(EventBus eventBus) + public KeyMapper(IEventBus eventBus) { if (eventBus == null) throw new NullReferenceException(nameof(eventBus)); this.eventBus = eventBus; @@ -70,7 +72,7 @@ namespace Firebird2D.KeyMapping if (!inputMapping.TryGetValue(EventName, out var firebirdEvent)) return; if (!eventTypes.TryGetValue(EventName, out var type)) return; - I_Pipeline? pipeline = eventBus.GetPipeline(firebirdEvent, type); + IPipeline? pipeline = eventBus.GetPipeline(firebirdEvent, type); if (pipeline != null) { @@ -92,7 +94,7 @@ namespace Firebird2D.KeyMapping { if (!eventTypes.TryGetValue(EventName, out var type)) return; - I_Pipeline pipeline = eventBus.GetOrBuildPipeline(eventNumber, type, this); + IPipeline pipeline = eventBus.GetOrBuildPipeline(eventNumber, type, this); pipeline.Subscribe(inputEvents[EventName]); } diff --git a/Firebird2D.Logger/Firebird2D.Logger.csproj b/Firebird2D.Logger/Firebird2D.Logger.csproj index 0e7576a..fa71b7a 100644 --- a/Firebird2D.Logger/Firebird2D.Logger.csproj +++ b/Firebird2D.Logger/Firebird2D.Logger.csproj @@ -6,8 +6,4 @@ enable - - - - diff --git a/Firebird2D.Logger/GameLogger.cs b/Firebird2D.Logger/GameLogger.cs index 60f48cb..3f49830 100644 --- a/Firebird2D.Logger/GameLogger.cs +++ b/Firebird2D.Logger/GameLogger.cs @@ -1,4 +1,4 @@ -using Firebird2D.Interfaces; + using System; using System.Collections.Generic; using System.Linq; diff --git a/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfo.cs b/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfo.cs index cb3582b..1e4282e 100644 --- a/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfo.cs +++ b/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.Logger")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+51493135dfc8aa77e4285d80e32310c1f02be5b0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766b2e414b907163c1fd34f3b22b1aa8ae51a9e2")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.Logger")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.Logger")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfoInputs.cache b/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfoInputs.cache index ac2441c..289bc57 100644 --- a/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfoInputs.cache +++ b/Firebird2D.Logger/obj/Debug/net8.0/Firebird2D.Logger.AssemblyInfoInputs.cache @@ -1 +1 @@ -112eff4245416fbc9f49d96f1eeefaf18aad8e2f51adfc91c39b7f223783ed14 +efa2647d90b080a7b266fbfa5ece1bdf184aafb101e1daf94499748c54e5b462 diff --git a/Firebird2D.Logger/obj/Firebird2D.Logger.csproj.nuget.dgspec.json b/Firebird2D.Logger/obj/Firebird2D.Logger.csproj.nuget.dgspec.json index 0b859c4..1ce3d90 100644 --- a/Firebird2D.Logger/obj/Firebird2D.Logger.csproj.nuget.dgspec.json +++ b/Firebird2D.Logger/obj/Firebird2D.Logger.csproj.nuget.dgspec.json @@ -4,14 +4,14 @@ "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj": {} }, "projects": { - "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { + "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", - "projectName": "Firebird2D.Interfaces", - "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", + "projectUniqueName": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", + "projectName": "Firebird2D.Logger", + "projectPath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", "packagesPath": "C:\\Users\\wayan\\.nuget\\packages\\", - "outputPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\obj\\", + "outputPath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\obj\\", "projectStyle": "PackageReference", "fallbackFolders": [ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" @@ -70,77 +70,6 @@ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json" } } - }, - "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", - "projectName": "Firebird2D.Logger", - "projectPath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", - "packagesPath": "C:\\Users\\wayan\\.nuget\\packages\\", - "outputPath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\wayan\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net8.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\Infrastructure\\Packages": {}, - "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\References": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "projectReferences": { - "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { - "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj" - } - } - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json" - } - } } } } \ No newline at end of file diff --git a/Firebird2D.Logger/obj/project.assets.json b/Firebird2D.Logger/obj/project.assets.json index a42ba01..0d852b0 100644 --- a/Firebird2D.Logger/obj/project.assets.json +++ b/Firebird2D.Logger/obj/project.assets.json @@ -1,30 +1,11 @@ { "version": 3, "targets": { - "net8.0": { - "Firebird2D.Interfaces/1.0.0": { - "type": "project", - "framework": ".NETCoreApp,Version=v8.0", - "compile": { - "bin/placeholder/Firebird2D.Interfaces.dll": {} - }, - "runtime": { - "bin/placeholder/Firebird2D.Interfaces.dll": {} - } - } - } - }, - "libraries": { - "Firebird2D.Interfaces/1.0.0": { - "type": "project", - "path": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj", - "msbuildProject": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj" - } + "net8.0": {} }, + "libraries": {}, "projectFileDependencyGroups": { - "net8.0": [ - "Firebird2D.Interfaces >= 1.0.0" - ] + "net8.0": [] }, "packageFolders": { "C:\\Users\\wayan\\.nuget\\packages\\": {}, @@ -60,11 +41,7 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": { - "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { - "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj" - } - } + "projectReferences": {} } }, "warningProperties": { diff --git a/Firebird2D.Logger/obj/project.nuget.cache b/Firebird2D.Logger/obj/project.nuget.cache index 3d6821f..c784785 100644 --- a/Firebird2D.Logger/obj/project.nuget.cache +++ b/Firebird2D.Logger/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "DP1d2KMGQuQ=", + "dgSpecHash": "tcqAw3429hg=", "success": true, "projectFilePath": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj", "expectedPackageFiles": [], diff --git a/Firebird2D.ModulLoader/Firebird2D.ModulLoading.csproj b/Firebird2D.ModulLoader/Firebird2D.ModulLoading.csproj new file mode 100644 index 0000000..f66d41b --- /dev/null +++ b/Firebird2D.ModulLoader/Firebird2D.ModulLoading.csproj @@ -0,0 +1,21 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + PreserveNewest + + + + diff --git a/Firebird2D.ModulLoader/ModulLoader.cs b/Firebird2D.ModulLoader/ModulLoader.cs new file mode 100644 index 0000000..8b1b5aa --- /dev/null +++ b/Firebird2D.ModulLoader/ModulLoader.cs @@ -0,0 +1,99 @@ +using Firebird2D.Datatypes; +using Firebird2D.Interfaces; +using Firebird2D.Logger; +using Firebird2D.Requirement; +using System.ComponentModel.DataAnnotations; +using System.Reflection; +using System.Xml.Serialization; + +namespace Firebird2D.ModulLoading +{ + public struct Modul + { + public ModuleType ModuleType { get; set; } + public string Name { get; set; } + public string RelativePath { get; set; } + } + + + [XmlRoot("Moduls")] + public class ModulList + { + [XmlArrayItem("Modul")] + public List mods = []; + } + + public class ModulLoader + { + private readonly IGame gameInstance; + + private ModulList? modulList = null; + + + public ModulLoader(IGame gameInstance) + { + this.gameInstance = gameInstance; + } + + public void LoadModules() + { + DeserialiseModulList(); + if (modulList == null) return; + List eventModul = modulList.mods.Where(m => m.ModuleType == ModuleType.EventSystem).ToList(); + + if (eventModul.Count > 1) GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Warning, $"More then one EventModul defined first modul ist loaded"); + + if (eventModul.Count != 0) + { + try + { + Assembly eventAssembly = Assembly.Load(eventModul[0].RelativePath); + + GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Info, $"F{eventModul[0].Name} loaded."); + + LinkEventAssembly(eventAssembly); + } + catch(Exception ex) + { + GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Warning, $"Failed to load {eventModul[0].Name}, with exception {ex.Message}"); + } + } + else + GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Warning, $"More then one EventModul defined first modul ist loaded"); + + + + + if (modulList.mods.Count == 0) return; + + + } + + private void LinkEventAssembly(Assembly assembly) + { + Type? type = assembly.GetTypes().FirstOrDefault(t => typeof(IEventBus).IsAssignableFrom(t) && !t.IsInterface); + Require.NotNull(type,"type",0); + + IEventBus? eventBus = Activator.CreateInstance(type) as IEventBus; + + Require.NotNull(eventBus,"eventBus",0); + gameInstance.EventBus = eventBus; + } + + private void DeserialiseModulList() + { + try + { + using (FileStream file = new FileStream("Modules/Moduls.xml", FileMode.Open)) + { + XmlSerializer xmlSerializer = new XmlSerializer(typeof(ModulList)); + modulList = (ModulList?)xmlSerializer.Deserialize(file); + } + } + catch(Exception ex) { + modulList = null; + GameLogger.GetInstance(0).Log("ModulLoader",LogType.Warning, $"Modul file not existing or invalid: {ex.Message}"); + } + } + } +} diff --git a/Firebird2D.ModulLoader/Modules/Moduls.xml b/Firebird2D.ModulLoader/Modules/Moduls.xml new file mode 100644 index 0000000..c79eab3 --- /dev/null +++ b/Firebird2D.ModulLoader/Modules/Moduls.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/Firebird2D.Requirement/Require.cs b/Firebird2D.Requirement/Require.cs index a541080..fb76127 100644 --- a/Firebird2D.Requirement/Require.cs +++ b/Firebird2D.Requirement/Require.cs @@ -6,7 +6,7 @@ namespace Firebird2D.Requirement { public class Require { - public static void NotNull(object input, string name, int loggerInstanceNumber, + public static void NotNull(object? input, string name, int loggerInstanceNumber, [CallerMemberName] string callerName = "", [CallerFilePath] string callerPath = "", [CallerLineNumber] int callerLineNumber = 0) diff --git a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfo.cs b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfo.cs index bd35599..a3fa395 100644 --- a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfo.cs +++ b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.Requirement")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+51493135dfc8aa77e4285d80e32310c1f02be5b0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766b2e414b907163c1fd34f3b22b1aa8ae51a9e2")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.Requirement")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.Requirement")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfoInputs.cache b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfoInputs.cache index d9504b1..6f5ea1e 100644 --- a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfoInputs.cache +++ b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.AssemblyInfoInputs.cache @@ -1 +1 @@ -40d7aae7c923ca3d4454d246c52e8a64820bf9653fadbe515530b8637584741e +d930c16e48000b60c3592ab43be941a4270796fd5c53910ce4333c8a429ab31e diff --git a/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.assets.cache b/Firebird2D.Requirement/obj/Debug/net8.0/Firebird2D.Requirement.assets.cache index 3b15747bae1d9348fcbbed3787165fd5a8fdfb8a..85afab9414eeb6717e09fe82a4503d0c2e9b3911 100644 GIT binary patch delta 20 ccmaFM^n`JO2IGT?hRPEiI3|X)OmyG@091?zasU7T delta 169 zcmaFD_?Bsc29p-!L__6?4(t;{TIv}Y7#K|T^kUpHi&C93i&BhS^gQ!QQj5|OlT(Yq zqDknYddbBFMfq7wK%F1}G6BS9262FZ1&I0lO5IaS0uqz66Vp>YQ$#_gW0)fhR3rvh S6_#35oSC1;YN%(RX8-`$^e?ag diff --git a/Firebird2D.Requirement/obj/Firebird2D.Requirement.csproj.nuget.dgspec.json b/Firebird2D.Requirement/obj/Firebird2D.Requirement.csproj.nuget.dgspec.json index a0e3149..ecf7b85 100644 --- a/Firebird2D.Requirement/obj/Firebird2D.Requirement.csproj.nuget.dgspec.json +++ b/Firebird2D.Requirement/obj/Firebird2D.Requirement.csproj.nuget.dgspec.json @@ -4,73 +4,6 @@ "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Firebird2D.Requirement.csproj": {} }, "projects": { - "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", - "projectName": "Firebird2D.Interfaces", - "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", - "packagesPath": "C:\\Users\\wayan\\.nuget\\packages\\", - "outputPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\wayan\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net8.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\Infrastructure\\Packages": {}, - "C:\\TwinCAT\\Functions\\TE2000-HMI-Engineering\\References": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json" - } - } - }, "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\Firebird2D.Logger.csproj": { "version": "1.0.0", "restore": { @@ -101,11 +34,7 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": { - "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { - "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj" - } - } + "projectReferences": {} } }, "warningProperties": { diff --git a/Firebird2D.Requirement/obj/project.assets.json b/Firebird2D.Requirement/obj/project.assets.json index 66e28ea..59992ea 100644 --- a/Firebird2D.Requirement/obj/project.assets.json +++ b/Firebird2D.Requirement/obj/project.assets.json @@ -2,22 +2,9 @@ "version": 3, "targets": { "net8.0": { - "Firebird2D.Interfaces/1.0.0": { - "type": "project", - "framework": ".NETCoreApp,Version=v8.0", - "compile": { - "bin/placeholder/Firebird2D.Interfaces.dll": {} - }, - "runtime": { - "bin/placeholder/Firebird2D.Interfaces.dll": {} - } - }, "Firebird2D.Logger/1.0.0": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", - "dependencies": { - "Firebird2D.Interfaces": "1.0.0" - }, "compile": { "bin/placeholder/Firebird2D.Logger.dll": {} }, @@ -28,11 +15,6 @@ } }, "libraries": { - "Firebird2D.Interfaces/1.0.0": { - "type": "project", - "path": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj", - "msbuildProject": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj" - }, "Firebird2D.Logger/1.0.0": { "type": "project", "path": "../Firebird2D.Logger/Firebird2D.Logger.csproj", diff --git a/Firebird2D.Requirement/obj/project.nuget.cache b/Firebird2D.Requirement/obj/project.nuget.cache index 7b6690a..9693734 100644 --- a/Firebird2D.Requirement/obj/project.nuget.cache +++ b/Firebird2D.Requirement/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "UvsIOKD4Be8=", + "dgSpecHash": "Cnwm1cp4iIM=", "success": true, "projectFilePath": "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Firebird2D.Requirement.csproj", "expectedPackageFiles": [], diff --git a/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfo.cs b/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfo.cs index f15009f..fb3717f 100644 --- a/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfo.cs +++ b/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.SFMLExtensions")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+51493135dfc8aa77e4285d80e32310c1f02be5b0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766b2e414b907163c1fd34f3b22b1aa8ae51a9e2")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.SFMLExtensions")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.SFMLExtensions")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfoInputs.cache b/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfoInputs.cache index b33eb8a..2ad5d18 100644 --- a/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfoInputs.cache +++ b/Firebird2D.SFMLExtensions/obj/Debug/net8.0/Firebird2D.SFMLExtensions.AssemblyInfoInputs.cache @@ -1 +1 @@ -fa9b95393a1d4670d93070836ffe1fceddd4879784341915bf008e4e9f86cbb7 +f626d59756ad26a054c1d1f23d861aa33ef4951843a64a2988b4cd5ed949a8c9 diff --git a/Firebird2D.sln b/Firebird2D.sln index 801de71..6f0066f 100644 --- a/Firebird2D.sln +++ b/Firebird2D.sln @@ -20,7 +20,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Firebird2D.EventPipelines", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Firebird2D.KeyMapping", "Firebird2D.KeyMapper\Firebird2D.KeyMapping.csproj", "{38CCA723-C113-4E44-B074-F9B709B0EEB4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebird2D.Interfaces", "FireBird2D.Interfaces\Firebird2D.Interfaces.csproj", "{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Firebird2D.DataypesAndInterfaces", "FireBird2D.Interfaces\Firebird2D.DataypesAndInterfaces.csproj", "{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebird2D.ModulLoading", "Firebird2D.ModulLoader\Firebird2D.ModulLoading.csproj", "{917F395C-6C2E-4F23-9ED1-B123E5F272E9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -56,6 +58,10 @@ Global {7F6F9690-3BD3-4D44-BE62-3A7282DA671D}.Debug|Any CPU.Build.0 = Debug|Any CPU {7F6F9690-3BD3-4D44-BE62-3A7282DA671D}.Release|Any CPU.ActiveCfg = Release|Any CPU {7F6F9690-3BD3-4D44-BE62-3A7282DA671D}.Release|Any CPU.Build.0 = Release|Any CPU + {917F395C-6C2E-4F23-9ED1-B123E5F272E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {917F395C-6C2E-4F23-9ED1-B123E5F272E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {917F395C-6C2E-4F23-9ED1-B123E5F272E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {917F395C-6C2E-4F23-9ED1-B123E5F272E9}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfo.cs b/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfo.cs index a33ff92..5288567 100644 --- a/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfo.cs +++ b/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+51493135dfc8aa77e4285d80e32310c1f02be5b0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766b2e414b907163c1fd34f3b22b1aa8ae51a9e2")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfoInputs.cache b/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfoInputs.cache index 2565287..87a94dc 100644 --- a/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfoInputs.cache +++ b/Firebird2D/obj/Debug/net8.0/Firebird2D.AssemblyInfoInputs.cache @@ -1 +1 @@ -9d9bedf3152c73b5d358c9740a2af87d4522a5c313195cccdcb155cc37e3b9c4 +b58b950687c3bc10dc33b3f06fb727341820dba7c020e683d062fa25981537d0 diff --git a/Firebird2D/obj/Debug/net8.0/Firebird2D.assets.cache b/Firebird2D/obj/Debug/net8.0/Firebird2D.assets.cache index e8747d34c0ad1fb53dd907349ecfef4d57af6f63..87db385bbda46a431907cc1b1d5ccec053989963 100644 GIT binary patch delta 86 zcmZ48$#SrhWr7CVtmzC4j0}?n+LSg1e4NJUFxhFk3b#vQNn&L|YO!Np%I37`nz`x< hZka`?Nts0{MlO0tlAd`bsYPjt$*IMxhI$5i1^_XO9uNQk delta 63 zcmX@u$+EhWWr7A<|8xchMuy1(ZAu#hK2Bpao$NGSWpm+l&0HB#x6Go{q|BleBNsi- Typq(Sw8Z4pVpc;v13d!(!bufK diff --git a/Firebird2D/obj/Firebird2D.csproj.nuget.dgspec.json b/Firebird2D/obj/Firebird2D.csproj.nuget.dgspec.json index 897d85e..1bbc801 100644 --- a/Firebird2D/obj/Firebird2D.csproj.nuget.dgspec.json +++ b/Firebird2D/obj/Firebird2D.csproj.nuget.dgspec.json @@ -34,7 +34,11 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": {} + "projectReferences": { + "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj": { + "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj" + } + } } }, "warningProperties": { @@ -77,12 +81,12 @@ } } }, - "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { + "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", - "projectName": "Firebird2D.Interfaces", - "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj", + "projectUniqueName": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj", + "projectName": "Firebird2D.DataypesAndInterfaces", + "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj", "packagesPath": "C:\\Users\\wayan\\.nuget\\packages\\", "outputPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\obj\\", "projectStyle": "PackageReference", @@ -245,11 +249,7 @@ "frameworks": { "net8.0": { "targetAlias": "net8.0", - "projectReferences": { - "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj": { - "projectPath": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.Interfaces.csproj" - } - } + "projectReferences": {} } }, "warningProperties": { diff --git a/Firebird2D/obj/project.assets.json b/Firebird2D/obj/project.assets.json index 349054a..1d65aef 100644 --- a/Firebird2D/obj/project.assets.json +++ b/Firebird2D/obj/project.assets.json @@ -1043,10 +1043,21 @@ "buildTransitive/net8.0/System.Text.Json.targets": {} } }, + "Firebird2D.DataypesAndInterfaces/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/Firebird2D.DataypesAndInterfaces.dll": {} + }, + "runtime": { + "bin/placeholder/Firebird2D.DataypesAndInterfaces.dll": {} + } + }, "Firebird2D.EventPipelines/1.0.0": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", "dependencies": { + "Firebird2D.DataypesAndInterfaces": "1.0.0", "SFML.Net": "2.6.1" }, "compile": { @@ -1056,16 +1067,6 @@ "bin/placeholder/Firebird2D.EventPipelines.dll": {} } }, - "Firebird2D.Interfaces/1.0.0": { - "type": "project", - "framework": ".NETCoreApp,Version=v8.0", - "compile": { - "bin/placeholder/Firebird2D.Interfaces.dll": {} - }, - "runtime": { - "bin/placeholder/Firebird2D.Interfaces.dll": {} - } - }, "Firebird2D.KeyMapping/1.0.0": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", @@ -1082,9 +1083,6 @@ "Firebird2D.Logger/1.0.0": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", - "dependencies": { - "Firebird2D.Interfaces": "1.0.0" - }, "compile": { "bin/placeholder/Firebird2D.Logger.dll": {} }, @@ -1798,16 +1796,16 @@ "useSharedDesignerContext.txt" ] }, + "Firebird2D.DataypesAndInterfaces/1.0.0": { + "type": "project", + "path": "../FireBird2D.Interfaces/Firebird2D.DataypesAndInterfaces.csproj", + "msbuildProject": "../FireBird2D.Interfaces/Firebird2D.DataypesAndInterfaces.csproj" + }, "Firebird2D.EventPipelines/1.0.0": { "type": "project", "path": "../Firebird2D.EventPipelines/Firebird2D.EventPipelines.csproj", "msbuildProject": "../Firebird2D.EventPipelines/Firebird2D.EventPipelines.csproj" }, - "Firebird2D.Interfaces/1.0.0": { - "type": "project", - "path": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj", - "msbuildProject": "../FireBird2D.Interfaces/Firebird2D.Interfaces.csproj" - }, "Firebird2D.KeyMapping/1.0.0": { "type": "project", "path": "../Firebird2D.KeyMapper/Firebird2D.KeyMapping.csproj", diff --git a/Firebird2D/obj/project.nuget.cache b/Firebird2D/obj/project.nuget.cache index 9d24d44..0abace2 100644 --- a/Firebird2D/obj/project.nuget.cache +++ b/Firebird2D/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "62iPCpiCzS8=", + "dgSpecHash": "reTuevwexX0=", "success": true, "projectFilePath": "G:\\Coding\\Firebird2D\\Firebird2D\\Firebird2D.csproj", "expectedPackageFiles": [