Updated KD and ModulLoader

This commit is contained in:
Mueller Wayan
2025-05-18 18:05:23 +02:00
parent 47ddfed9bc
commit 1862530728
38 changed files with 602 additions and 360 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+189 -227
View File
@@ -2,14 +2,6 @@
"Version": 1, "Version": 1,
"WorkspaceRootPath": "G:\\Coding\\Firebird2D\\", "WorkspaceRootPath": "G:\\Coding\\Firebird2D\\",
"Documents": [ "Documents": [
{
"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}", "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}" "RelativeMoniker": "D:0:0:{917F395C-6C2E-4F23-9ED1-B123E5F272E9}|Firebird2D.ModulLoader\\Firebird2D.ModulLoading.csproj|solutionrelative:firebird2d.modulloader\\modulloader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@@ -19,24 +11,60 @@
"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}" "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}", "AbsoluteMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\interfaces\\iextensionbase.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}" "RelativeMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|solutionrelative:firebird2d.interfaces\\interfaces\\iextensionbase.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}", "AbsoluteMoniker": "D:0:0:{917F395C-6C2E-4F23-9ED1-B123E5F272E9}|Firebird2D.ModulLoader\\Firebird2D.ModulLoading.csproj|g:\\coding\\firebird2d\\firebird2d.modulloader\\moduletype.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}" "RelativeMoniker": "D:0:0:{917F395C-6C2E-4F23-9ED1-B123E5F272E9}|Firebird2D.ModulLoader\\Firebird2D.ModulLoading.csproj|solutionrelative:firebird2d.modulloader\\moduletype.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}", "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:{917F395C-6C2E-4F23-9ED1-B123E5F272E9}|Firebird2D.ModulLoader\\Firebird2D.ModulLoading.csproj|solutionrelative:firebird2d.modulloader\\modules\\moduls.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}" "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:{106D6D21-E153-476B-AE52-4B2C899F6928}|Firebird2D.Logger\\Firebird2D.Logger.csproj|g:\\coding\\firebird2d\\firebird2d.logger\\gamelogger.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\\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}" "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.DataypesAndInterfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\datatypes\\moduletype.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:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|solutionrelative:firebird2d.interfaces\\datatypes\\moduletype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "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:{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:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\interfaces\\ikeymapper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|solutionrelative:firebird2d.interfaces\\interfaces\\ikeymapper.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:{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:{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:{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:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|g:\\coding\\firebird2d\\firebird2d.interfaces\\firebird2d.dataypesandinterfaces.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
"RelativeMoniker": "D:0:0:{7F6F9690-3BD3-4D44-BE62-3A7282DA671D}|FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj|solutionrelative:firebird2d.interfaces\\firebird2d.dataypesandinterfaces.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
},
{
"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:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|g:\\coding\\firebird2d\\firebird2d\\core\\inputmapper.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}",
@@ -50,46 +78,14 @@
"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}", "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}" "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:{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:{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}|", "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}|" "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}",
"RelativeMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|solutionrelative:firebird2d.eventpipelines\\eventarguments\\firebirdjoystickbuttoneventargs.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\\eventarguments\\firebirdkeyeventargs.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|solutionrelative:firebird2d.eventpipelines\\eventarguments\\firebirdkeyeventargs.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\\eventarguments\\firebirdmousebuttoneventargs.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|solutionrelative:firebird2d.eventpipelines\\eventarguments\\firebirdmousebuttoneventargs.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{ {
"AbsoluteMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|g:\\coding\\firebird2d\\firebird2d\\core\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|g:\\coding\\firebird2d\\firebird2d\\core\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|solutionrelative:firebird2d\\core\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|solutionrelative:firebird2d\\core\\mainwindow.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\\eventarguments\\inputeventtype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{FB2B6835-02BF-4AE7-B85F-290472787ED3}|Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj|solutionrelative:firebird2d.eventpipelines\\eventarguments\\inputeventtype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{ {
"AbsoluteMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|g:\\coding\\firebird2d\\firebird2d\\game.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "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}" "RelativeMoniker": "D:0:0:{487A2EF7-6F5F-4F03-B355-82EF8BA45530}|Firebird2D\\Firebird2D.csproj|solutionrelative:firebird2d\\game.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@@ -106,63 +102,63 @@
"DocumentGroups": [ "DocumentGroups": [
{ {
"DockedWidth": 200, "DockedWidth": 200,
"SelectedChildIndex": 13, "SelectedChildIndex": 14,
"Children": [ "Children": [
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 8, "DocumentIndex": 3,
"Title": "ModuleType.cs", "Title": "ModuleType.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Datatypes\\ModuleType.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\ModuleType.cs",
"RelativeDocumentMoniker": "FireBird2D.Interfaces\\Datatypes\\ModuleType.cs", "RelativeDocumentMoniker": "Firebird2D.ModulLoader\\ModuleType.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Datatypes\\ModuleType.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\ModuleType.cs",
"RelativeToolTip": "FireBird2D.Interfaces\\Datatypes\\ModuleType.cs", "RelativeToolTip": "Firebird2D.ModulLoader\\ModuleType.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAVAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAACQAAABAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-22T16:50:37.241Z", "WhenOpened": "2025-05-18T14:23:50.586Z",
"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": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 2, "DocumentIndex": 2,
"Title": "ModulLoader.cs", "Title": "IExtensionBase.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\ModulLoader.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IExtensionBase.cs",
"RelativeDocumentMoniker": "Firebird2D.ModulLoader\\ModulLoader.cs", "RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IExtensionBase.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\ModulLoader.cs", "ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IExtensionBase.cs",
"RelativeToolTip": "Firebird2D.ModulLoader\\ModulLoader.cs", "RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IExtensionBase.cs",
"ViewState": "AQIAABsAAAAAAAAAAAAowEMAAAAAAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAAA0AAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-22T16:25:54.624Z", "WhenOpened": "2025-05-18T14:16:38.035Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "IKeyMapper.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IKeyMapper.cs",
"RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IKeyMapper.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IKeyMapper.cs",
"RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IKeyMapper.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAABMAAAAmAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-05-18T11:27:47.81Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 10, "DocumentIndex": 10,
"Title": "ISpatial.cs", "Title": "EventBus.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Datatypes\\ISpatial.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventBus.cs",
"RelativeDocumentMoniker": "Firebird2D\\Datatypes\\ISpatial.cs", "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventBus.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D\\Datatypes\\ISpatial.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventBus.cs",
"RelativeToolTip": "Firebird2D\\Datatypes\\ISpatial.cs", "RelativeToolTip": "Firebird2D.EventPipelines\\EventBus.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAAEAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-22T16:22:51.196Z", "WhenOpened": "2025-05-18T08:52:39.396Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 13, "DocumentIndex": 7,
"Title": "FirebirdEvent.cs", "Title": "FirebirdEvent.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Datatypes\\FirebirdEvent.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Datatypes\\FirebirdEvent.cs",
"RelativeDocumentMoniker": "FireBird2D.Interfaces\\Datatypes\\FirebirdEvent.cs", "RelativeDocumentMoniker": "FireBird2D.Interfaces\\Datatypes\\FirebirdEvent.cs",
@@ -175,33 +171,72 @@
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 1, "DocumentIndex": 12,
"Title": "IEventBus.cs", "Title": "IEventBus.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IEventBus.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IEventBus.cs",
"RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IEventBus.cs", "RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IEventBus.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IEventBus.cs", "ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IEventBus.cs",
"RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IEventBus.cs", "RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IEventBus.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAABIAAABHAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAABAAAAA9AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-22T16:13:30.421Z", "WhenOpened": "2025-04-22T16:13:30.421Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 14, "DocumentIndex": 11,
"Title": "IPipeline.cs", "Title": "IPipeline.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IPipeline.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IPipeline.cs",
"RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IPipeline.cs", "RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IPipeline.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IPipeline.cs", "ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IPipeline.cs",
"RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IPipeline.cs", "RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IPipeline.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAABIAAAAzAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAACUAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-22T16:09:44.914Z", "WhenOpened": "2025-04-22T16:09:44.914Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 15, "DocumentIndex": 1,
"Title": "IGame.cs",
"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": "AQIAAAAAAAAAAAAAAAAAAAoAAAAaAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-21T16:58:17.745Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"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": "AQIAAAAAAAAAAAAAAAAAAEUAAAAJAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-17T17:56:23.324Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 9,
"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": "AQIAAAAAAAAAAAAAAAAAABcAAAA5AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-18T07:43:14.35Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "FloatRectangeExtension.cs", "Title": "FloatRectangeExtension.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.SFMLExtensions\\FloatRectangeExtension.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.SFMLExtensions\\FloatRectangeExtension.cs",
"RelativeDocumentMoniker": "Firebird2D.SFMLExtensions\\FloatRectangeExtension.cs", "RelativeDocumentMoniker": "Firebird2D.SFMLExtensions\\FloatRectangeExtension.cs",
@@ -214,33 +249,59 @@
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 11, "DocumentIndex": 13,
"Title": "ILogger.cs", "Title": "Pipeline.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\ILogger.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\Pipeline.cs",
"RelativeDocumentMoniker": "Firebird2D.Logger\\ILogger.cs", "RelativeDocumentMoniker": "Firebird2D.EventPipelines\\Pipeline.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\ILogger.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\Pipeline.cs",
"RelativeToolTip": "Firebird2D.Logger\\ILogger.cs", "RelativeToolTip": "Firebird2D.EventPipelines\\Pipeline.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAANAAAA", "ViewState": "AQIAABwAAAAAAAAAAAAQwAkAAAAjAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-21T17:12:31.494Z", "WhenOpened": "2025-04-17T19:45:23.048Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 3, "DocumentIndex": 6,
"Title": "IGame.cs", "Title": "Moduls.xml",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IGame.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\Modules\\Moduls.xml",
"RelativeDocumentMoniker": "FireBird2D.Interfaces\\Interfaces\\IGame.cs", "RelativeDocumentMoniker": "Firebird2D.ModulLoader\\Modules\\Moduls.xml",
"ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Interfaces\\IGame.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.ModulLoader\\Modules\\Moduls.xml",
"RelativeToolTip": "FireBird2D.Interfaces\\Interfaces\\IGame.cs", "RelativeToolTip": "Firebird2D.ModulLoader\\Modules\\Moduls.xml",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAsAAAAtAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAAAsAAAAJAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
"WhenOpened": "2025-04-21T16:58:17.745Z", "WhenOpened": "2025-04-22T16:46:40.211Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 9, "DocumentIndex": 0,
"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": "AQIAAGkAAAAAAAAAAAAIwCkAAAAJAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-22T16:25:54.624Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 14,
"Title": "Firebird2D.DataypesAndInterfaces",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj",
"RelativeDocumentMoniker": "FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj",
"ToolTip": "G:\\Coding\\Firebird2D\\FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj",
"RelativeToolTip": "FireBird2D.Interfaces\\Firebird2D.DataypesAndInterfaces.csproj",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
"WhenOpened": "2025-05-18T08:20:59.511Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 16,
"Title": "InputMapper.cs", "Title": "InputMapper.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Core\\InputMapper.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Core\\InputMapper.cs",
"RelativeDocumentMoniker": "Firebird2D\\Core\\InputMapper.cs", "RelativeDocumentMoniker": "Firebird2D\\Core\\InputMapper.cs",
@@ -266,33 +327,33 @@
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 0, "DocumentIndex": 18,
"Title": "KeyMapper.cs", "Title": "ILogger.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\KeyMapper.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\ILogger.cs",
"RelativeDocumentMoniker": "Firebird2D.KeyMapper\\KeyMapper.cs", "RelativeDocumentMoniker": "Firebird2D.Logger\\ILogger.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\KeyMapper.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\ILogger.cs",
"RelativeToolTip": "Firebird2D.KeyMapper\\KeyMapper.cs", "RelativeToolTip": "Firebird2D.Logger\\ILogger.cs",
"ViewState": "AQIAAAMAAAAAAAAAAAAAAB4AAAAJAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAANAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-18T07:43:14.35Z", "WhenOpened": "2025-04-21T17:12:31.494Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 7, "DocumentIndex": 17,
"Title": "GameLogger.cs", "Title": "ISpatial.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\GameLogger.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Datatypes\\ISpatial.cs",
"RelativeDocumentMoniker": "Firebird2D.Logger\\GameLogger.cs", "RelativeDocumentMoniker": "Firebird2D\\Datatypes\\ISpatial.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.Logger\\GameLogger.cs", "ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D\\Datatypes\\ISpatial.cs",
"RelativeToolTip": "Firebird2D.Logger\\GameLogger.cs", "RelativeToolTip": "Firebird2D\\Datatypes\\ISpatial.cs",
"ViewState": "AQIAABgAAAAAAAAAAAA1wEUAAAAJAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-17T17:56:23.324Z", "WhenOpened": "2025-04-22T16:22:51.196Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 4, "DocumentIndex": 15,
"Title": "Require.cs", "Title": "Require.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Require.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Require.cs",
"RelativeDocumentMoniker": "Firebird2D.Requirement\\Require.cs", "RelativeDocumentMoniker": "Firebird2D.Requirement\\Require.cs",
@@ -305,7 +366,7 @@
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 16, "DocumentIndex": 19,
"Title": "Firebird2D.KeyMapping.csproj", "Title": "Firebird2D.KeyMapping.csproj",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj",
"RelativeDocumentMoniker": "Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj", "RelativeDocumentMoniker": "Firebird2D.KeyMapper\\Firebird2D.KeyMapping.csproj",
@@ -318,20 +379,7 @@
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 12, "DocumentIndex": 21,
"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": "AQIAAAAAAAAAAAAAAAAAABEAAAAVAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-17T19:45:23.048Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 22,
"Title": "Game.cs", "Title": "Game.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Game.cs", "DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D\\Game.cs",
"RelativeDocumentMoniker": "Firebird2D\\Game.cs", "RelativeDocumentMoniker": "Firebird2D\\Game.cs",
@@ -344,65 +392,13 @@
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 18, "DocumentIndex": 22,
"Title": "FirebirdKeyEventArgs.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\FirebirdKeyEventArgs.cs",
"RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventArguments\\FirebirdKeyEventArgs.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\FirebirdKeyEventArgs.cs",
"RelativeToolTip": "Firebird2D.EventPipelines\\EventArguments\\FirebirdKeyEventArgs.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAsAAABCAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-20T12:39:14.001Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 21,
"Title": "InputEventType.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\InputEventType.cs",
"RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventArguments\\InputEventType.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\InputEventType.cs",
"RelativeToolTip": "Firebird2D.EventPipelines\\EventArguments\\InputEventType.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAFAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-20T12:41:00.332Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 19,
"Title": "FirebirdMouseButtonEventArgs.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\FirebirdMouseButtonEventArgs.cs",
"RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventArguments\\FirebirdMouseButtonEventArgs.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\FirebirdMouseButtonEventArgs.cs",
"RelativeToolTip": "Firebird2D.EventPipelines\\EventArguments\\FirebirdMouseButtonEventArgs.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAABMAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-20T12:45:04.054Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 17,
"Title": "FirebirdJoystickButtonEventArgs.cs",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\FirebirdJoystickButtonEventArgs.cs",
"RelativeDocumentMoniker": "Firebird2D.EventPipelines\\EventArguments\\FirebirdJoystickButtonEventArgs.cs",
"ToolTip": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\EventArguments\\FirebirdJoystickButtonEventArgs.cs",
"RelativeToolTip": "Firebird2D.EventPipelines\\EventArguments\\FirebirdJoystickButtonEventArgs.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAABEAAAAFAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-20T12:48:47.531Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 23,
"Title": "ClassDiagram.md", "Title": "ClassDiagram.md",
"DocumentMoniker": "G:\\Coding\\Firebird2D\\ClassDiagram.md", "DocumentMoniker": "G:\\Coding\\Firebird2D\\ClassDiagram.md",
"RelativeDocumentMoniker": "ClassDiagram.md", "RelativeDocumentMoniker": "ClassDiagram.md",
"ToolTip": "G:\\Coding\\Firebird2D\\ClassDiagram.md", "ToolTip": "G:\\Coding\\Firebird2D\\ClassDiagram.md",
"RelativeToolTip": "ClassDiagram.md", "RelativeToolTip": "ClassDiagram.md",
"ViewState": "AQIAAAAAAAAAAAAAAAAAACcAAAAFAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAABQAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001818|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001818|",
"WhenOpened": "2025-04-17T17:57:06.258Z", "WhenOpened": "2025-04-17T17:57:06.258Z",
"EditorCaption": "" "EditorCaption": ""
@@ -410,40 +406,6 @@
] ]
} }
] ]
},
{
"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": ""
}
]
}
]
} }
] ]
} }
Binary file not shown.
Binary file not shown.
Binary file not shown.
+130 -28
View File
@@ -2,43 +2,51 @@
classDiagram classDiagram
namespace EventPipelines{ namespace EventPipelines{
%% === Basisklassen ===
class FirebirdEventArgs {
<<abstract>>
}
class Pipeline~T~ { class Pipeline~T~ {
- PipelineMaster : object + PiplineMaster : object&lbrace;readonly&rbrace;
+ OnEvent : EventHandler~T~ + IsEventEmpty : bool&lbrace;readonly&rbrace;
+ Subscribe(handler : Delegate)
+ Unsubscribe(handler : Delegate)
+ SendEvent(sender : object, args : T) + SendEvent(sender : object, args : T)
} }
class EventBus { class EventBus {
- pipelines : Dictionary~FirebirdEvent, Pipeline~T~> - pipelines : Dictionary~FirebirdEvent, Pipeline~T~>
- pendingHooks : Dictionary~FirebirdEvent, List~Action~object~~ - pendingHooks : Dictionary~FirebirdEvent, List~Action~object~~
+ OnPipelineExist~T~(callback : Action<Pipeline~T~>, type : FirebirdEvent) + OnPipelineIsBuild(callback : Action~IPipelineBase~, firebirdEvent : FirebirdEvent )
+ BuildPipeline~T~(type : FirebirdEvent, master : object) : Pipeline~T~ + GetOrBuildPipeline(type : FirebirdEvent, master : object) : IPipeline~T~
+ GetPipeline~T~(type : FirebirdEvent) : Pipeline~T~ + GetPipeline(type : FirebirdEvent) : IPipelineBase?
+ DestroyPipeline(type : FirebirdEvent, master : object)
}
} }
%% === Spezialisierte Pipelines === namespace keymapping{
class KeyboardPipeline { class KeyMapper{
<<inherits Pipeline~FirebirdKeyboardEventArgs~>> - eventBus : IEventBus;
} - inputEvents : Dictionary~string, Delegate~ ;
- eventTypes : Dictionary~string, Type~;
- inputMapping : Dictionary~string, FirebirdEvent~ ;
- cachedPipelines : Dictionary~FirebirdEvent, IPipeline~ ;
class MousePipeline { + KeyMapper(eventBus : IEventBus)
<<inherits Pipeline~FirebirdMouseEventArgs~>>
}
%% === EventArgs Spezialisierungen === + RegisterEvent~T~(EventName : string , handler : EventHandler~T~ , eventNumber : FirebirdEvent )
class FirebirdKeyboardEventArgs { + Map(EventName : string , eventNumbe : FirebirdEvent)
<<inherits FirebirdEventArgs>> - RemoveMapping(EventName : string)
- AjustPipeline(EventName : string, eventNumber : FirebirdEvent )
+ SaveMapping(Path : string)
+ LoadMapping(Path : string)
+ InvalidatePipelineCache(fbEvent : FirebirdEvent)
+ GetOrCachePipeline~T~(fbEvent : FirebirdEvent ) : Pipeline~T~?
+ HandleKeyboardInput(key : KeyEvent , type : KeyEvent)
+ HandleMouseInput(button : MouseButtonEvent, type : InputEventType)
+ HandleJoystickButtonInput(joystickButton : JoystickButtonEvent , type : InputEventType)
+ HandleMouseMovement(mouseMove : MouseMoveEvent)
+ HandleJoytickMove(joystickMove : JoystickMoveEvent)
} }
class FirebirdMouseEventArgs {
<<inherits FirebirdEventArgs>>
} }
namespace DatatypesAndInterfaces{
%% === Enum === %% === Enum ===
class FirebirdEvent { class FirebirdEvent {
<<enum>> <<enum>>
@@ -48,15 +56,109 @@ namespace EventPipelines{
KeyboardInputs KeyboardInputs
MouseInputs MouseInputs
} }
class ModuleType{
<<enum>>
Extension
EventSystem
KeyMapper
}
class IEventBus{
<<Interface>>
+ OnPipelineIsBuild(callback : Action~IPipelineBase~, firebirdEvent : FirebirdEvent )
+ GetOrBuildPipeline(type : FirebirdEvent, master : object) : IPipeline~T~
+ GetPipeline(type : FirebirdEvent) : IPipelineBase?
+ DestroyPipeline(type : FirebirdEvent, master : object)
}
class IPipelineBase {
<<Interface>>
+ PiplineMaster : object&lbrace;readonly&rbrace;
+ IsEventEmpty : bool&lbrace;readonly&rbrace;
+ Subscribe(handler : Delegate)
+ Unsubscribe(handler : Delegate)
}
class IPipeline~T~{
<<Interface>>
+ SendEvent(sender : object, args : T)
}
class IKeyMapper{
<<Interface>>
+ Map(EventName : string , eventNumbe : FirebirdEvent)
+ SaveMapping(Path : string)
+ LoadMapping(Path : string)
+ InvalidatePipelineCache(fbEvent : FirebirdEvent)
+ GetOrCachePipeline~T~(fbEvent : FirebirdEvent ) : Pipeline~T~?
+ HandleKeyboardInput(key : KeyEvent , type : KeyEvent)
+ HandleMouseInput(button : MouseButtonEvent, type : InputEventType)
+ HandleJoystickButtonInput(joystickButton : JoystickButtonEvent , type : InputEventType)
+ HandleMouseMovement(mouseMove : MouseMoveEvent)
+ HandleJoytickMove(joystickMove : JoystickMoveEvent)
}
class IExtensionBase{
<<Interface>>
+ Startup()
}
class IGame{
<<Interface>>
+ EventBus : IEventBus
+ KeyMapper : IKeyMapper
}
}
namespace ModulLoading{
class Modul {
+ModuleType ModuleType
+string Name
+string RelativePath
}
class ModulList {
+List~Modul~ mods
}
class ModulLoader {
-ModulList? modulList
-static Dictionary~ExtensionDependencyInjection, (Type, Func<IGame, object>)~ providers
+ModulLoader(IGame)
+T? LoadSystemComponent<T>(ModuleType, IGame)
+void LoadExtensions(IGame)
-T? LoadModule<T>(ModuleType, IGame, string)
+void DeserialiseModulList()
}
} }
%% === Beziehungen === %% === Beziehungen ===
Pipeline~T~ <|-- KeyboardPipeline
Pipeline~T~ <|-- MousePipeline
FirebirdEventArgs <|-- FirebirdKeyboardEventArgs
FirebirdEventArgs <|-- FirebirdMouseEventArgs
EventBus -->Pipeline~T~
EventBus --> Pipeline~T~ EventBus --> Pipeline~T~
EventBus --> IPipeline~T~
EventBus --> IPipelineBase
EventBus ..|> IEventBus
Pipeline~T~ ..|> IPipeline~T~
Pipeline~T~ ..|> IPipelineBase
KeyMapper --> IEventBus
KeyMapper --> FirebirdEvent
KeyMapper --> IPipeline~T~
KeyMapper ..|> IKeyMapper
IKeyMapper --> FirebirdEvent
IKeyMapper --> IPipeline~T~
ModulList --> Modul
ModulLoader --> ModulList
ModulLoader --> Modul
ModulLoader --> ModuleType
ModulLoader --> IGame
ModulLoader --> IExtensionBase
ModulLoader --> IEventBus
ModulLoader --> IKeyMapper
``` ```
@@ -6,4 +6,8 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<PackageReference Include="SFML.Net" Version="2.6.1" />
</ItemGroup>
</Project> </Project>
@@ -10,11 +10,11 @@ namespace Firebird2D.Interfaces
{ {
public interface IEventBus public interface IEventBus
{ {
public void OnPipelineIsBuild(Action<IPipeline> callback, FirebirdEvent firebirdEvent); public void OnPipelineIsBuild(Action<IPipelineBase> callback, FirebirdEvent firebirdEvent);
public IPipeline GetOrBuildPipeline(FirebirdEvent type, Type argsType, object master); public IPipeline<T> GetOrBuildPipeline<T>(FirebirdEvent type, object master) where T : EventArgs;
public IPipeline? GetPipeline(FirebirdEvent type, Type argsType); public IPipelineBase GetPipeline(FirebirdEvent type);
public void DestroyPipeline(FirebirdEvent type, object master); public void DestroyPipeline(FirebirdEvent type, object master);
} }
@@ -4,12 +4,10 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Firebird2D.Datatypes namespace Firebird2D.DataypesAndInterfaces.Interfaces
{ {
public enum ModuleType public interface IExtensionBase
{ {
Extension = 0, public void Startup();
EventSystem = 1,
KeyMapper = 2
} }
} }
+4 -1
View File
@@ -1,4 +1,5 @@
using Firebird2D.Interfaces; using Firebird2D.DataypesAndInterfaces.Interfaces;
using Firebird2D.Interfaces;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -10,5 +11,7 @@ namespace Firebird2D.Interfaces
public interface IGame public interface IGame
{ {
public IEventBus EventBus { get; set; } public IEventBus EventBus { get; set; }
public IKeyMapper KeyMapper { get; set; }
} }
} }
@@ -0,0 +1,28 @@
using Firebird2D.Datatypes;
using Firebird2D.EventPipelines.EventArguments;
using Firebird2D.Interfaces;
using SFML.Window;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
namespace Firebird2D.DataypesAndInterfaces.Interfaces
{
public interface IKeyMapper
{
void RegisterEvent<T>(string EventName, EventHandler<T> handler, FirebirdEvent eventNumber) where T : EventArgs;
void Map(string EventName, FirebirdEvent eventNumber);
void SaveMapping(string Path);
void LoadMapping(string Path);
void InvalidatePipelineCache(FirebirdEvent fbEvent);
void HandleKeyboardInput(KeyEvent key, InputEventType type);
void HandleMouseInput(MouseButtonEvent button, InputEventType type);
void HandleJoystickButtonInput(JoystickButtonEvent joystickButton, InputEventType type);
void HandleMouseMovement(MouseMoveEvent mouseMove);
public void HandleJoytickMove(JoystickMoveEvent joystickMove);
}
}
+10 -4
View File
@@ -6,10 +6,7 @@ using System.Threading.Tasks;
namespace Firebird2D.Interfaces namespace Firebird2D.Interfaces
{ {
/// <summary> public interface IPipelineBase
/// Interface for the Firebird event Pipeline
/// </summary>
public interface IPipeline
{ {
/// <summary> /// <summary>
/// Class witch owns the Pipeline and has the right to send events or delete the pipeline /// Class witch owns the Pipeline and has the right to send events or delete the pipeline
@@ -30,6 +27,15 @@ namespace Firebird2D.Interfaces
/// </summary> /// </summary>
/// <param name="handler">Handler witch should be removed from the Pipeline</param> /// <param name="handler">Handler witch should be removed from the Pipeline</param>
void Unsubscribe(Delegate handler); void Unsubscribe(Delegate handler);
}
/// <summary>
/// Interface for the Firebird event Pipeline
/// </summary>
public interface IPipeline<T> : IPipelineBase where T : EventArgs
{
void SendEvent(object sender, T args);
} }
} }
+16 -10
View File
@@ -15,11 +15,11 @@ namespace Firebird2D.EventPipelines
{ {
// Dictionary that stores various pipelines for specific FirebirdEvents. // Dictionary that stores various pipelines for specific FirebirdEvents.
// The key is the event, and the value is the corresponding pipeline. // The key is the event, and the value is the corresponding pipeline.
private Dictionary<FirebirdEvent, IPipeline> pipelines = new(); private Dictionary<FirebirdEvent, IPipelineBase> pipelines = new();
// Dictionary that stores a list of callbacks for each FirebirdEvent. // Dictionary that stores a list of callbacks for each FirebirdEvent.
// These callbacks will be invoked when the event's pipeline is build. // These callbacks will be invoked when the event's pipeline is build.
private Dictionary<FirebirdEvent, List<Action<IPipeline>>> pendingHooks = new(); private Dictionary<FirebirdEvent, List<Action<IPipelineBase>>> pendingHooks = new();
/// <summary> /// <summary>
/// Registers a callback (hook) for a specific event. The callback will be invoked when the pipeline for this event is built. /// Registers a callback (hook) for a specific event. The callback will be invoked when the pipeline for this event is built.
@@ -27,7 +27,7 @@ namespace Firebird2D.EventPipelines
/// <param name="callback">The function to be called when the pipeline for the event is built.</param> /// <param name="callback">The function to be called when the pipeline for the event is built.</param>
/// <param name="type">The event for which the callback should be registered.</param> /// <param name="type">The event for which the callback should be registered.</param>
/// <exception cref="ArgumentNullException">Thrown when the callback is null.</exception> /// <exception cref="ArgumentNullException">Thrown when the callback is null.</exception>
public void OnPipelineIsBuild(Action<IPipeline> callback, FirebirdEvent type) public void OnPipelineIsBuild(Action<IPipelineBase> callback, FirebirdEvent type)
{ {
if (callback == null) throw new ArgumentNullException(nameof(callback)); if (callback == null) throw new ArgumentNullException(nameof(callback));
@@ -46,16 +46,23 @@ namespace Firebird2D.EventPipelines
/// Otherwise, a new pipeline is created and stored. /// Otherwise, a new pipeline is created and stored.
/// </summary> /// </summary>
/// <param name="type">The event for which the pipeline should be created or retrieved.</param> /// <param name="type">The event for which the pipeline should be created or retrieved.</param>
/// <param name="argsType">The type of the arguments to be passed to the pipeline.</param>
/// <param name="master">The master object used when creating the pipeline.</param> /// <param name="master">The master object used when creating the pipeline.</param>
/// <returns>The pipeline for the given event.</returns> /// <returns>The pipeline for the given event.</returns>
public IPipeline GetOrBuildPipeline(FirebirdEvent type, Type argsType, object master) public IPipeline<T> GetOrBuildPipeline<T>(FirebirdEvent type, object master) where T : EventArgs
{ {
if (pipelines.TryGetValue(type, out var pipeline)) return pipeline; if (pipelines.TryGetValue(type, out var pipeline)) return (IPipeline<T>)pipeline;
var genericPipelineType = typeof(Pipeline<>).MakeGenericType(argsType); var pipelineInstance = new Pipeline<T>(master);
var pipelineInstance = (IPipeline)Activator.CreateInstance(genericPipelineType, master)!;
pipelines[type] = pipelineInstance; pipelines[type] = pipelineInstance;
if (pendingHooks.TryGetValue(type, out var hookList)) return pipelineInstance;
if (hookList == null) return pipelineInstance;
foreach (Action<IPipelineBase> hook in hookList)
{
hook.Invoke(pipelineInstance);
}
return pipelineInstance; return pipelineInstance;
} }
@@ -63,9 +70,8 @@ namespace Firebird2D.EventPipelines
/// Retrieves the pipeline for an event if it exists; otherwise, returns null. /// Retrieves the pipeline for an event if it exists; otherwise, returns null.
/// </summary> /// </summary>
/// <param name="type">The event for which the pipeline should be retrieved.</param> /// <param name="type">The event for which the pipeline should be retrieved.</param>
/// <param name="argsType">The type of the arguments for the pipeline.</param>
/// <returns>The pipeline for the event, or null if it does not exist.</returns> /// <returns>The pipeline for the event, or null if it does not exist.</returns>
public IPipeline? GetPipeline(FirebirdEvent type, Type argsType) public IPipelineBase? GetPipeline(FirebirdEvent type)
{ {
if (!pipelines.TryGetValue(type, out var pipeline)) return null; if (!pipelines.TryGetValue(type, out var pipeline)) return null;
return pipeline; return pipeline;
+1 -1
View File
@@ -13,7 +13,7 @@ namespace Firebird2D.EventPipelines
/// Eventpypeline which transports an event to every Subscyber /// Eventpypeline which transports an event to every Subscyber
/// </summary> /// </summary>
/// <typeparam name="T">Event Arguments for the Pipeline event</typeparam> /// <typeparam name="T">Event Arguments for the Pipeline event</typeparam>
public class Pipeline <T> : IPipeline where T : EventArgs public class Pipeline <T> : IPipeline<T> where T : EventArgs
{ {
/// <summary> /// <summary>
/// Class witch owns the Pipeline and has the right to send events or delete the pipeline /// Class witch owns the Pipeline and has the right to send events or delete the pipeline
@@ -8,6 +8,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Firebird2D.EventPipelines\Firebird2D.EventPipelines.csproj" /> <ProjectReference Include="..\Firebird2D.EventPipelines\Firebird2D.EventPipelines.csproj" />
<ProjectReference Include="..\Firebird2D.Requirement\Firebird2D.Requirement.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>
+8 -6
View File
@@ -5,13 +5,15 @@ using System.Runtime.CompilerServices;
using System.Text.Json; using System.Text.Json;
using Firebird2D.Interfaces; using Firebird2D.Interfaces;
using Firebird2D.Datatypes; using Firebird2D.Datatypes;
using Firebird2D.DataypesAndInterfaces.Interfaces;
using Firebird2D.Requirement;
namespace Firebird2D.KeyMapping namespace Firebird2D.KeyMapping
{ {
/// <summary> /// <summary>
/// Maps input events (keyboard, mouse, joystick) to custom Firebird events and manages their pipelines. /// Maps input events (keyboard, mouse, joystick) to custom Firebird events and manages their pipelines.
/// </summary> /// </summary>
public class KeyMapper public class KeyMapper : IKeyMapper
{ {
private readonly IEventBus eventBus; private readonly IEventBus eventBus;
@@ -25,7 +27,7 @@ namespace Firebird2D.KeyMapping
private Dictionary<string, FirebirdEvent> inputMapping = []; private Dictionary<string, FirebirdEvent> inputMapping = [];
// Caches active pipelines for performance. // Caches active pipelines for performance.
private Dictionary<FirebirdEvent, IPipeline> cachedPipelines = []; private Dictionary<FirebirdEvent, IPipelineBase> cachedPipelines = [];
public KeyMapper(IEventBus eventBus) public KeyMapper(IEventBus eventBus)
{ {
@@ -72,7 +74,7 @@ namespace Firebird2D.KeyMapping
if (!inputMapping.TryGetValue(EventName, out var firebirdEvent)) return; if (!inputMapping.TryGetValue(EventName, out var firebirdEvent)) return;
if (!eventTypes.TryGetValue(EventName, out var type)) return; if (!eventTypes.TryGetValue(EventName, out var type)) return;
IPipeline? pipeline = eventBus.GetPipeline(firebirdEvent, type); IPipelineBase pipeline = eventBus.GetPipeline(firebirdEvent);
if (pipeline != null) if (pipeline != null)
{ {
@@ -94,7 +96,7 @@ namespace Firebird2D.KeyMapping
{ {
if (!eventTypes.TryGetValue(EventName, out var type)) return; if (!eventTypes.TryGetValue(EventName, out var type)) return;
IPipeline pipeline = eventBus.GetOrBuildPipeline(eventNumber, type, this); IPipeline<EventArgs> pipeline = eventBus.GetOrBuildPipeline<EventArgs>(eventNumber, this);
pipeline.Subscribe(inputEvents[EventName]); pipeline.Subscribe(inputEvents[EventName]);
} }
@@ -146,12 +148,12 @@ namespace Firebird2D.KeyMapping
/// Retrieves a cached pipeline or fetches and caches it. /// Retrieves a cached pipeline or fetches and caches it.
/// </summary> /// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private Pipeline<T>? GetOrCachePipeline<T>(FirebirdEvent fbEvent) where T : EventArgs private IPipeline<T>? GetOrCachePipeline<T>(FirebirdEvent fbEvent) where T : EventArgs
{ {
if (cachedPipelines.TryGetValue(fbEvent, out var pipelineObj) && pipelineObj is Pipeline<T> cached) if (cachedPipelines.TryGetValue(fbEvent, out var pipelineObj) && pipelineObj is Pipeline<T> cached)
return cached; return cached;
var pipeline = eventBus?.GetPipeline(fbEvent, typeof(T)) as Pipeline<T>; var pipeline = eventBus?.GetPipeline(fbEvent) as Pipeline<T>;
if (pipeline != null) if (pipeline != null)
cachedPipelines[fbEvent] = pipeline; cachedPipelines[fbEvent] = pipeline;
@@ -1,10 +1,9 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// Dieser Code wurde von einem Tool generiert. // This code was generated by a tool.
// Laufzeitversion:4.0.30319.42000
// //
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn // Changes to this file may cause incorrect behavior and will be lost if
// der Code erneut generiert wird. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -14,10 +13,10 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.Logger")] [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.Logger")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766b2e414b907163c1fd34f3b22b1aa8ae51a9e2")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+47ddfed9bc856f69b96a5dee3963e56a0c0d269c")]
[assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.Logger")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.Logger")]
[assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.Logger")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.Logger")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Von der MSBuild WriteCodeFragment-Klasse generiert. // Generated by the MSBuild WriteCodeFragment class.
@@ -1 +1 @@
efa2647d90b080a7b266fbfa5ece1bdf184aafb101e1daf94499748c54e5b462 a9f3fdec0f3c349ed983a18d512fe6dc153bda16f51c4a0754a5ffc694000f43
+93 -36
View File
@@ -1,4 +1,5 @@
using Firebird2D.Datatypes; using Firebird2D.Datatypes;
using Firebird2D.DataypesAndInterfaces.Interfaces;
using Firebird2D.Interfaces; using Firebird2D.Interfaces;
using Firebird2D.Logger; using Firebird2D.Logger;
using Firebird2D.Requirement; using Firebird2D.Requirement;
@@ -25,66 +26,122 @@ namespace Firebird2D.ModulLoading
public class ModulLoader public class ModulLoader
{ {
private readonly IGame gameInstance;
private static readonly Dictionary<ExtensionDependencyInjection, (Type type, Func<IGame, object> resolver)> providers = new()
{
[ExtensionDependencyInjection.game] = (typeof(IGame), game => game),
[ExtensionDependencyInjection.eventsystem] = (typeof(IEventBus), game => game.EventBus),
[ExtensionDependencyInjection.keymapper] = (typeof(IKeyMapper), game => game.KeyMapper),
};
private ModulList? modulList = null; private ModulList? modulList = null;
public ModulLoader(IGame gameInstance) public ModulLoader(IGame gameInstance)
{ {
this.gameInstance = gameInstance; DeserialiseModulList();
} }
public void LoadModules() public T? LoadSystemComponent<T>(ModuleType moduleType, IGame gameInstance) where T : class
{ {
DeserialiseModulList(); if(modulList?.mods == null || modulList.mods.Count == 0) return null;
if (modulList == null) return;
List<Modul> 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"); List<Modul> systemModules = modulList.mods.Where(m => m.ModuleType == moduleType).ToList();
if (systemModules.Count > 1) GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Warning, $"More then one {moduleType.ToString()} defined, first loadable modul ist loaded");
if (systemModules.Count < 1) { GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Info, $"No {moduleType.ToString()} is Defined Basic Modul is Loaded"); return null; };
if (eventModul.Count != 0) for(int i = 0; i < systemModules.Count; i++)
{
if (string.IsNullOrWhiteSpace(systemModules[i].RelativePath)) continue;
T? modul = LoadModule<T>(moduleType, gameInstance, systemModules[i].RelativePath);
if (modul == null) continue;
GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Info, $"{systemModules[i].RelativePath} is loeaded for {moduleType}.");
return modul;
}
GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Error, $"None of the defined {moduleType} modules could be loaded.");
return null;
}
public void LoadExtensions(IGame gameInstance)
{
if (modulList?.mods == null || modulList.mods.Count == 0) return;
List<Modul> eventModul = modulList.mods.Where(m => m.ModuleType == ModuleType.Extension).ToList();
foreach (Modul modul in eventModul) {
if (string.IsNullOrWhiteSpace(modul.RelativePath)) continue;
IExtensionBase? extensionBase = LoadModule<IExtensionBase>(ModuleType.Extension, gameInstance, modul.RelativePath);
if (extensionBase != null)
{
extensionBase.Startup();
}
}
}
private T? LoadModule<T>(ModuleType moduleType, IGame gameInstance, string modulePath) where T : class
{ {
try try
{ {
Assembly eventAssembly = Assembly.Load(eventModul[0].RelativePath); string basePath = AppContext.BaseDirectory;
string dllPath = Path.Combine(basePath, modulePath);
GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Info, $"F{eventModul[0].Name} loaded."); Assembly assembly = Assembly.LoadFrom(dllPath);
Type moduleClassType = assembly.GetTypes().First(t => typeof(T).IsAssignableFrom(t));
LinkEventAssembly(eventAssembly); List<Type> dependencyInjectionTypes = [];
List<Object> dependencyInjections = [];
foreach (var neededParam in moduleType.getNeededDependencyInjection())
{
if (providers.TryGetValue(neededParam, out var entry))
{
dependencyInjectionTypes.Add(entry.type);
dependencyInjections.Add(entry.resolver(gameInstance));
}
else
{
GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Warning, $"No provider found for dependency: {neededParam}");
}
}
ConstructorInfo? ctor = moduleClassType.GetConstructor(dependencyInjectionTypes.ToArray());
if (ctor == null)
{
string signature = string.Join(", ", dependencyInjectionTypes.Select(t => t.Name));
GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Error, $"No constructor found matching: ({signature})");
return null;
};
T instance = (T)ctor.Invoke(dependencyInjections.ToArray());
Type expectedType = moduleType.getBasicModuleInterfaceType();
if (!expectedType.IsInstanceOfType(instance))
{
GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Error, $"Instance does not implement {expectedType.Name}");
return null;
}
return instance;
} }
catch (Exception ex) catch (Exception ex)
{ {
GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Warning, $"Failed to load {eventModul[0].Name}, with exception {ex.Message}"); GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Error, $"Error while loading event module {ex.ToString()}");
return null;
} }
} }
else
GameLogger.GetInstance(0).Log("ModuleLoader", LogType.Warning, $"More then one EventModul defined first modul ist loaded");
public void DeserialiseModulList()
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 try
{ {
using (FileStream file = new FileStream("Modules/Moduls.xml", FileMode.Open)) string path = Path.Combine(AppContext.BaseDirectory, "Modules", "Moduls.xml");
using (FileStream file = new FileStream(path, FileMode.Open))
{ {
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ModulList)); XmlSerializer xmlSerializer = new XmlSerializer(typeof(ModulList));
modulList = (ModulList?)xmlSerializer.Deserialize(file); modulList = (ModulList?)xmlSerializer.Deserialize(file);
@@ -92,7 +149,7 @@ namespace Firebird2D.ModulLoading
} }
catch(Exception ex) { catch(Exception ex) {
modulList = null; modulList = null;
GameLogger.GetInstance(0).Log("ModulLoader",LogType.Warning, $"Modul file not existing or invalid: {ex.Message}"); GameLogger.GetInstance(0).Log("ModulLoader",LogType.Warning, $"Modul file not existing or invalid: {ex.ToString()}");
} }
} }
} }
+47
View File
@@ -0,0 +1,47 @@
using Firebird2D.DataypesAndInterfaces.Interfaces;
using Firebird2D.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Firebird2D.ModulLoading
{
public enum ModuleType
{
Extension = 0,
EventSystem = 1,
KeyMapper = 2
}
public enum ExtensionDependencyInjection
{
game,
eventsystem,
keymapper
}
public static class ModuleTypeExtensions
{
public static Type getBasicModuleInterfaceType(this ModuleType moduleType)
{
return moduleType switch
{
ModuleType.Extension => typeof(IExtensionBase),
ModuleType.EventSystem => typeof(IEventBus),
ModuleType.KeyMapper => typeof(IKeyMapper)
};
}
public static ExtensionDependencyInjection[] getNeededDependencyInjection(this ModuleType moduleType)
{
return moduleType switch
{
ModuleType.Extension => [ExtensionDependencyInjection.game],
ModuleType.EventSystem => [ ],
ModuleType.KeyMapper => [ExtensionDependencyInjection.eventsystem]
};
}
}
}
+3 -1
View File
@@ -2,7 +2,9 @@
<Moduls> <Moduls>
<!-- <!--
<Modul> <Modul>
<ModuleType>Plugin</ModuleType> <ModuleType>Extension |
EventSystem |
KeyMapper</ModuleType>
<Name>Logger</Name> <Name>Logger</Name>
<RelativePath>Modules/Logger</RelativePath> <RelativePath>Modules/Logger</RelativePath>
</Modul> </Modul>
@@ -1,10 +1,9 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// Dieser Code wurde von einem Tool generiert. // This code was generated by a tool.
// Laufzeitversion:4.0.30319.42000
// //
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn // Changes to this file may cause incorrect behavior and will be lost if
// der Code erneut generiert wird. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -14,10 +13,10 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.Requirement")] [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.Requirement")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766b2e414b907163c1fd34f3b22b1aa8ae51a9e2")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+47ddfed9bc856f69b96a5dee3963e56a0c0d269c")]
[assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.Requirement")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.Requirement")]
[assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.Requirement")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.Requirement")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Von der MSBuild WriteCodeFragment-Klasse generiert. // Generated by the MSBuild WriteCodeFragment class.
@@ -1 +1 @@
d930c16e48000b60c3592ab43be941a4270796fd5c53910ce4333c8a429ab31e f581c37a3c854f5a860046d943afdf55d92d954e13f5fe1b8d2ca272db9ec0ac
@@ -1,10 +1,9 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// Dieser Code wurde von einem Tool generiert. // This code was generated by a tool.
// Laufzeitversion:4.0.30319.42000
// //
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn // Changes to this file may cause incorrect behavior and will be lost if
// der Code erneut generiert wird. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -14,10 +13,10 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.SFMLExtensions")] [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D.SFMLExtensions")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766b2e414b907163c1fd34f3b22b1aa8ae51a9e2")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+47ddfed9bc856f69b96a5dee3963e56a0c0d269c")]
[assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.SFMLExtensions")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D.SFMLExtensions")]
[assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.SFMLExtensions")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D.SFMLExtensions")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Von der MSBuild WriteCodeFragment-Klasse generiert. // Generated by the MSBuild WriteCodeFragment class.
@@ -1 +1 @@
f626d59756ad26a054c1d1f23d861aa33ef4951843a64a2988b4cd5ed949a8c9 ead2f01976d183a4249a04181867bc7e061b626d8af29ab0f33a5be7ef71045d
+6 -1
View File
@@ -22,7 +22,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Firebird2D.KeyMapping", "Fi
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Firebird2D.DataypesAndInterfaces", "FireBird2D.Interfaces\Firebird2D.DataypesAndInterfaces.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 EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebird2D.ModulLoading", "Firebird2D.ModulLoader\Firebird2D.ModulLoading.csproj", "{917F395C-6C2E-4F23-9ED1-B123E5F272E9}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Firebird2D.ModulLoading", "Firebird2D.ModulLoader\Firebird2D.ModulLoading.csproj", "{917F395C-6C2E-4F23-9ED1-B123E5F272E9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Code Ideas", "Code Ideas", "{23904BA8-EE2E-421B-A320-2D51049C5936}"
ProjectSection(SolutionItems) = preProject
LoadDynamic and inject dependency.txt = LoadDynamic and inject dependency.txt
EndProjectSection
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -1,10 +1,9 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// Dieser Code wurde von einem Tool generiert. // This code was generated by a tool.
// Laufzeitversion:4.0.30319.42000
// //
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn // Changes to this file may cause incorrect behavior and will be lost if
// der Code erneut generiert wird. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -14,10 +13,10 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D")] [assembly: System.Reflection.AssemblyCompanyAttribute("Firebird2D")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766b2e414b907163c1fd34f3b22b1aa8ae51a9e2")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+47ddfed9bc856f69b96a5dee3963e56a0c0d269c")]
[assembly: System.Reflection.AssemblyProductAttribute("Firebird2D")] [assembly: System.Reflection.AssemblyProductAttribute("Firebird2D")]
[assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D")] [assembly: System.Reflection.AssemblyTitleAttribute("Firebird2D")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Von der MSBuild WriteCodeFragment-Klasse generiert. // Generated by the MSBuild WriteCodeFragment class.
@@ -1 +1 @@
b58b950687c3bc10dc33b3f06fb727341820dba7c020e683d062fa25981537d0 25825266d81fcf1361d25892e26ada2edd110ab12acc96c200ef0eb2e4e09249
@@ -128,6 +128,12 @@
"frameworks": { "frameworks": {
"net8.0": { "net8.0": {
"targetAlias": "net8.0", "targetAlias": "net8.0",
"dependencies": {
"SFML.Net": {
"target": "Package",
"version": "[2.6.1, )"
}
},
"imports": [ "imports": [
"net461", "net461",
"net462", "net462",
@@ -181,6 +187,9 @@
"projectReferences": { "projectReferences": {
"G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj": { "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj": {
"projectPath": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj" "projectPath": "G:\\Coding\\Firebird2D\\Firebird2D.EventPipelines\\Firebird2D.EventPipelines.csproj"
},
"G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Firebird2D.Requirement.csproj": {
"projectPath": "G:\\Coding\\Firebird2D\\Firebird2D.Requirement\\Firebird2D.Requirement.csproj"
} }
} }
} }
+5 -1
View File
@@ -1046,6 +1046,9 @@
"Firebird2D.DataypesAndInterfaces/1.0.0": { "Firebird2D.DataypesAndInterfaces/1.0.0": {
"type": "project", "type": "project",
"framework": ".NETCoreApp,Version=v8.0", "framework": ".NETCoreApp,Version=v8.0",
"dependencies": {
"SFML.Net": "2.6.1"
},
"compile": { "compile": {
"bin/placeholder/Firebird2D.DataypesAndInterfaces.dll": {} "bin/placeholder/Firebird2D.DataypesAndInterfaces.dll": {}
}, },
@@ -1071,7 +1074,8 @@
"type": "project", "type": "project",
"framework": ".NETCoreApp,Version=v8.0", "framework": ".NETCoreApp,Version=v8.0",
"dependencies": { "dependencies": {
"Firebird2D.EventPipelines": "1.0.0" "Firebird2D.EventPipelines": "1.0.0",
"Firebird2D.Requirement": "1.0.0"
}, },
"compile": { "compile": {
"bin/placeholder/Firebird2D.KeyMapping.dll": {} "bin/placeholder/Firebird2D.KeyMapping.dll": {}
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "reTuevwexX0=", "dgSpecHash": "Hckho++vxAc=",
"success": true, "success": true,
"projectFilePath": "G:\\Coding\\Firebird2D\\Firebird2D\\Firebird2D.csproj", "projectFilePath": "G:\\Coding\\Firebird2D\\Firebird2D\\Firebird2D.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
+10
View File
@@ -0,0 +1,10 @@
Assembly assembly = Assembly.LoadFrom("plugin.dll");
Type pluginType = assembly.GetTypes().First(t => typeof(IPlugin).IsAssignableFrom(t));
ConstructorInfo ctor = pluginType.GetConstructor(new[] { typeof(IEventBus) });
if (ctor == null)
throw new InvalidOperationException("Kein passender Konstruktor gefunden.");
IPlugin instance = (IPlugin)ctor.Invoke(new object[] { eventBus });