diff --git a/Avalonia_Apps/AA16_UserControl/AA16_Usercontrol1/Directory.Packages.props b/Avalonia_Apps/AA16_UserControl/AA16_Usercontrol1/Directory.Packages.props index 7d2a646c5..d9e976c52 100644 --- a/Avalonia_Apps/AA16_UserControl/AA16_Usercontrol1/Directory.Packages.props +++ b/Avalonia_Apps/AA16_UserControl/AA16_Usercontrol1/Directory.Packages.props @@ -3,13 +3,13 @@ true - - - - - - - + + + + + + + diff --git a/Avalonia_Apps/AA21_Buttons/Directory.Packages.props b/Avalonia_Apps/AA21_Buttons/Directory.Packages.props index c999c2ddc..b4e283877 100644 --- a/Avalonia_Apps/AA21_Buttons/Directory.Packages.props +++ b/Avalonia_Apps/AA21_Buttons/Directory.Packages.props @@ -6,15 +6,15 @@ - + - - + + - + @@ -22,8 +22,8 @@ - - + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_AnimationTiming/Avln_AnimationTiming.csproj b/Avalonia_Apps/AvlnSamples/Avln_AnimationTiming/Avln_AnimationTiming.csproj index 87d05b833..21257cf41 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_AnimationTiming/Avln_AnimationTiming.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_AnimationTiming/Avln_AnimationTiming.csproj @@ -38,13 +38,13 @@ - - - - + + + + - - + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_AnimationTimingTests/Avln_AnimationTimingTests.csproj b/Avalonia_Apps/AvlnSamples/Avln_AnimationTimingTests/Avln_AnimationTimingTests.csproj index f21094cf9..cae31cbef 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_AnimationTimingTests/Avln_AnimationTimingTests.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_AnimationTimingTests/Avln_AnimationTimingTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Avalonia_Apps/AvlnSamples/Avln_Brushes/Avln_Brushes.csproj b/Avalonia_Apps/AvlnSamples/Avln_Brushes/Avln_Brushes.csproj index 66a1d3d6d..b3b35d7a1 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_Brushes/Avln_Brushes.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_Brushes/Avln_Brushes.csproj @@ -23,12 +23,12 @@ - - - - - - + + + + + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_Complex_Layout/Avln_Complex_Layout.csproj b/Avalonia_Apps/AvlnSamples/Avln_Complex_Layout/Avln_Complex_Layout.csproj index 222487679..bd84dad7f 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_Complex_Layout/Avln_Complex_Layout.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_Complex_Layout/Avln_Complex_Layout.csproj @@ -18,14 +18,14 @@ - - - - + + + + - - - + + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_Complex_LayoutTests/Avln_Complex_LayoutTests.csproj b/Avalonia_Apps/AvlnSamples/Avln_Complex_LayoutTests/Avln_Complex_LayoutTests.csproj index 839b6903e..4ff71aaa1 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_Complex_LayoutTests/Avln_Complex_LayoutTests.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_Complex_LayoutTests/Avln_Complex_LayoutTests.csproj @@ -4,10 +4,10 @@ false - - + + - + diff --git a/Avalonia_Apps/AvlnSamples/Avln_CustomAnimation/Avln_CustomAnimation.csproj b/Avalonia_Apps/AvlnSamples/Avln_CustomAnimation/Avln_CustomAnimation.csproj index 63862325f..da3ae96b1 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_CustomAnimation/Avln_CustomAnimation.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_CustomAnimation/Avln_CustomAnimation.csproj @@ -12,12 +12,12 @@ - - - - - - + + + + + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_Geometry/Avln_Geometry.csproj b/Avalonia_Apps/AvlnSamples/Avln_Geometry/Avln_Geometry.csproj index 446bb6fdd..2fdd96f36 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_Geometry/Avln_Geometry.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_Geometry/Avln_Geometry.csproj @@ -25,12 +25,12 @@ - - - - - - + + + + + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_Hello_World/Avln_Hello_World.csproj b/Avalonia_Apps/AvlnSamples/Avln_Hello_World/Avln_Hello_World.csproj index 9c84291c8..e6662ed76 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_Hello_World/Avln_Hello_World.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_Hello_World/Avln_Hello_World.csproj @@ -18,13 +18,13 @@ - - - - + + + + - - + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_Hello_WorldTests/Avln_Hello_WorldTests.csproj b/Avalonia_Apps/AvlnSamples/Avln_Hello_WorldTests/Avln_Hello_WorldTests.csproj index eb94f5e12..fabea28f5 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_Hello_WorldTests/Avln_Hello_WorldTests.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_Hello_WorldTests/Avln_Hello_WorldTests.csproj @@ -9,13 +9,13 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Avalonia_Apps/AvlnSamples/Avln_ImageView/Avln_ImageView.csproj b/Avalonia_Apps/AvlnSamples/Avln_ImageView/Avln_ImageView.csproj index e03ab9786..605326e7d 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_ImageView/Avln_ImageView.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_ImageView/Avln_ImageView.csproj @@ -13,13 +13,13 @@ - - - - - - - + + + + + + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_IntegrationTestApp/Avln_IntegrationTestApp.csproj b/Avalonia_Apps/AvlnSamples/Avln_IntegrationTestApp/Avln_IntegrationTestApp.csproj index 6c0bc5da7..4c455362c 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_IntegrationTestApp/Avln_IntegrationTestApp.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_IntegrationTestApp/Avln_IntegrationTestApp.csproj @@ -22,13 +22,13 @@ - - - - - - - + + + + + + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_MoveWindow/Avln_MoveWindow.csproj b/Avalonia_Apps/AvlnSamples/Avln_MoveWindow/Avln_MoveWindow.csproj index ca8939b6b..e2a0ee05b 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_MoveWindow/Avln_MoveWindow.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_MoveWindow/Avln_MoveWindow.csproj @@ -18,13 +18,13 @@ - - - - + + + + - - + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_MoveWindowTests/Avln_MoveWindowTests.csproj b/Avalonia_Apps/AvlnSamples/Avln_MoveWindowTests/Avln_MoveWindowTests.csproj index 673f33e8d..ccc38fe44 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_MoveWindowTests/Avln_MoveWindowTests.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_MoveWindowTests/Avln_MoveWindowTests.csproj @@ -9,13 +9,13 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Avalonia_Apps/AvlnSamples/Avln_RenderDemo/Avln_RenderDemo.csproj b/Avalonia_Apps/AvlnSamples/Avln_RenderDemo/Avln_RenderDemo.csproj index 8781ed6f8..2ca3d63f7 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_RenderDemo/Avln_RenderDemo.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_RenderDemo/Avln_RenderDemo.csproj @@ -13,13 +13,13 @@ - - - - - - - + + + + + + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_Sample_Template/Avln_Sample_Template.csproj b/Avalonia_Apps/AvlnSamples/Avln_Sample_Template/Avln_Sample_Template.csproj index e4322298f..b8cb57a02 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_Sample_Template/Avln_Sample_Template.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_Sample_Template/Avln_Sample_Template.csproj @@ -18,13 +18,13 @@ - - - - + + + + - - + + diff --git a/Avalonia_Apps/AvlnSamples/Avln_TextTestApp/Avln_TextTestApp.csproj b/Avalonia_Apps/AvlnSamples/Avln_TextTestApp/Avln_TextTestApp.csproj index c915091eb..341fbf652 100644 --- a/Avalonia_Apps/AvlnSamples/Avln_TextTestApp/Avln_TextTestApp.csproj +++ b/Avalonia_Apps/AvlnSamples/Avln_TextTestApp/Avln_TextTestApp.csproj @@ -10,10 +10,10 @@ - - - - + + + + diff --git a/Avalonia_Apps/AvlnSamples/SampleControls/ControlSamples.Pack.csproj b/Avalonia_Apps/AvlnSamples/SampleControls/ControlSamples.Pack.csproj index 33502dca4..33f8a20eb 100644 --- a/Avalonia_Apps/AvlnSamples/SampleControls/ControlSamples.Pack.csproj +++ b/Avalonia_Apps/AvlnSamples/SampleControls/ControlSamples.Pack.csproj @@ -23,7 +23,7 @@ - + diff --git a/Avalonia_Apps/BenchmarkSuite1/BenchmarkSuite1.csproj b/Avalonia_Apps/BenchmarkSuite1/BenchmarkSuite1.csproj index c86ecea83..1556596f7 100644 --- a/Avalonia_Apps/BenchmarkSuite1/BenchmarkSuite1.csproj +++ b/Avalonia_Apps/BenchmarkSuite1/BenchmarkSuite1.csproj @@ -9,7 +9,7 @@ - + diff --git a/Avalonia_Apps/Libraries/Avln_BaseLib/Avln_BaseLib.csproj b/Avalonia_Apps/Libraries/Avln_BaseLib/Avln_BaseLib.csproj index e9895b7b4..cfa2854a4 100644 --- a/Avalonia_Apps/Libraries/Avln_BaseLib/Avln_BaseLib.csproj +++ b/Avalonia_Apps/Libraries/Avln_BaseLib/Avln_BaseLib.csproj @@ -26,10 +26,10 @@ - - - - + + + + diff --git a/Avalonia_Apps/Libraries/Avln_BaseLibTests/Avln_BaseLibTests.csproj b/Avalonia_Apps/Libraries/Avln_BaseLibTests/Avln_BaseLibTests.csproj index 3ac77ba3f..b24aa4ce8 100644 --- a/Avalonia_Apps/Libraries/Avln_BaseLibTests/Avln_BaseLibTests.csproj +++ b/Avalonia_Apps/Libraries/Avln_BaseLibTests/Avln_BaseLibTests.csproj @@ -15,15 +15,15 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/Avalonia_Apps/Libraries/BaseLib/BaseLib.csproj b/Avalonia_Apps/Libraries/BaseLib/BaseLib.csproj index 5c678ac98..c6fd681ff 100644 --- a/Avalonia_Apps/Libraries/BaseLib/BaseLib.csproj +++ b/Avalonia_Apps/Libraries/BaseLib/BaseLib.csproj @@ -30,7 +30,7 @@ - - + + \ No newline at end of file diff --git a/Avalonia_Apps/Libraries/BaseLibTests/BaseLibTests.csproj b/Avalonia_Apps/Libraries/BaseLibTests/BaseLibTests.csproj index 9af5da953..54f402aab 100644 --- a/Avalonia_Apps/Libraries/BaseLibTests/BaseLibTests.csproj +++ b/Avalonia_Apps/Libraries/BaseLibTests/BaseLibTests.csproj @@ -15,8 +15,8 @@ $(TargetFrameworks);net10.0 - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Avalonia_Apps/Packages.props b/Avalonia_Apps/Packages.props index 2d16d64d5..0bf91cefc 100644 --- a/Avalonia_Apps/Packages.props +++ b/Avalonia_Apps/Packages.props @@ -6,34 +6,34 @@ - - - - - - + + + + + + - + - + - + - - - - - - + + + + + + - + - - + + \ No newline at end of file diff --git a/Avalonia_Apps/RenderImage.BaseTests/RenderImage.BaseTests.csproj b/Avalonia_Apps/RenderImage.BaseTests/RenderImage.BaseTests.csproj index 4532ef592..d01ad3802 100644 --- a/Avalonia_Apps/RenderImage.BaseTests/RenderImage.BaseTests.csproj +++ b/Avalonia_Apps/RenderImage.BaseTests/RenderImage.BaseTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/AboutEx/AboutEx.csproj b/CSharpBible/AboutEx/AboutEx.csproj index b89a9292c..6b307f8a5 100644 --- a/CSharpBible/AboutEx/AboutEx.csproj +++ b/CSharpBible/AboutEx/AboutEx.csproj @@ -13,8 +13,8 @@ CSharpBible.AboutEx - - + + diff --git a/CSharpBible/AboutExTests/AboutExTests.csproj b/CSharpBible/AboutExTests/AboutExTests.csproj index d8fddf4e0..0d43f6f74 100644 --- a/CSharpBible/AboutExTests/AboutExTests.csproj +++ b/CSharpBible/AboutExTests/AboutExTests.csproj @@ -12,9 +12,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Basics/Basic_Del00_Template/Basic_Del00_Template.csproj b/CSharpBible/Basics/Basic_Del00_Template/Basic_Del00_Template.csproj index 79bcdb991..45cf4cdd8 100644 --- a/CSharpBible/Basics/Basic_Del00_Template/Basic_Del00_Template.csproj +++ b/CSharpBible/Basics/Basic_Del00_Template/Basic_Del00_Template.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/CSharpBible/Basics/Basic_Del00_TemplateTests/Basic_Del00_TemplateTests.csproj b/CSharpBible/Basics/Basic_Del00_TemplateTests/Basic_Del00_TemplateTests.csproj index f342e8d0b..e1a8e3500 100644 --- a/CSharpBible/Basics/Basic_Del00_TemplateTests/Basic_Del00_TemplateTests.csproj +++ b/CSharpBible/Basics/Basic_Del00_TemplateTests/Basic_Del00_TemplateTests.csproj @@ -13,9 +13,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -26,6 +26,6 @@ - + diff --git a/CSharpBible/Basics/Basic_Del01_Action/Basic_Del01_Action.csproj b/CSharpBible/Basics/Basic_Del01_Action/Basic_Del01_Action.csproj index 141d46b50..34744af43 100644 --- a/CSharpBible/Basics/Basic_Del01_Action/Basic_Del01_Action.csproj +++ b/CSharpBible/Basics/Basic_Del01_Action/Basic_Del01_Action.csproj @@ -19,8 +19,8 @@ - - + + diff --git a/CSharpBible/Basics/Basic_Del01_ActionTests/Basic_Del01_ActionTests.csproj b/CSharpBible/Basics/Basic_Del01_ActionTests/Basic_Del01_ActionTests.csproj index 527fc311d..f0d0c967d 100644 --- a/CSharpBible/Basics/Basic_Del01_ActionTests/Basic_Del01_ActionTests.csproj +++ b/CSharpBible/Basics/Basic_Del01_ActionTests/Basic_Del01_ActionTests.csproj @@ -13,9 +13,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Basics/Basic_Del02_Filter/Basic_Del02_Filter.csproj b/CSharpBible/Basics/Basic_Del02_Filter/Basic_Del02_Filter.csproj index 09a935d50..ba3ec99c5 100644 --- a/CSharpBible/Basics/Basic_Del02_Filter/Basic_Del02_Filter.csproj +++ b/CSharpBible/Basics/Basic_Del02_Filter/Basic_Del02_Filter.csproj @@ -19,7 +19,7 @@ - + diff --git a/CSharpBible/Basics/Basic_Del02_FilterTests/Basic_Del02_FilterTests.csproj b/CSharpBible/Basics/Basic_Del02_FilterTests/Basic_Del02_FilterTests.csproj index f0b33e6f8..0baf77e5c 100644 --- a/CSharpBible/Basics/Basic_Del02_FilterTests/Basic_Del02_FilterTests.csproj +++ b/CSharpBible/Basics/Basic_Del02_FilterTests/Basic_Del02_FilterTests.csproj @@ -13,9 +13,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Basics/Basic_Del03_General/Basic_Del03_General.csproj b/CSharpBible/Basics/Basic_Del03_General/Basic_Del03_General.csproj index 1a2623cb9..a57d3d602 100644 --- a/CSharpBible/Basics/Basic_Del03_General/Basic_Del03_General.csproj +++ b/CSharpBible/Basics/Basic_Del03_General/Basic_Del03_General.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/CSharpBible/Basics/Basic_Del03_GeneralTests/Basic_Del03_GeneralTests.csproj b/CSharpBible/Basics/Basic_Del03_GeneralTests/Basic_Del03_GeneralTests.csproj index 77bd2fd12..5a812c3bb 100644 --- a/CSharpBible/Basics/Basic_Del03_GeneralTests/Basic_Del03_GeneralTests.csproj +++ b/CSharpBible/Basics/Basic_Del03_GeneralTests/Basic_Del03_GeneralTests.csproj @@ -13,9 +13,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Basics/Basic_Del04_TestImposibleStuff/Basic_Del04_TestImposibleStuff.csproj b/CSharpBible/Basics/Basic_Del04_TestImposibleStuff/Basic_Del04_TestImposibleStuff.csproj index a7be6aa9b..9cdc5f0c1 100644 --- a/CSharpBible/Basics/Basic_Del04_TestImposibleStuff/Basic_Del04_TestImposibleStuff.csproj +++ b/CSharpBible/Basics/Basic_Del04_TestImposibleStuff/Basic_Del04_TestImposibleStuff.csproj @@ -16,7 +16,7 @@ - + diff --git a/CSharpBible/Basics/Basic_Del04_TestImposibleStuffTests/Basic_Del04_TestImposibleStuffTests.csproj b/CSharpBible/Basics/Basic_Del04_TestImposibleStuffTests/Basic_Del04_TestImposibleStuffTests.csproj index 1c3a49b0d..a35304b0a 100644 --- a/CSharpBible/Basics/Basic_Del04_TestImposibleStuffTests/Basic_Del04_TestImposibleStuffTests.csproj +++ b/CSharpBible/Basics/Basic_Del04_TestImposibleStuffTests/Basic_Del04_TestImposibleStuffTests.csproj @@ -13,9 +13,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/CSharpBible.sln b/CSharpBible/CSharpBible.sln index 7b314ff76..d17c8b552 100644 --- a/CSharpBible/CSharpBible.sln +++ b/CSharpBible/CSharpBible.sln @@ -158,6 +158,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile", "Mobile", "{8CCD8B EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Games", "Games", "{947E3943-6DE0-46E7-9106-BCE8C6E812E0}" ProjectSection(SolutionItems) = preProject + Games\Directory.Packages.props = Games\Directory.Packages.props Games\Games.props = Games\Games.props Games\Games_net.props = Games\Games_net.props SomeThing\Solution.props = SomeThing\Solution.props @@ -427,7 +428,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MVVM_00_TemplateTests", "MV EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MVVM_06_Converters_4_net", "MVVM_Tutorial\MVVM_06_Converters_4\MVVM_06_Converters_4_net.csproj", "{70AD3FCB-F529-4E08-BE39-E56C940EA114}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MVVM_16_Usercontrol1_net", "MVVM_Tutorial\MVVM_16_Usercontrol1\MVVM_16_UserControl1_net.csproj", "{CDC8B1F7-3C94-4686-9EE0-6841231E6144}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MVVM_16_UserControl1_net", "MVVM_Tutorial\MVVM_16_Usercontrol1\MVVM_16_UserControl1_net.csproj", "{CDC8B1F7-3C94-4686-9EE0-6841231E6144}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Simulation", "Simulation", "{0DF8EC71-8008-41CF-9A87-946604FBD24D}" ProjectSection(SolutionItems) = preProject @@ -848,6 +849,9 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVM_AllExamples_netTests", "MVVM_Tutorial\MVVM_AllExamplesTests\MVVM_AllExamples_netTests.csproj", "{687EFF77-3468-444D-A410-1B76E41E74FC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SomeThing", "SomeThing", "{72BE345F-8168-4D28-895C-2A22010B39C8}" + ProjectSection(SolutionItems) = preProject + SomeThing\README.md = SomeThing\README.md + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quine1", "SomeThing\Quine1\Quine1.csproj", "{CC31DD38-B57D-4A71-9681-E9D7DDFB8909}" EndProject @@ -1099,6 +1103,19 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Document.Xaml", "Data\Docum EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Story.Base", "Data\Story.Base\Story.Base.csproj", "{A06D0241-A272-9A48-0BDC-00B60E27D924}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Snake", "Snake", "{175441F2-40F8-410C-AAE1-B79760244304}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Quine", "Quine", "{0E1CB7B2-F372-4F6D-A071-021C7B0BE80C}" + ProjectSection(SolutionItems) = preProject + SomeThing\README.md = SomeThing\README.md + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quine4", "SomeThing\Quine4\Quine4.csproj", "{3E692837-3E14-86AF-8F4B-1CE45081E1B1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quine5", "SomeThing\Quine5\Quine5.csproj", "{E2411CA0-1AD4-1A5A-B440-04EB09184818}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quine6", "SomeThing\Quine6\Quine6.csproj", "{0DA4D107-D40D-C3C7-089B-A16980E49CEA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -6789,6 +6806,42 @@ Global {A06D0241-A272-9A48-0BDC-00B60E27D924}.Release|x64.Build.0 = Release|Any CPU {A06D0241-A272-9A48-0BDC-00B60E27D924}.Release|x86.ActiveCfg = Release|Any CPU {A06D0241-A272-9A48-0BDC-00B60E27D924}.Release|x86.Build.0 = Release|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Debug|x64.ActiveCfg = Debug|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Debug|x64.Build.0 = Debug|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Debug|x86.ActiveCfg = Debug|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Debug|x86.Build.0 = Debug|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Release|Any CPU.Build.0 = Release|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Release|x64.ActiveCfg = Release|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Release|x64.Build.0 = Release|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Release|x86.ActiveCfg = Release|Any CPU + {3E692837-3E14-86AF-8F4B-1CE45081E1B1}.Release|x86.Build.0 = Release|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Debug|x64.ActiveCfg = Debug|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Debug|x64.Build.0 = Debug|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Debug|x86.ActiveCfg = Debug|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Debug|x86.Build.0 = Debug|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Release|Any CPU.Build.0 = Release|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Release|x64.ActiveCfg = Release|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Release|x64.Build.0 = Release|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Release|x86.ActiveCfg = Release|Any CPU + {E2411CA0-1AD4-1A5A-B440-04EB09184818}.Release|x86.Build.0 = Release|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Debug|x64.ActiveCfg = Debug|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Debug|x64.Build.0 = Debug|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Debug|x86.ActiveCfg = Debug|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Debug|x86.Build.0 = Debug|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Release|Any CPU.Build.0 = Release|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Release|x64.ActiveCfg = Release|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Release|x64.Build.0 = Release|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Release|x86.ActiveCfg = Release|Any CPU + {0DA4D107-D40D-C3C7-089B-A16980E49CEA}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -6883,8 +6936,8 @@ Global {27777C75-0DA7-4489-BE60-51E74F921090} = {465E6B8C-A028-4C99-86E7-2710FFC62901} {9EA5388E-5333-4C8A-8B27-8E16AC4E7137} = {7BA535EF-38FA-47A6-A6BD-5D6333D5DB10} {385737C2-FB69-44AD-ACBB-A2CBE11686E4} = {E1D77C39-936E-4ADB-8350-74B5A4401280} - {F30BC8EB-5AC7-4FD0-A5B7-33057AEF8ECA} = {947E3943-6DE0-46E7-9106-BCE8C6E812E0} - {9D934BB9-B0C6-4CBC-81AB-35AFC52784EE} = {947E3943-6DE0-46E7-9106-BCE8C6E812E0} + {F30BC8EB-5AC7-4FD0-A5B7-33057AEF8ECA} = {175441F2-40F8-410C-AAE1-B79760244304} + {9D934BB9-B0C6-4CBC-81AB-35AFC52784EE} = {175441F2-40F8-410C-AAE1-B79760244304} {33D1CD60-0C70-4645-A50E-CA82F83CE0A5} = {7BA535EF-38FA-47A6-A6BD-5D6333D5DB10} {E8D9DBBF-0516-4FA7-A5D0-F66DFD196C5C} = {9E686C3B-3AF8-4C7F-9F71-F09EF3E12031} {4B6719F3-89B1-4C4F-9690-150D0ABDA36F} = {947E3943-6DE0-46E7-9106-BCE8C6E812E0} @@ -7154,9 +7207,9 @@ Global {42EA49AE-5C87-4C75-83EF-964D4B24E9E9} = {4C78BE6F-C572-41FC-917E-B8587E10596F} {75423717-B64A-4EAC-9762-CD17A2F60857} = {1BD34A20-4B18-43A2-AEEE-1E24B93C8BC9} {687EFF77-3468-444D-A410-1B76E41E74FC} = {1BD34A20-4B18-43A2-AEEE-1E24B93C8BC9} - {CC31DD38-B57D-4A71-9681-E9D7DDFB8909} = {72BE345F-8168-4D28-895C-2A22010B39C8} - {B57AAB4C-0BA8-46B9-B365-F941A54F4DEF} = {72BE345F-8168-4D28-895C-2A22010B39C8} - {4879406D-8F0C-4EDF-A7EB-CB549E510E03} = {72BE345F-8168-4D28-895C-2A22010B39C8} + {CC31DD38-B57D-4A71-9681-E9D7DDFB8909} = {0E1CB7B2-F372-4F6D-A071-021C7B0BE80C} + {B57AAB4C-0BA8-46B9-B365-F941A54F4DEF} = {0E1CB7B2-F372-4F6D-A071-021C7B0BE80C} + {4879406D-8F0C-4EDF-A7EB-CB549E510E03} = {0E1CB7B2-F372-4F6D-A071-021C7B0BE80C} {DE121B38-5563-463D-B4B0-0817E75F4DDB} = {37C1201C-8936-4BAC-9BA1-7B8CAB87BD60} {827CB9D9-EE91-47E1-BCF3-3DAC2C45EE57} = {37C1201C-8936-4BAC-9BA1-7B8CAB87BD60} {391D26F2-FAFB-4113-9C80-4DA54BCE5D4A} = {827CB9D9-EE91-47E1-BCF3-3DAC2C45EE57} @@ -7209,7 +7262,7 @@ Global {5E9D2F06-E4E1-4E2E-BE1A-A0F7E0CF785C} = {71DD55F8-E61A-49E8-B841-72984B85D38B} {CE9E0C11-AACD-4F57-8C1B-7210AFABCA19} = {A7AA5940-00E1-4F63-B85A-90BF6A35EA05} {7EE327D2-B598-4F77-A889-04EB6949A6BB} = {947E3943-6DE0-46E7-9106-BCE8C6E812E0} - {2399EFC7-01EC-4574-9552-1A84857B076E} = {947E3943-6DE0-46E7-9106-BCE8C6E812E0} + {2399EFC7-01EC-4574-9552-1A84857B076E} = {175441F2-40F8-410C-AAE1-B79760244304} {69E4FEBA-5470-4BAC-8848-AF4ECA3DC9BD} = {71DD55F8-E61A-49E8-B841-72984B85D38B} {D8A95DA6-F62B-3E10-BC72-FABE1D9146F4} = {9E686C3B-3AF8-4C7F-9F71-F09EF3E12031} {501893AF-503A-30CC-ECDA-DFAC435E6D10} = {71DD55F8-E61A-49E8-B841-72984B85D38B} @@ -7274,6 +7327,11 @@ Global {2ED77FB7-8A9C-0D43-368C-9CEFF79BADE1} = {C59CD07D-726D-36FF-06E5-2CFE8C4AA341} {D19418F6-67A8-763C-B179-193233BB812C} = {C59CD07D-726D-36FF-06E5-2CFE8C4AA341} {A06D0241-A272-9A48-0BDC-00B60E27D924} = {050F69CA-1EB1-4D46-B52C-018637E6D525} + {175441F2-40F8-410C-AAE1-B79760244304} = {947E3943-6DE0-46E7-9106-BCE8C6E812E0} + {0E1CB7B2-F372-4F6D-A071-021C7B0BE80C} = {72BE345F-8168-4D28-895C-2A22010B39C8} + {3E692837-3E14-86AF-8F4B-1CE45081E1B1} = {0E1CB7B2-F372-4F6D-A071-021C7B0BE80C} + {E2411CA0-1AD4-1A5A-B440-04EB09184818} = {0E1CB7B2-F372-4F6D-A071-021C7B0BE80C} + {0DA4D107-D40D-C3C7-089B-A16980E49CEA} = {0E1CB7B2-F372-4F6D-A071-021C7B0BE80C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DAF8B3ED-D51A-4CDA-8BF1-1E032CF0AC4F} diff --git a/CSharpBible/Calc/Calc32/NonVisual/CalculatorClass.cs b/CSharpBible/Calc/Calc32/NonVisual/CalculatorClass.cs deleted file mode 100644 index b9cca5e93..000000000 --- a/CSharpBible/Calc/Calc32/NonVisual/CalculatorClass.cs +++ /dev/null @@ -1,244 +0,0 @@ -// *********************************************************************** -// Assembly : Calc32 -// Author : Mir -// Created : 12-19-2021 -// -// Last Modified By : Mir -// Last Modified On : 10-22-2022 -// *********************************************************************** -// -// Copyright © JC-Soft 2020 -// -// -// *********************************************************************** -using BaseLib.Helper; -using System; -using System.ComponentModel; - -/// -/// The NonVisual namespace. -/// -namespace Calc32.NonVisual - -{ - /// - /// Class CalculatorClass. - /// Implements the - /// - public class CalculatorClass : Component - { - /// - /// Enum Mode - /// of Operation - /// - public enum eOpMode - { - /// - /// No mode - /// - NoMode = 0, - - /// - /// The calculate result - /// - CalcResult = 1, - /// - /// The plus mode - /// - Plus = 2, - /// - /// The minus mode - /// - Minus = 3, - /// - /// The multiply mode - /// - Multiply = 4, - /// - /// The divide - /// mode - /// - Divide = 5, - /// - /// The binary and - /// mode - /// - BinaryAnd = 6, - /// - /// The binary or - /// mode - /// - BinaryOr = 7, - /// - /// The binary xor - /// mode - /// - BinaryXor = 8, - /// - /// The binary not - /// mode - /// - BinaryNot = 9, - /// - /// The binary not - /// mode - /// - Negate = 10 - }; - - #region Property - #region private property - // Fields - /// - /// The accumulator - /// - private int nAccumulator; // Editorfeld - /// - /// The n mode - /// - private eOpMode nMode { get => _nMode; set => value.SetProperty(ref _nMode, FireModeChangeEvent); } - - /// - /// The b edit mode - /// - private bool bEditMode; - // private bool bNegMode; - /// - /// The n memory - /// - private int nMemory; // Gemerkte Zahl für Operationen - private eOpMode _nMode; - #endregion - - /// - /// The mode-string - /// - public readonly static string[] sMode = { "", "=", "+", "-", "*", "/", "&", "|", "x", "!" }; - /// - /// Occurs when a change happens. - /// - public event EventHandler<(string,object?,object?)>? OnChange; - - // Properties - /// - /// Gets or sets the accumulator. - /// - /// The accumulator. - [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] - public int Accumulator - { - get => nAccumulator; - set => value.SetProperty(ref nAccumulator, FireChangeEvent); - } - - /// - /// Gets or sets the memory. - /// - /// The memory. - [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] - public int Memory - { - get => nMemory; - set => value.SetProperty(ref nMemory, FireChangeEvent); - } - - - /// - /// Gets the operation text. - /// - /// The operation text. - public string OperationText => sMode[(int)nMode]; - #endregion - - #region Methode - /// - /// Initializes a new instance of the class. - /// - public CalculatorClass() - { - nAccumulator = 0; - nMode = 0; - OnChange = null; - } - private void FireChangeEvent(string Prop, int ol, int nw) - { - OnChange?.Invoke(this, (Prop,ol,nw)); - } - - private void FireModeChangeEvent(string arg1, eOpMode arg2, eOpMode arg3) - { - OnChange?.Invoke(this,(nameof(OperationText), sMode[(int)arg2], sMode[(int)arg3])); - } - - - /// - /// Button of Numbers. - /// - /// a number. - public void NumberButton(int aNumber) - { - if (bEditMode) - { - if (nAccumulator < int.MaxValue / 10) - { - Accumulator = nAccumulator * 10 + aNumber; - } - } - else - { - bEditMode = true; - Accumulator = aNumber; - } - } - - /// - /// Executes the specified Operation. - /// - /// The operation. - public void Operation(int v) - { - if ((v > 0) && (v <= (int)eOpMode.Negate)) - { - bEditMode &= (v ==(int)eOpMode.Negate); - Accumulator = nMode switch - { - eOpMode.Plus => nMemory + nAccumulator, - eOpMode.Minus => nMemory - nAccumulator, - eOpMode.Multiply => nMemory * nAccumulator, - eOpMode.Divide => nMemory / nAccumulator, - eOpMode.BinaryAnd => nMemory & nAccumulator, - eOpMode.BinaryOr => nMemory | nAccumulator, - eOpMode.BinaryXor => nMemory ^ nAccumulator, - _ => nAccumulator - }; - - if ((eOpMode)v == eOpMode.CalcResult) - { - nMode = (eOpMode)v; - Memory = 0; - } - else if ((eOpMode) v == eOpMode.BinaryNot) - { - Accumulator = ~nAccumulator; - } - else if ((eOpMode)v == eOpMode.Negate) - { - Accumulator = -nAccumulator; - } - else - { - nMode = (eOpMode)v; - Memory = nAccumulator; - } - - } - } - - /// - /// Backs the space. - /// - public void BackSpace() - => Accumulator = bEditMode ? nAccumulator / 10 : 0; - #endregion - } -} diff --git a/CSharpBible/Calc/Calc32/Program.cs b/CSharpBible/Calc/Calc32/Program.cs index 72e8c6858..0260d049a 100644 --- a/CSharpBible/Calc/Calc32/Program.cs +++ b/CSharpBible/Calc/Calc32/Program.cs @@ -25,36 +25,35 @@ /// The Calc32 namespace. /// /// -namespace CSharpBible.Calc32 +namespace Calc32; + +/// +/// Class Program. +/// +public static class Program { + /// - /// Class Program. + /// Der Haupteinstiegspunkt für die Anwendung. /// - public static class Program + [STAThread] + public static void Main() { - - /// - /// Der Haupteinstiegspunkt für die Anwendung. - /// - [STAThread] - public static void Main() - { - Init(); - Application.EnableVisualStyles(); + Init(); + Application.EnableVisualStyles(); // Application.SetCompatibleTextRenderingDefault(false); - Application.Run(Ioc.Default.GetRequiredService
()); - } + Application.Run(Ioc.Default.GetRequiredService()); + } - public static Action Init { get; set; } = static () => - { - var sp = new ServiceCollection() - .AddSingleton() - .AddTransient() - .AddTransient() - // .AddTransient() - .BuildServiceProvider(); + public static Action Init { get; set; } = static () => + { + var sp = new ServiceCollection() + .AddSingleton() + .AddTransient() + .AddTransient() + // .AddTransient() + .BuildServiceProvider(); - Ioc.Default.ConfigureServices(sp); - }; - } + Ioc.Default.ConfigureServices(sp); + }; } diff --git a/CSharpBible/Calc/Calc32Cons/Calc32Cons_net.csproj b/CSharpBible/Calc/Calc32Cons/Calc32Cons_net.csproj index 0c7918e93..3f8fca5b8 100644 --- a/CSharpBible/Calc/Calc32Cons/Calc32Cons_net.csproj +++ b/CSharpBible/Calc/Calc32Cons/Calc32Cons_net.csproj @@ -2,12 +2,18 @@ Exe - net6.0-windows;net7.0-windows + net6.0-windows;net7.0-windows;net8.0-windows true - + + $(TargetFrameworks);net9.0-windows + + + $(TargetFrameworks);net10.0-windows + + @@ -30,7 +36,7 @@ - + diff --git a/CSharpBible/Calc/Calc32Cons/Program.cs b/CSharpBible/Calc/Calc32Cons/Program.cs index f70225617..049b1c7e1 100644 --- a/CSharpBible/Calc/Calc32Cons/Program.cs +++ b/CSharpBible/Calc/Calc32Cons/Program.cs @@ -24,7 +24,6 @@ using ConsoleLib.Interfaces; using BaseLib.Interfaces; using CommunityToolkit.Mvvm.DependencyInjection; -using ConsoleLib.Interfaces; using BaseLib.Models; /// diff --git a/CSharpBible/Calc/Calc32Tests/NonVisual/CalculatorClassTests.cs b/CSharpBible/Calc/Calc32Tests/NonVisual/CalculatorClassTests.cs index 284e746cf..e857e09a5 100644 --- a/CSharpBible/Calc/Calc32Tests/NonVisual/CalculatorClassTests.cs +++ b/CSharpBible/Calc/Calc32Tests/NonVisual/CalculatorClassTests.cs @@ -19,7 +19,7 @@ /// The Tests namespace. /// /// -namespace CSharpBible.Calc32.NonVisual.Tests +namespace Calc32.Models.Tests { /// /// Defines test class CalculatorClassTests. @@ -94,7 +94,7 @@ public void AccumulatorTest() /// The instance containing the event data. void CalcChange(object? sender, (string, object?, object?) e) { - DebugLog += $"{sender}.Change({e.Item1},{e.Item2}=>{e.Item3}){Environment.NewLine}"; + DebugLog += $"{sender?.GetType().Name}.Change({e.Item1},{e.Item2}=>{e.Item3}){Environment.NewLine}"; nChanges++; } @@ -129,7 +129,7 @@ public void OnChangeTest2() /// /// Defines the test method ButtonTest. /// - [DataTestMethod()] + [TestMethod()] [DataRow("432", new int[] { 4, 3, 2 }, new int[] { 4, 43, 432 })] [DataRow("1234", new int[] { 1, 2, 3, 4 }, new int[] { 1, 12, 123, 1234 })] [DataRow("1234", new int[] { 1, 2, 3, 4 }, new int[] { 1, 12, 123, 1234 })] @@ -147,13 +147,13 @@ public void ButtonTest(string name, int[] aiButtons, int[] aiExp) /// /// Defines the test method ButtonBack. /// - [DataTestMethod()] - [DataRow("4", 4, false, 0, "Calc32.NonVisual.CalculatorClass.Change(Accumulator,4=>0)\r\n")] - [DataRow("431", 431, false, 0, "Calc32.NonVisual.CalculatorClass.Change(Accumulator,431=>0)\r\n")] - [DataRow("4", 4, true, 0, "Calc32.NonVisual.CalculatorClass.Change(Accumulator,4=>0)\r\n")] - [DataRow("431", 431, true, 43, "Calc32.NonVisual.CalculatorClass.Change(Accumulator,431=>43)\r\n")] - [DataRow("-4", -4, true, 0, "Calc32.NonVisual.CalculatorClass.Change(Accumulator,-4=>0)\r\n")] - [DataRow("-456", -456, true, -45, "Calc32.NonVisual.CalculatorClass.Change(Accumulator,-456=>-45)\r\n")] + [TestMethod()] + [DataRow("4", 4, false, 0, "CalculatorClass.Change(Accumulator,4=>0)\r\n")] + [DataRow("431", 431, false, 0, "CalculatorClass.Change(Accumulator,431=>0)\r\n")] + [DataRow("4", 4, true, 0, "CalculatorClass.Change(Accumulator,4=>0)\r\n")] + [DataRow("431", 431, true, 43, "CalculatorClass.Change(Accumulator,431=>43)\r\n")] + [DataRow("-4", -4, true, 0, "CalculatorClass.Change(Accumulator,-4=>0)\r\n")] + [DataRow("-456", -456, true, -45, "CalculatorClass.Change(Accumulator,-456=>-45)\r\n")] [DataRow("0", 0, true, 0, "")] public void ButtonBack(string name, int iAkk, bool xEdit, int iExp, string sExp) { @@ -191,79 +191,79 @@ private static void Enter(int iAkk, CalculatorClass fCalculatorClass) /// /// Defines the test method ButtonTest. /// - [DataTestMethod()] - [DataRow("4+3", CalculatorClass.eOpMode.Plus, new int[] { 4, 3 }, 7, new string[] { @"Calc32.NonVisual.CalculatorClass.Change(OperationText,=>=) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,0=>4) -Calc32.NonVisual.CalculatorClass.Change(OperationText,==>+) -Calc32.NonVisual.CalculatorClass.Change(Memory,0=>4) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,4=>3) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,3=>7) -Calc32.NonVisual.CalculatorClass.Change(OperationText,+=>=) -Calc32.NonVisual.CalculatorClass.Change(Memory,4=>0) + [TestMethod()] + [DataRow("4+3", CalculatorClass.eOpMode.Plus, new int[] { 4, 3 }, 7, new string[] { @"CalculatorClass.Change(OperationText,=>=) +CalculatorClass.Change(Accumulator,0=>4) +CalculatorClass.Change(OperationText,==>+) +CalculatorClass.Change(Register,0=>4) +CalculatorClass.Change(Accumulator,4=>3) +CalculatorClass.Change(Accumulator,3=>7) +CalculatorClass.Change(OperationText,+=>=) +CalculatorClass.Change(Register,4=>0) " })] - [DataRow("12-4", CalculatorClass.eOpMode.Minus, new int[] { 12, 4 }, 8, new string[] { @"Calc32.NonVisual.CalculatorClass.Change(OperationText,=>=) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,0=>12) -Calc32.NonVisual.CalculatorClass.Change(OperationText,==>-) -Calc32.NonVisual.CalculatorClass.Change(Memory,0=>12) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,12=>4) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,4=>8) -Calc32.NonVisual.CalculatorClass.Change(OperationText,-=>=) -Calc32.NonVisual.CalculatorClass.Change(Memory,12=>0) + [DataRow("12-4", CalculatorClass.eOpMode.Minus, new int[] { 12, 4 }, 8, new string[] { @"CalculatorClass.Change(OperationText,=>=) +CalculatorClass.Change(Accumulator,0=>12) +CalculatorClass.Change(OperationText,==>-) +CalculatorClass.Change(Register,0=>12) +CalculatorClass.Change(Accumulator,12=>4) +CalculatorClass.Change(Accumulator,4=>8) +CalculatorClass.Change(OperationText,-=>=) +CalculatorClass.Change(Register,12=>0) " })] - [DataRow("7*6", CalculatorClass.eOpMode.Multiply, new int[] { 7, 6 }, 42, new string[] { @"Calc32.NonVisual.CalculatorClass.Change(OperationText,=>=) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,0=>7) -Calc32.NonVisual.CalculatorClass.Change(OperationText,==>*) -Calc32.NonVisual.CalculatorClass.Change(Memory,0=>7) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,7=>6) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,6=>42) -Calc32.NonVisual.CalculatorClass.Change(OperationText,*=>=) -Calc32.NonVisual.CalculatorClass.Change(Memory,7=>0) + [DataRow("7*6", CalculatorClass.eOpMode.Multiply, new int[] { 7, 6 }, 42, new string[] { @"CalculatorClass.Change(OperationText,=>=) +CalculatorClass.Change(Accumulator,0=>7) +CalculatorClass.Change(OperationText,==>*) +CalculatorClass.Change(Register,0=>7) +CalculatorClass.Change(Accumulator,7=>6) +CalculatorClass.Change(Accumulator,6=>42) +CalculatorClass.Change(OperationText,*=>=) +CalculatorClass.Change(Register,7=>0) " })] - [DataRow("99/11", CalculatorClass.eOpMode.Divide, new int[] { 99, 11 }, 9, new string[] { @"Calc32.NonVisual.CalculatorClass.Change(OperationText,=>=) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,0=>99) -Calc32.NonVisual.CalculatorClass.Change(OperationText,==>/) -Calc32.NonVisual.CalculatorClass.Change(Memory,0=>99) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,99=>11) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,11=>9) -Calc32.NonVisual.CalculatorClass.Change(OperationText,/=>=) -Calc32.NonVisual.CalculatorClass.Change(Memory,99=>0) + [DataRow("99/11", CalculatorClass.eOpMode.Divide, new int[] { 99, 11 }, 9, new string[] { @"CalculatorClass.Change(OperationText,=>=) +CalculatorClass.Change(Accumulator,0=>99) +CalculatorClass.Change(OperationText,==>/) +CalculatorClass.Change(Register,0=>99) +CalculatorClass.Change(Accumulator,99=>11) +CalculatorClass.Change(Accumulator,11=>9) +CalculatorClass.Change(OperationText,/=>=) +CalculatorClass.Change(Register,99=>0) " })] - [DataRow("99 & 7", CalculatorClass.eOpMode.BinaryAnd, new int[] { 99, 7 }, 3, new string[] { @"Calc32.NonVisual.CalculatorClass.Change(OperationText,=>=) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,0=>99) -Calc32.NonVisual.CalculatorClass.Change(OperationText,==>&) -Calc32.NonVisual.CalculatorClass.Change(Memory,0=>99) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,99=>7) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,7=>3) -Calc32.NonVisual.CalculatorClass.Change(OperationText,&=>=) -Calc32.NonVisual.CalculatorClass.Change(Memory,99=>0) + [DataRow("99 & 7", CalculatorClass.eOpMode.BinaryAnd, new int[] { 99, 7 }, 3, new string[] { @"CalculatorClass.Change(OperationText,=>=) +CalculatorClass.Change(Accumulator,0=>99) +CalculatorClass.Change(OperationText,==>&) +CalculatorClass.Change(Register,0=>99) +CalculatorClass.Change(Accumulator,99=>7) +CalculatorClass.Change(Accumulator,7=>3) +CalculatorClass.Change(OperationText,&=>=) +CalculatorClass.Change(Register,99=>0) " })] - [DataRow("12 | 7", CalculatorClass.eOpMode.BinaryOr, new int[] { 12, 7 }, 15, new string[] { @"Calc32.NonVisual.CalculatorClass.Change(OperationText,=>=) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,0=>12) -Calc32.NonVisual.CalculatorClass.Change(OperationText,==>|) -Calc32.NonVisual.CalculatorClass.Change(Memory,0=>12) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,12=>7) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,7=>15) -Calc32.NonVisual.CalculatorClass.Change(OperationText,|=>=) -Calc32.NonVisual.CalculatorClass.Change(Memory,12=>0) + [DataRow("12 | 7", CalculatorClass.eOpMode.BinaryOr, new int[] { 12, 7 }, 15, new string[] { @"CalculatorClass.Change(OperationText,=>=) +CalculatorClass.Change(Accumulator,0=>12) +CalculatorClass.Change(OperationText,==>|) +CalculatorClass.Change(Register,0=>12) +CalculatorClass.Change(Accumulator,12=>7) +CalculatorClass.Change(Accumulator,7=>15) +CalculatorClass.Change(OperationText,|=>=) +CalculatorClass.Change(Register,12=>0) " })] - [DataRow("12 x 7", CalculatorClass.eOpMode.BinaryXor, new int[] { 12, 7 }, 11, new string[] { @"Calc32.NonVisual.CalculatorClass.Change(OperationText,=>=) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,0=>12) -Calc32.NonVisual.CalculatorClass.Change(OperationText,==>x) -Calc32.NonVisual.CalculatorClass.Change(Memory,0=>12) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,12=>7) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,7=>11) -Calc32.NonVisual.CalculatorClass.Change(OperationText,x=>=) -Calc32.NonVisual.CalculatorClass.Change(Memory,12=>0) + [DataRow("12 x 7", CalculatorClass.eOpMode.BinaryXor, new int[] { 12, 7 }, 11, new string[] { @"CalculatorClass.Change(OperationText,=>=) +CalculatorClass.Change(Accumulator,0=>12) +CalculatorClass.Change(OperationText,==>x) +CalculatorClass.Change(Register,0=>12) +CalculatorClass.Change(Accumulator,12=>7) +CalculatorClass.Change(Accumulator,7=>11) +CalculatorClass.Change(OperationText,x=>=) +CalculatorClass.Change(Register,12=>0) " })] - [DataRow("12 ! 7", CalculatorClass.eOpMode.BinaryNot, new int[] { 12, -2 }, -2, new string[] { @"Calc32.NonVisual.CalculatorClass.Change(OperationText,=>=) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,0=>12) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,12=>-13) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,-13=>-2) + [DataRow("12 ! 7", CalculatorClass.eOpMode.BinaryNot, new int[] { 12, -2 }, -2, new string[] { @"CalculatorClass.Change(OperationText,=>=) +CalculatorClass.Change(Accumulator,0=>12) +CalculatorClass.Change(Accumulator,12=>-13) +CalculatorClass.Change(Accumulator,-13=>-2) " })] - [DataRow("12 ~ 7", CalculatorClass.eOpMode.Negate, new int[] { 12, -2 }, -2, new string[] { @"Calc32.NonVisual.CalculatorClass.Change(OperationText,=>=) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,0=>12) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,12=>-12) -Calc32.NonVisual.CalculatorClass.Change(Accumulator,-12=>-2) + [DataRow("12 ~ 7", CalculatorClass.eOpMode.Negate, new int[] { 12, -2 }, -2, new string[] { @"CalculatorClass.Change(OperationText,=>=) +CalculatorClass.Change(Accumulator,0=>12) +CalculatorClass.Change(Accumulator,12=>-12) +CalculatorClass.Change(Accumulator,-12=>-2) " })] public void OperationTest(string name, CalculatorClass.eOpMode eO, int[] aiData, int iExp, string[] asExp) { diff --git a/CSharpBible/Calc/Calc32Tests/ProgramTests.cs b/CSharpBible/Calc/Calc32Tests/ProgramTests.cs index 7bc392190..8a242e361 100644 --- a/CSharpBible/Calc/Calc32Tests/ProgramTests.cs +++ b/CSharpBible/Calc/Calc32Tests/ProgramTests.cs @@ -1,5 +1,4 @@ using CommunityToolkit.Mvvm.DependencyInjection; -using CSharpBible.Calc32; using Microsoft.Extensions.DependencyInjection; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; diff --git a/CSharpBible/Calc/Calc32WPFTests/ViewModels/MainWindowViewModelTests.cs b/CSharpBible/Calc/Calc32WPFTests/ViewModels/MainWindowViewModelTests.cs index 84be1096f..7afe01254 100644 --- a/CSharpBible/Calc/Calc32WPFTests/ViewModels/MainWindowViewModelTests.cs +++ b/CSharpBible/Calc/Calc32WPFTests/ViewModels/MainWindowViewModelTests.cs @@ -101,7 +101,7 @@ public void MainWindowViewModelTestSetup() /// The i pc count. /// The s akk. /// - [DataTestMethod()] + [TestMethod()] [DataRow("0", 0, 0, "")] [DataRow("1", 3, 1, "Accumulator:1\r\nMemory:0\r\nOperationText:\r\n")] [DataRow("2", 3, 2, "Accumulator:2\r\nMemory:0\r\nOperationText:\r\n")] @@ -129,7 +129,7 @@ public void MainWindow_VM_NumButton(string sButtons, int iPCCount, int sAkk, str } - [DataTestMethod()] + [TestMethod()] [DataRow("0",100, 0, 100, "", new string[] { "" })] [DataRow("0", 0, 0, 0, "", new string[] { "" })] [DataRow("0", -1, 0, -1, "", new string[] { "" })] @@ -186,7 +186,7 @@ public void MainWindow_VM_OpButton(string sButtons, int iAcc, int iPCCount, int Assert.AreEqual(asExpPC[0], _PropChanged, $"Test: {sButtons}.PropChanges"); } - [DataTestMethod] + [TestMethod] [DataRow("",false,0,0,new string[] {"" })] [DataRow("1", true, 3, 0, new string[] { "Accumulator:0\r\nMemory:0\r\nOperationText:\r\n" })] [DataRow("10", true, 3, 1, new string[] { "Accumulator:1\r\nMemory:0\r\nOperationText:\r\n" })] diff --git a/CSharpBible/Calc/Calc64BaseTests/BinaryOperationTests.cs b/CSharpBible/Calc/Calc64BaseTests/BinaryOperationTests.cs index 0ad00f4a2..0cdba3122 100644 --- a/CSharpBible/Calc/Calc64BaseTests/BinaryOperationTests.cs +++ b/CSharpBible/Calc/Calc64BaseTests/BinaryOperationTests.cs @@ -57,7 +57,7 @@ public void BinaryOperationTest() /// Defines the test method ExecuteTest. /// /// - [DataTestMethod()] + [TestMethod()] [DynamicData(nameof(ExecuteTestData))] public void ExecuteTest(string name, object[] oArgs, bool xNoFkt, bool xRes, long lExp1, long lExp2) { diff --git a/CSharpBible/Calc/Calc64BaseTests/Calc64ModelTests.cs b/CSharpBible/Calc/Calc64BaseTests/Calc64ModelTests.cs index 99dea5cf8..15ad39e8e 100644 --- a/CSharpBible/Calc/Calc64BaseTests/Calc64ModelTests.cs +++ b/CSharpBible/Calc/Calc64BaseTests/Calc64ModelTests.cs @@ -70,7 +70,7 @@ public void GetShortDescTest(EOpMode eVal,string sExp) Assert.AreEqual(sExp, Calc64Model.GetShortDesc(eVal)); } - [DataTestMethod()] + [TestMethod()] [DataRow(" 0",new int[] {0},null,0L,new string[] {"" })] [DataRow(" 98", new int[] { 9,8 }, null, 98L, new string[] { @"COpChg(Calc64Base.Calc64Model,Accumulator,0 => 9) COpChg(Calc64Base.Calc64Model,Accumulator,9 => 98) @@ -120,7 +120,7 @@ public void ButtonTest(string name, int[] iVal,int? iBase,long lExp,string[] asE Assert.AreEqual(asExp[0],DebugLog); } - [DataTestMethod()] + [TestMethod()] [DataRow(1,0,new int[] { -1},0,0,0,new string[] { "COpChg(Calc64Base.Calc64Model,Accumulator,1 => 0)\r\n" })] [DataRow(2, 1, new int[] { 2,1 }, 3, 0, 0, new string[] { @"COpChg(Calc64Base.Calc64Model,OperationMode,NoMode => Plus) COpChg(Calc64Base.Calc64Model,Register,0 => 2) diff --git a/CSharpBible/Calc/Calc64BaseTests/Calc64Tests.cs b/CSharpBible/Calc/Calc64BaseTests/Calc64Tests.cs index be7260b8b..0ac3e0634 100644 --- a/CSharpBible/Calc/Calc64BaseTests/Calc64Tests.cs +++ b/CSharpBible/Calc/Calc64BaseTests/Calc64Tests.cs @@ -129,7 +129,7 @@ public void NoPropChangeTest() /// The o out data. /// if set to true [x exp result]. /// - [DataTestMethod()] + [TestMethod()] [DataRow("1", 3, new long[] { 1, 2, 3 }, new long[] { 4, 5, 6 }, true)] [DataRow("1-", 3, new long[] { 1, 2, 3 }, new long[] { 4, 5, 6 }, false)] [DataRow("2", 2, new long[] { 1, 2 }, new long[] { 5, 6 }, true)] @@ -181,7 +181,7 @@ public void DoOperationTest(string Name, int iExpArgCount, long[] oInData, long[ /// The o out data. /// if set to true [x exp result]. /// - [DataTestMethod()] + [TestMethod()] [DataRow("1", "?", 3, new long[] { 1, 2, 3 }, new long[] { 4, 5, 6 }, true)] [DataRow("1-", "?", 3, new long[] { 1, 2, 3 }, new long[] { 4, 5, 6 }, false)] [DataRow("2", "?", 2, new long[] { 1, 2 }, new long[] { 5, 6 }, true)] @@ -239,7 +239,7 @@ public void DoOperationTest1(string Name, string Op, int iExpArgCount, long[] oI /// The o out data. /// if set to true [x exp result]. /// - [DataTestMethod()] + [TestMethod()] [DataRow("1", 1, 3, new long[] { 1, 2, 3 }, new long[] { 4, 5, 6 }, true)] [DataRow("1-", 1, 3, new long[] { 1, 2, 3 }, new long[] { 4, 5, 6 }, false)] [DataRow("2", 1, 2, new long[] { 1, 2 }, new long[] { 5, 6 }, true)] @@ -330,7 +330,7 @@ public void DoOperationNIO3Test() /// The s op. /// if set to true [x exp result]. /// - [DataTestMethod()] + [TestMethod()] [DataRow("1+", 1, "?", true)] [DataRow("1-", 1, "?", false)] [DataRow("0-", 0, "?", false)] @@ -351,7 +351,7 @@ public void IsRegisterOperationTest(string Name, int iOp, string _, bool xExpRes /// The s op. /// if set to true [x exp result]. /// - [DataTestMethod()] + [TestMethod()] [DataRow("1+", 1, "?", true)] [DataRow("1-", 1, "?", false)] [DataRow("2", 2, "+", true)] @@ -383,7 +383,7 @@ public void IsRegisterOperationTest1(string Name, int _, string sOp, bool xExpRe /// The s op. /// if set to true [x exp result]. /// - [DataTestMethod()] + [TestMethod()] [DataRow("1+", 1, "?", true)] [DataRow("1-", 1, "?", false)] [DataRow("2", 2, "+", true)] @@ -414,7 +414,7 @@ public void IsRegisterOperationTest2(string Name, int iOp, string _,bool xExpRes /// The i op. /// The s op. /// - [DataTestMethod()] + [TestMethod()] [DataRow("1", 1, "?")] [DataRow("2", 2, "+")] [DataRow("3", 3, "-")] @@ -453,7 +453,7 @@ public void ToCalcOperationTest(string Name, int iOp, string? sOp) /// The i op. /// The s op. /// - [DataTestMethod()] + [TestMethod()] [DataRow("1", 1, "?")] [DataRow("2", 2, "+")] [DataRow("3", 3, "-")] diff --git a/CSharpBible/Calc/Calc64BaseTests/CalcOperationTests.cs b/CSharpBible/Calc/Calc64BaseTests/CalcOperationTests.cs index 100b62a1e..ce7fda81f 100644 --- a/CSharpBible/Calc/Calc64BaseTests/CalcOperationTests.cs +++ b/CSharpBible/Calc/Calc64BaseTests/CalcOperationTests.cs @@ -52,7 +52,7 @@ public void CalcOpDefautTest() /// The o out data. /// if set to true [x exp result]. /// - [DataTestMethod()] + [TestMethod()] [DataRow("1", 3, new object[] { 1, 2, 3 }, new object[] { 4, 5, 6 }, true)] [DataRow("2", 2, new object[] { 1, 2 }, new object[] { 5, 6 }, false)] public void ExecuteTest(string Name, int iExpArgCount, object[] oInData, object[] oOutData, bool xExpResult) diff --git a/CSharpBible/Calc/Calc64BaseTests/StandardOperationsTests.cs b/CSharpBible/Calc/Calc64BaseTests/StandardOperationsTests.cs index 98932d3c2..72107fe6d 100644 --- a/CSharpBible/Calc/Calc64BaseTests/StandardOperationsTests.cs +++ b/CSharpBible/Calc/Calc64BaseTests/StandardOperationsTests.cs @@ -19,168 +19,167 @@ /// The Tests namespace. /// /// -namespace Calc64Base.Tests +namespace Calc64Base.Tests; + +/// +/// Defines test class StandardOperationsTests. +/// +/// +[TestClass()] +public class StandardOperationsTests { /// - /// Defines test class StandardOperationsTests. + /// Enum Exceptions /// /// - [TestClass()] - public class StandardOperationsTests + private enum Exceptions { /// - /// Enum Exceptions + /// The none /// /// - private enum Exceptions - { - /// - /// The none - /// - /// - None, - /// - /// The e div by zero ex - /// - /// - eDivByZeroEx - } - + None, /// - /// Gets all test1. + /// The e div by zero ex /// - /// The s op. - /// The s. - /// The argument l. - /// if set to true [x result]. - /// The erg. - /// The e. /// - [DataTestMethod()] - [DataRow("+", "1", new Int64[] { 0, 0 },true,new Int64[] {0L,0L })] - [DataRow("+", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 2L, 1L })] - [DataRow("+", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 0L, -1L })] - [DataRow("+", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1L, -999999999999L })] - [DataRow("+", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { -9223372036854775808L, 1L })] - [DataRow("-", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L })] - [DataRow("-", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 0L, 1L })] - [DataRow("-", "3", new Int64[] { -1L, 1L }, true, new Int64[] { 2L, 1L })] - [DataRow("-", "4", new Int64[] { 1000000000000L, 999999999999L }, true, new Int64[] { -1L, 999999999999L })] - [DataRow("-", "5", new Int64[] { 1L, Int64.MinValue }, true, new Int64[] { 9223372036854775807L, -9223372036854775808L })] - [DataRow("*", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L })] - [DataRow("*", "2", new Int64[] { 1L, -2L }, true, new Int64[] { -2L, -2L })] - [DataRow("*", "3", new Int64[] { -2L, 1L }, true, new Int64[] { -2L, 1L })] - [DataRow("*", "4", new Int64[] { -3L, -2L }, true, new Int64[] { 6L, -2L })] - [DataRow("*", "5", new Int64[] { 1000000000L, 999999999L }, true, new Int64[] { 999999999000000000L, 999999999L })] - [DataRow("*", "6", new Int64[] { Int64.MinValue, -10L }, true, new Int64[] { 0L, -10L })] // ?? - [DataRow("/", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L },(object)Exceptions.eDivByZeroEx)] - [DataRow("/", "2", new Int64[] { 1L, -2L }, true, new Int64[] { -2L, -2L })] - [DataRow("/", "3", new Int64[] { -2L, 1L }, true, new Int64[] { 0L, 1L })] - [DataRow("/", "4", new Int64[] { -2L, -3L }, true, new Int64[] { 1L, -3L })] - [DataRow("/", "5", new Int64[] { 999999999L, 1000000000L }, true, new Int64[] { 1L, 1000000000L })] - [DataRow("/", "6", new Int64[] { -10L, Int64.MinValue }, true, new Int64[] { Int64.MaxValue / 10L, Int64.MinValue })] // ?? - [DataRow("^", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 1L, 0L })] - [DataRow("^", "2", new Int64[] { 1L, -2L }, true, new Int64[] { -2L, -2L })] - [DataRow("^", "3", new Int64[] { -2L, 1L }, true, new Int64[] { 1L, 1L })] - [DataRow("^", "4", new Int64[] { 2L, 3L }, true, new Int64[] { 9L, 3L })] - [DataRow("^", "5", new Int64[] { 3L, 2000000L}, true, new Int64[] { 8000000000000000000L, 2000000L })] //?? - [DataRow("^", "6", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { 1L, 1L })] // ?? - [DataRow("±", "1", new Int64[] { 0L }, true, new Int64[] { 0L })] - [DataRow("±", "2", new Int64[] { 1L }, true, new Int64[] { -1L })] - [DataRow("±", "3", new Int64[] { -2L }, true, new Int64[] { 2L })] - [DataRow("±", "4", new Int64[] { long.MaxValue }, true, new Int64[] { -long.MaxValue })] - [DataRow("±", "5", new Int64[] { long.MinValue }, true, new Int64[] { long.MinValue })] //?? - [DataRow("~", "1", new Int64[] { 0L }, true, new Int64[] { -1L })] - [DataRow("~", "2", new Int64[] { 1L }, true, new Int64[] { -2L })] - [DataRow("~", "3", new Int64[] { -2L }, true, new Int64[] { 1L })] - [DataRow("~", "4", new Int64[] { long.MaxValue }, true, new Int64[] { long.MinValue })] - [DataRow("~", "5", new Int64[] { long.MinValue }, true, new Int64[] { long.MaxValue })] //?? - [DataRow("&", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L })] - [DataRow("&", "2", new Int64[] { 1L, -2L }, true, new Int64[] { 0L, -2L })] - [DataRow("&", "3", new Int64[] { -2L, 1L }, true, new Int64[] { 0L, 1L })] - [DataRow("&", "4", new Int64[] { -3L, -2L }, true, new Int64[] { -4L, -2L })] - [DataRow("&", "5", new Int64[] { 1000000000L, 999999999L }, true, new Int64[] { 999999488L, 999999999L })] - [DataRow("&", "6", new Int64[] { Int64.MinValue, -10L }, true, new Int64[] { Int64.MinValue, -10L })] - [DataRow("&", "7", new Int64[] { Int64.MinValue, 10L }, true, new Int64[] { 0, 10L })] - [DataRow("|", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] - [DataRow("|", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 1L })] - [DataRow("|", "3", new Int64[] { 1L, -1L }, true, new Int64[] { -1L, -1L })] - [DataRow("|", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -4095L, -999999999999L })] - [DataRow("|", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, 1L })] - [DataRow("x", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] - [DataRow("x", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 0L, 1L })] - [DataRow("x", "3", new Int64[] { 1L, -1L }, true, new Int64[] { -2L, -1L })] - [DataRow("x", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -8191L, -999999999999L })] - [DataRow("x", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue-1, 1L })] - [DataRow("&~", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L })] - [DataRow("&~", "2", new Int64[] { 1L, -2L }, true, new Int64[] { -2L, -2L })] - [DataRow("&~", "3", new Int64[] { -2L, 1L }, true, new Int64[] { 1L, 1L })] - [DataRow("&~", "4", new Int64[] { -3L, -2L }, true, new Int64[] { 2L, -2L })] - [DataRow("&~", "5", new Int64[] { 1000000000L, 999999999L }, true, new Int64[] { 511, 999999999L })] - [DataRow("&~", "6", new Int64[] { Int64.MinValue, -10L }, true, new Int64[] { Int64.MaxValue-9, -10L })] - [DataRow("&~", "7", new Int64[] { Int64.MinValue, 10L }, true, new Int64[] { 10, 10L })] - [DataRow("|~", "1", new Int64[] { 0, 0 }, true, new Int64[] { -1L, 0L })] - [DataRow("|~", "2", new Int64[] { 1L, 1L }, true, new Int64[] { -1L, 1L })] - [DataRow("|~", "3", new Int64[] { 1L, -1L }, true, new Int64[] { -1L, -1L })] - [DataRow("|~", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -999999995905L, -999999999999L })] - [DataRow("|~", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MinValue+1, 1L })] - [DataRow("x~", "1", new Int64[] { 0, 0 }, true, new Int64[] { -1L, 0L })] - [DataRow("x~", "2", new Int64[] { 1L, 1L }, true, new Int64[] { -1L, 1L })] - [DataRow("x~", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, -1L })] - [DataRow("x~", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 8190L, -999999999999L })] - [DataRow("x~", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MinValue + 1, 1L })] - [DataRow("%", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L }, (object)Exceptions.eDivByZeroEx)] - [DataRow("%", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 0L, 1L })] - [DataRow("%", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 0L, -1L })] - [DataRow("%", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -999999999999L, -999999999999L })] - [DataRow("%", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { 1, 1L })] - [DataRow("==", "1", new Int64[] { 0, 0 }, true, new Int64[] { -1L, 0L })] - [DataRow("==", "2", new Int64[] { 1L, 1L }, true, new Int64[] { -1L, 1L })] - [DataRow("==", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, -1L })] - [DataRow("==", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 8190L, -999999999999L })] - [DataRow("==", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MinValue + 1, 1L })] - [DataRow("MR", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] - [DataRow("MR", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 1L })] - [DataRow("MR", "3", new Int64[] { 1L, -1L }, true, new Int64[] { -1L, -1L })] - [DataRow("MR", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -999999999999L, -999999999999L })] - [DataRow("MR", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { 1L, 1L })] - [DataRow("MS", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] - [DataRow("MS", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 1L })] - [DataRow("MS", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, 1L })] - [DataRow("MS", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1000000000000L, 1000000000000L })] - [DataRow("MS", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, Int64.MaxValue })] - [DataRow("M+", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] - [DataRow("M+", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 2L })] - [DataRow("M+", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, 0L })] - [DataRow("M+", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1000000000000L, 1L })] - [DataRow("M+", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, Int64.MinValue })] - [DataRow("M-", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] - [DataRow("M-", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 0L })] - [DataRow("M-", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, -2L })] - [DataRow("M-", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1000000000000L, -1999999999999L })] - [DataRow("M-", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, Int64.MinValue + 2 })] - [DataRow("MC", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] - [DataRow("MC", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 0L })] - [DataRow("MC", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, 0L })] - [DataRow("MC", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1000000000000L, 0L })] - [DataRow("MC", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, 0L })] - public void GetAllTest1(string sOp,string _, Int64[] argL,bool xResult, Int64[] erg, object? e = null) - { - var co = StandardOperations.GetAll().First((o)=>o.ShortDesc==sOp); - Assert.IsNotNull(co); - var arg = new object[argL.Length]; - for (int i = 0; i < arg.Length; i++) - arg[i] = argL[i]; - if (e==null) - Assert.AreEqual(xResult, co.Execute(ref arg)); - else - switch ((Exceptions)e) - { - case Exceptions.eDivByZeroEx : Assert.ThrowsException(()=> co.Execute(ref arg));break; - default: Assert.Fail();break; - } - for (int i = 0; i < arg.Length; i++) - Assert.AreEqual(erg[i], arg[i],$"erg[{i}]({erg[i]}) == arg[{i}]({arg[i]})"); - } + eDivByZeroEx + } + + /// + /// Gets all test1. + /// + /// The s op. + /// The s. + /// The argument l. + /// if set to true [x result]. + /// The erg. + /// The e. + /// + [TestMethod()] + [DataRow("+", "1", new Int64[] { 0, 0 },true,new Int64[] {0L,0L })] + [DataRow("+", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 2L, 1L })] + [DataRow("+", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 0L, -1L })] + [DataRow("+", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1L, -999999999999L })] + [DataRow("+", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { -9223372036854775808L, 1L })] + [DataRow("-", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L })] + [DataRow("-", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 0L, 1L })] + [DataRow("-", "3", new Int64[] { -1L, 1L }, true, new Int64[] { 2L, 1L })] + [DataRow("-", "4", new Int64[] { 1000000000000L, 999999999999L }, true, new Int64[] { -1L, 999999999999L })] + [DataRow("-", "5", new Int64[] { 1L, Int64.MinValue }, true, new Int64[] { 9223372036854775807L, -9223372036854775808L })] + [DataRow("*", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L })] + [DataRow("*", "2", new Int64[] { 1L, -2L }, true, new Int64[] { -2L, -2L })] + [DataRow("*", "3", new Int64[] { -2L, 1L }, true, new Int64[] { -2L, 1L })] + [DataRow("*", "4", new Int64[] { -3L, -2L }, true, new Int64[] { 6L, -2L })] + [DataRow("*", "5", new Int64[] { 1000000000L, 999999999L }, true, new Int64[] { 999999999000000000L, 999999999L })] + [DataRow("*", "6", new Int64[] { Int64.MinValue, -10L }, true, new Int64[] { 0L, -10L })] // ?? + [DataRow("/", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L },(object)Exceptions.eDivByZeroEx)] + [DataRow("/", "2", new Int64[] { 1L, -2L }, true, new Int64[] { -2L, -2L })] + [DataRow("/", "3", new Int64[] { -2L, 1L }, true, new Int64[] { 0L, 1L })] + [DataRow("/", "4", new Int64[] { -2L, -3L }, true, new Int64[] { 1L, -3L })] + [DataRow("/", "5", new Int64[] { 999999999L, 1000000000L }, true, new Int64[] { 1L, 1000000000L })] + [DataRow("/", "6", new Int64[] { -10L, Int64.MinValue }, true, new Int64[] { Int64.MaxValue / 10L, Int64.MinValue })] // ?? + [DataRow("^", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 1L, 0L })] + [DataRow("^", "2", new Int64[] { 1L, -2L }, true, new Int64[] { -2L, -2L })] + [DataRow("^", "3", new Int64[] { -2L, 1L }, true, new Int64[] { 1L, 1L })] + [DataRow("^", "4", new Int64[] { 2L, 3L }, true, new Int64[] { 9L, 3L })] + [DataRow("^", "5", new Int64[] { 3L, 2000000L}, true, new Int64[] { 8000000000000000000L, 2000000L })] //?? + [DataRow("^", "6", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { 1L, 1L })] // ?? + [DataRow("±", "1", new Int64[] { 0L }, true, new Int64[] { 0L })] + [DataRow("±", "2", new Int64[] { 1L }, true, new Int64[] { -1L })] + [DataRow("±", "3", new Int64[] { -2L }, true, new Int64[] { 2L })] + [DataRow("±", "4", new Int64[] { long.MaxValue }, true, new Int64[] { -long.MaxValue })] + [DataRow("±", "5", new Int64[] { long.MinValue }, true, new Int64[] { long.MinValue })] //?? + [DataRow("~", "1", new Int64[] { 0L }, true, new Int64[] { -1L })] + [DataRow("~", "2", new Int64[] { 1L }, true, new Int64[] { -2L })] + [DataRow("~", "3", new Int64[] { -2L }, true, new Int64[] { 1L })] + [DataRow("~", "4", new Int64[] { long.MaxValue }, true, new Int64[] { long.MinValue })] + [DataRow("~", "5", new Int64[] { long.MinValue }, true, new Int64[] { long.MaxValue })] //?? + [DataRow("&", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L })] + [DataRow("&", "2", new Int64[] { 1L, -2L }, true, new Int64[] { 0L, -2L })] + [DataRow("&", "3", new Int64[] { -2L, 1L }, true, new Int64[] { 0L, 1L })] + [DataRow("&", "4", new Int64[] { -3L, -2L }, true, new Int64[] { -4L, -2L })] + [DataRow("&", "5", new Int64[] { 1000000000L, 999999999L }, true, new Int64[] { 999999488L, 999999999L })] + [DataRow("&", "6", new Int64[] { Int64.MinValue, -10L }, true, new Int64[] { Int64.MinValue, -10L })] + [DataRow("&", "7", new Int64[] { Int64.MinValue, 10L }, true, new Int64[] { 0, 10L })] + [DataRow("|", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] + [DataRow("|", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 1L })] + [DataRow("|", "3", new Int64[] { 1L, -1L }, true, new Int64[] { -1L, -1L })] + [DataRow("|", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -4095L, -999999999999L })] + [DataRow("|", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, 1L })] + [DataRow("x", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] + [DataRow("x", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 0L, 1L })] + [DataRow("x", "3", new Int64[] { 1L, -1L }, true, new Int64[] { -2L, -1L })] + [DataRow("x", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -8191L, -999999999999L })] + [DataRow("x", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue-1, 1L })] + [DataRow("&~", "1", new Int64[] { 0L, 0L }, true, new Int64[] { 0L, 0L })] + [DataRow("&~", "2", new Int64[] { 1L, -2L }, true, new Int64[] { -2L, -2L })] + [DataRow("&~", "3", new Int64[] { -2L, 1L }, true, new Int64[] { 1L, 1L })] + [DataRow("&~", "4", new Int64[] { -3L, -2L }, true, new Int64[] { 2L, -2L })] + [DataRow("&~", "5", new Int64[] { 1000000000L, 999999999L }, true, new Int64[] { 511, 999999999L })] + [DataRow("&~", "6", new Int64[] { Int64.MinValue, -10L }, true, new Int64[] { Int64.MaxValue-9, -10L })] + [DataRow("&~", "7", new Int64[] { Int64.MinValue, 10L }, true, new Int64[] { 10, 10L })] + [DataRow("|~", "1", new Int64[] { 0, 0 }, true, new Int64[] { -1L, 0L })] + [DataRow("|~", "2", new Int64[] { 1L, 1L }, true, new Int64[] { -1L, 1L })] + [DataRow("|~", "3", new Int64[] { 1L, -1L }, true, new Int64[] { -1L, -1L })] + [DataRow("|~", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -999999995905L, -999999999999L })] + [DataRow("|~", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MinValue+1, 1L })] + [DataRow("x~", "1", new Int64[] { 0, 0 }, true, new Int64[] { -1L, 0L })] + [DataRow("x~", "2", new Int64[] { 1L, 1L }, true, new Int64[] { -1L, 1L })] + [DataRow("x~", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, -1L })] + [DataRow("x~", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 8190L, -999999999999L })] + [DataRow("x~", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MinValue + 1, 1L })] + [DataRow("%", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L }, (object)Exceptions.eDivByZeroEx)] + [DataRow("%", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 0L, 1L })] + [DataRow("%", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 0L, -1L })] + [DataRow("%", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -999999999999L, -999999999999L })] + [DataRow("%", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { 1, 1L })] + [DataRow("==", "1", new Int64[] { 0, 0 }, true, new Int64[] { -1L, 0L })] + [DataRow("==", "2", new Int64[] { 1L, 1L }, true, new Int64[] { -1L, 1L })] + [DataRow("==", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, -1L })] + [DataRow("==", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 8190L, -999999999999L })] + [DataRow("==", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MinValue + 1, 1L })] + [DataRow("MR", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] + [DataRow("MR", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 1L })] + [DataRow("MR", "3", new Int64[] { 1L, -1L }, true, new Int64[] { -1L, -1L })] + [DataRow("MR", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { -999999999999L, -999999999999L })] + [DataRow("MR", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { 1L, 1L })] + [DataRow("MS", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] + [DataRow("MS", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 1L })] + [DataRow("MS", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, 1L })] + [DataRow("MS", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1000000000000L, 1000000000000L })] + [DataRow("MS", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, Int64.MaxValue })] + [DataRow("M+", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] + [DataRow("M+", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 2L })] + [DataRow("M+", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, 0L })] + [DataRow("M+", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1000000000000L, 1L })] + [DataRow("M+", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, Int64.MinValue })] + [DataRow("M-", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] + [DataRow("M-", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 0L })] + [DataRow("M-", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, -2L })] + [DataRow("M-", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1000000000000L, -1999999999999L })] + [DataRow("M-", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, Int64.MinValue + 2 })] + [DataRow("MC", "1", new Int64[] { 0, 0 }, true, new Int64[] { 0L, 0L })] + [DataRow("MC", "2", new Int64[] { 1L, 1L }, true, new Int64[] { 1L, 0L })] + [DataRow("MC", "3", new Int64[] { 1L, -1L }, true, new Int64[] { 1L, 0L })] + [DataRow("MC", "4", new Int64[] { 1000000000000L, -999999999999L }, true, new Int64[] { 1000000000000L, 0L })] + [DataRow("MC", "5", new Int64[] { Int64.MaxValue, 1L }, true, new Int64[] { Int64.MaxValue, 0L })] + public void GetAllTest1(string sOp,string _, Int64[] argL,bool xResult, Int64[] erg, object? e = null) + { + var co = StandardOperations.GetAll().First((o)=>o.ShortDesc==sOp); + Assert.IsNotNull(co); + var arg = new object[argL.Length]; + for (int i = 0; i < arg.Length; i++) + arg[i] = argL[i]; + if (e==null) + Assert.AreEqual(xResult, co.Execute(ref arg)); + else + switch ((Exceptions)e) + { + case Exceptions.eDivByZeroEx : Assert.ThrowsExactly(()=> co.Execute(ref arg));break; + default: Assert.Fail();break; + } + for (int i = 0; i < arg.Length; i++) + Assert.AreEqual(erg[i], arg[i],$"erg[{i}]({erg[i]}) == arg[{i}]({arg[i]})"); } } \ No newline at end of file diff --git a/CSharpBible/Calc/Calc64BaseTests/ToMemOperationTests.cs b/CSharpBible/Calc/Calc64BaseTests/ToMemOperationTests.cs index f44dc4f32..7550c253e 100644 --- a/CSharpBible/Calc/Calc64BaseTests/ToMemOperationTests.cs +++ b/CSharpBible/Calc/Calc64BaseTests/ToMemOperationTests.cs @@ -54,7 +54,7 @@ public void ToMemOperationTest() /// Defines the test method ExecuteTest. /// /// - [DataTestMethod()] + [TestMethod()] [DynamicData(nameof(ExecuteTestData))] public void ExecuteTest(string name, object[] oArgs, bool xNoFkt,bool xRes,long lExp1,long lExp2) { diff --git a/CSharpBible/Calc/Calc64BaseTests/UnaryOperationTests.cs b/CSharpBible/Calc/Calc64BaseTests/UnaryOperationTests.cs index 6a1cd3434..bff02e506 100644 --- a/CSharpBible/Calc/Calc64BaseTests/UnaryOperationTests.cs +++ b/CSharpBible/Calc/Calc64BaseTests/UnaryOperationTests.cs @@ -57,7 +57,7 @@ public void UnaryOperationTest() /// Defines the test method ExecuteTest. /// /// - [DataTestMethod()] + [TestMethod()] [DynamicData(nameof(ExecuteTestData))] public void ExecuteTest(string name, object[] oArgs, bool xNoFkt, bool xRes, long lExp1, long _) { diff --git a/CSharpBible/Calc/Calc64WFTests/ViewModels/FrmCalc64MainViewModelTests.cs b/CSharpBible/Calc/Calc64WFTests/ViewModels/FrmCalc64MainViewModelTests.cs index 56f1bcc65..1410724f1 100644 --- a/CSharpBible/Calc/Calc64WFTests/ViewModels/FrmCalc64MainViewModelTests.cs +++ b/CSharpBible/Calc/Calc64WFTests/ViewModels/FrmCalc64MainViewModelTests.cs @@ -68,7 +68,7 @@ public void SetupTest() /// The i pc count. /// The s akk. /// - [DataTestMethod()] + [TestMethod()] [DataRow("0", 0, 0, "")] [DataRow("1", 2, 1, "Akkumulator:1\r\nAccumulator:\r\n")] [DataRow("2", 2, 2, "Akkumulator:2\r\nAccumulator:\r\n")] @@ -94,7 +94,7 @@ public void MainWindow_VM_NumButton(string sButtons, int iPCCount, int iExpAkk, Assert.AreEqual(sExpPC, _PropChanged); } - [DataTestMethod()] + [TestMethod()] [DataRow("0", 100, 0, 100, "", "")] [DataRow("0", 0, 0, 0, "", "")] [DataRow("0", -1, 0, -1, "", "")] @@ -158,7 +158,7 @@ public void MainWindow_VM_OpButton(string sButtons, long iAcc, int iPCCount, lon /// The i pc count. /// The s akk. /// - [DataTestMethod()] + [TestMethod()] [DataRow("0" ,false, Keys.None, "")] [DataRow("01",false, Keys.Oemplus, "", null, 2)] [DataRow("01a",true, Keys.Oemplus, "", null, 4)] diff --git a/CSharpBible/Calc/Directory.Packages.props b/CSharpBible/Calc/Directory.Packages.props index 70ec5b91b..f4e05c21c 100644 --- a/CSharpBible/Calc/Directory.Packages.props +++ b/CSharpBible/Calc/Directory.Packages.props @@ -17,18 +17,18 @@ - - + + - - + + - - + + diff --git a/CSharpBible/CharGrid/CharGrid.csproj b/CSharpBible/CharGrid/CharGrid.csproj index 59466ce18..3ddb37e42 100644 --- a/CSharpBible/CharGrid/CharGrid.csproj +++ b/CSharpBible/CharGrid/CharGrid.csproj @@ -10,8 +10,8 @@ true - - + + diff --git a/CSharpBible/ConsoleApps/ConsoleMouseApp/ConsoleMouseApp.csproj b/CSharpBible/ConsoleApps/ConsoleMouseApp/ConsoleMouseApp.csproj index 3c39b282e..8d930e303 100644 --- a/CSharpBible/ConsoleApps/ConsoleMouseApp/ConsoleMouseApp.csproj +++ b/CSharpBible/ConsoleApps/ConsoleMouseApp/ConsoleMouseApp.csproj @@ -23,8 +23,8 @@ - - + + diff --git a/CSharpBible/ConsoleApps/ConsoleMouseApp/ConsoleMouseApp_net.csproj b/CSharpBible/ConsoleApps/ConsoleMouseApp/ConsoleMouseApp_net.csproj index 2feaabfbb..5a9d7aaa5 100644 --- a/CSharpBible/ConsoleApps/ConsoleMouseApp/ConsoleMouseApp_net.csproj +++ b/CSharpBible/ConsoleApps/ConsoleMouseApp/ConsoleMouseApp_net.csproj @@ -27,8 +27,8 @@ - - + + diff --git a/CSharpBible/ConsoleApps/TestConsoleDemo/TestConsoleDemo.csproj b/CSharpBible/ConsoleApps/TestConsoleDemo/TestConsoleDemo.csproj index 1778f2600..617333cfa 100644 --- a/CSharpBible/ConsoleApps/TestConsoleDemo/TestConsoleDemo.csproj +++ b/CSharpBible/ConsoleApps/TestConsoleDemo/TestConsoleDemo.csproj @@ -25,8 +25,8 @@ - - + + \ No newline at end of file diff --git a/CSharpBible/ConsoleApps/TestConsoleTests/TestConsoleTests.csproj b/CSharpBible/ConsoleApps/TestConsoleTests/TestConsoleTests.csproj index 967446997..8007f278e 100644 --- a/CSharpBible/ConsoleApps/TestConsoleTests/TestConsoleTests.csproj +++ b/CSharpBible/ConsoleApps/TestConsoleTests/TestConsoleTests.csproj @@ -19,8 +19,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/ConsoleApps/WaveFuncCol/WaveFunCollapse.csproj b/CSharpBible/ConsoleApps/WaveFuncCol/WaveFunCollapse.csproj index 75e2ec3d9..41f070acf 100644 --- a/CSharpBible/ConsoleApps/WaveFuncCol/WaveFunCollapse.csproj +++ b/CSharpBible/ConsoleApps/WaveFuncCol/WaveFunCollapse.csproj @@ -24,7 +24,7 @@ - + diff --git a/CSharpBible/ConsoleApps/WaveFuncColFrm/WaveFuncColFrm.csproj b/CSharpBible/ConsoleApps/WaveFuncColFrm/WaveFuncColFrm.csproj index 9b329536e..00b57a9b9 100644 --- a/CSharpBible/ConsoleApps/WaveFuncColFrm/WaveFuncColFrm.csproj +++ b/CSharpBible/ConsoleApps/WaveFuncColFrm/WaveFuncColFrm.csproj @@ -24,8 +24,8 @@ - - + + \ No newline at end of file diff --git a/CSharpBible/DB/DBTest1/DBTest1.csproj b/CSharpBible/DB/DBTest1/DBTest1.csproj index 431bfd3d8..7370e68b8 100644 --- a/CSharpBible/DB/DBTest1/DBTest1.csproj +++ b/CSharpBible/DB/DBTest1/DBTest1.csproj @@ -12,7 +12,7 @@ --> - + diff --git a/CSharpBible/DB/FoxCon/FoxCon.csproj b/CSharpBible/DB/FoxCon/FoxCon.csproj index 3def81ef0..87686e905 100644 --- a/CSharpBible/DB/FoxCon/FoxCon.csproj +++ b/CSharpBible/DB/FoxCon/FoxCon.csproj @@ -19,8 +19,8 @@ - - + + diff --git a/CSharpBible/DB/MdbBrowser/MdbBrowser.csproj b/CSharpBible/DB/MdbBrowser/MdbBrowser.csproj index 1f76463c8..dd76927f9 100644 --- a/CSharpBible/DB/MdbBrowser/MdbBrowser.csproj +++ b/CSharpBible/DB/MdbBrowser/MdbBrowser.csproj @@ -2,14 +2,20 @@ WinExe - net481;net472;net462;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows + net481;net472;net462;net8.0-windows enable true AnyCPU;x86 - + + $(TargetFrameworks);net9.0-windows + + + $(TargetFrameworks);net10.0-windows + + @@ -20,9 +26,9 @@ - - - + + + diff --git a/CSharpBible/DB/MdbBrowserTests/MdbBrowserTests.csproj b/CSharpBible/DB/MdbBrowserTests/MdbBrowserTests.csproj index 94a916268..969471750 100644 --- a/CSharpBible/DB/MdbBrowserTests/MdbBrowserTests.csproj +++ b/CSharpBible/DB/MdbBrowserTests/MdbBrowserTests.csproj @@ -20,8 +20,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/DB/OLEDBTest/OleDbTest.csproj b/CSharpBible/DB/OLEDBTest/OleDbTest.csproj index 0f4c16579..2f7977719 100644 --- a/CSharpBible/DB/OLEDBTest/OleDbTest.csproj +++ b/CSharpBible/DB/OLEDBTest/OleDbTest.csproj @@ -13,7 +13,7 @@ - + diff --git a/CSharpBible/DB/OLEDBTest2/OleDbTest2.csproj b/CSharpBible/DB/OLEDBTest2/OleDbTest2.csproj index f8853fcf8..b3b3497fb 100644 --- a/CSharpBible/DB/OLEDBTest2/OleDbTest2.csproj +++ b/CSharpBible/DB/OLEDBTest2/OleDbTest2.csproj @@ -13,7 +13,7 @@ - + diff --git a/CSharpBible/Data/DataAnalysis/DataAnalysis.Core.Tests/DataAnalysis.Core.Tests.csproj b/CSharpBible/Data/DataAnalysis/DataAnalysis.Core.Tests/DataAnalysis.Core.Tests.csproj index ddd4f0052..d26d35186 100644 --- a/CSharpBible/Data/DataAnalysis/DataAnalysis.Core.Tests/DataAnalysis.Core.Tests.csproj +++ b/CSharpBible/Data/DataAnalysis/DataAnalysis.Core.Tests/DataAnalysis.Core.Tests.csproj @@ -9,7 +9,7 @@ - + diff --git a/CSharpBible/Data/DataAnalysis/DataAnalysis.WPF/DataAnalysis.WPF.csproj b/CSharpBible/Data/DataAnalysis/DataAnalysis.WPF/DataAnalysis.WPF.csproj index 0de7cdc43..7a6953369 100644 --- a/CSharpBible/Data/DataAnalysis/DataAnalysis.WPF/DataAnalysis.WPF.csproj +++ b/CSharpBible/Data/DataAnalysis/DataAnalysis.WPF/DataAnalysis.WPF.csproj @@ -17,9 +17,9 @@ - - - + + + diff --git a/CSharpBible/Data/DataAnalysis/DataConvert.Console/DataConvert.Console.csproj b/CSharpBible/Data/DataAnalysis/DataConvert.Console/DataConvert.Console.csproj index af2ec5d8f..978d08732 100644 --- a/CSharpBible/Data/DataAnalysis/DataConvert.Console/DataConvert.Console.csproj +++ b/CSharpBible/Data/DataAnalysis/DataConvert.Console/DataConvert.Console.csproj @@ -12,7 +12,7 @@ - + diff --git a/CSharpBible/Data/PictureDB/PictureDB.Base/PictureDB.Base.csproj b/CSharpBible/Data/PictureDB/PictureDB.Base/PictureDB.Base.csproj index d10bb726c..3b425b7b5 100644 --- a/CSharpBible/Data/PictureDB/PictureDB.Base/PictureDB.Base.csproj +++ b/CSharpBible/Data/PictureDB/PictureDB.Base/PictureDB.Base.csproj @@ -7,7 +7,7 @@ - + diff --git a/CSharpBible/Data/PictureDB/PictureDB.UI/PictureDB.UI.csproj b/CSharpBible/Data/PictureDB/PictureDB.UI/PictureDB.UI.csproj index 4e84ce806..2a4206e4b 100644 --- a/CSharpBible/Data/PictureDB/PictureDB.UI/PictureDB.UI.csproj +++ b/CSharpBible/Data/PictureDB/PictureDB.UI/PictureDB.UI.csproj @@ -8,10 +8,10 @@ - - - - + + + + diff --git a/CSharpBible/Data/RepoMigrator/RepoMigrator.App.Wpf/RepoMigrator.App.Wpf.csproj b/CSharpBible/Data/RepoMigrator/RepoMigrator.App.Wpf/RepoMigrator.App.Wpf.csproj index bc0235d60..2d8f5cb0c 100644 --- a/CSharpBible/Data/RepoMigrator/RepoMigrator.App.Wpf/RepoMigrator.App.Wpf.csproj +++ b/CSharpBible/Data/RepoMigrator/RepoMigrator.App.Wpf/RepoMigrator.App.Wpf.csproj @@ -13,7 +13,7 @@ - - + + diff --git a/CSharpBible/Data/RepoMigrator/RepoMigrator.Core/RepoMigrator.Core.csproj b/CSharpBible/Data/RepoMigrator/RepoMigrator.Core/RepoMigrator.Core.csproj index 43cef471e..2503a65e5 100644 --- a/CSharpBible/Data/RepoMigrator/RepoMigrator.Core/RepoMigrator.Core.csproj +++ b/CSharpBible/Data/RepoMigrator/RepoMigrator.Core/RepoMigrator.Core.csproj @@ -6,6 +6,6 @@ enable - + diff --git a/CSharpBible/Data/RepoMigrator/RepoMigrator.Tests/RepoMigrator.Tests.csproj b/CSharpBible/Data/RepoMigrator/RepoMigrator.Tests/RepoMigrator.Tests.csproj index b537b0d1b..e1dedea1e 100644 --- a/CSharpBible/Data/RepoMigrator/RepoMigrator.Tests/RepoMigrator.Tests.csproj +++ b/CSharpBible/Data/RepoMigrator/RepoMigrator.Tests/RepoMigrator.Tests.csproj @@ -7,8 +7,8 @@ enable - - + + diff --git a/CSharpBible/Data/TraceCsv2realCsv/TraceCsv2realCsv.csproj b/CSharpBible/Data/TraceCsv2realCsv/TraceCsv2realCsv.csproj index bda95742d..f8dff9530 100644 --- a/CSharpBible/Data/TraceCsv2realCsv/TraceCsv2realCsv.csproj +++ b/CSharpBible/Data/TraceCsv2realCsv/TraceCsv2realCsv.csproj @@ -7,7 +7,7 @@ - + diff --git a/CSharpBible/Data/TraceCsv2realCsvTests/TraceCsv2realCsvTests.csproj b/CSharpBible/Data/TraceCsv2realCsvTests/TraceCsv2realCsvTests.csproj index 8fe426c44..5e7c8b5d6 100644 --- a/CSharpBible/Data/TraceCsv2realCsvTests/TraceCsv2realCsvTests.csproj +++ b/CSharpBible/Data/TraceCsv2realCsvTests/TraceCsv2realCsvTests.csproj @@ -7,9 +7,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/DependencyInjection/CustomerRepositoryTests/CustomerRepositoryTests.csproj b/CSharpBible/DependencyInjection/CustomerRepositoryTests/CustomerRepositoryTests.csproj index fe18a05e4..b3a111ddf 100644 --- a/CSharpBible/DependencyInjection/CustomerRepositoryTests/CustomerRepositoryTests.csproj +++ b/CSharpBible/DependencyInjection/CustomerRepositoryTests/CustomerRepositoryTests.csproj @@ -11,12 +11,12 @@ - + - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -24,7 +24,7 @@ - + diff --git a/CSharpBible/Games/Asteroids/Asteroids_net.csproj b/CSharpBible/Games/Asteroids/Asteroids_net.csproj index 1d6147ff2..373fabcf2 100644 --- a/CSharpBible/Games/Asteroids/Asteroids_net.csproj +++ b/CSharpBible/Games/Asteroids/Asteroids_net.csproj @@ -24,4 +24,7 @@ + + + diff --git a/CSharpBible/Games/AsteroidsModernEngine.Tests/AsteroidsModernEngine.Tests.csproj b/CSharpBible/Games/AsteroidsModernEngine.Tests/AsteroidsModernEngine.Tests.csproj index c46503e65..4cd9f96aa 100644 --- a/CSharpBible/Games/AsteroidsModernEngine.Tests/AsteroidsModernEngine.Tests.csproj +++ b/CSharpBible/Games/AsteroidsModernEngine.Tests/AsteroidsModernEngine.Tests.csproj @@ -30,4 +30,9 @@ + + + + + \ No newline at end of file diff --git a/CSharpBible/Games/AsteroidsModernEngine/AsteroidsModernEngine.csproj b/CSharpBible/Games/AsteroidsModernEngine/AsteroidsModernEngine.csproj index e009d0ca1..9794b1f17 100644 --- a/CSharpBible/Games/AsteroidsModernEngine/AsteroidsModernEngine.csproj +++ b/CSharpBible/Games/AsteroidsModernEngine/AsteroidsModernEngine.csproj @@ -23,4 +23,8 @@ + + + + diff --git a/CSharpBible/Games/AsteroidsModernUI/AsteroidsModernUI.csproj b/CSharpBible/Games/AsteroidsModernUI/AsteroidsModernUI.csproj index 657f20ed1..0e04f0b85 100644 --- a/CSharpBible/Games/AsteroidsModernUI/AsteroidsModernUI.csproj +++ b/CSharpBible/Games/AsteroidsModernUI/AsteroidsModernUI.csproj @@ -25,4 +25,11 @@ + + + + + + + diff --git a/CSharpBible/Games/BoxFlight/BoxFlight.csproj b/CSharpBible/Games/BoxFlight/BoxFlight.csproj index 005d18383..a9f1db40f 100644 --- a/CSharpBible/Games/BoxFlight/BoxFlight.csproj +++ b/CSharpBible/Games/BoxFlight/BoxFlight.csproj @@ -9,6 +9,10 @@ - + + + + + \ No newline at end of file diff --git a/CSharpBible/Games/CreateCards/CreateCards.csproj b/CSharpBible/Games/CreateCards/CreateCards.csproj index a0742e83f..b7fa7a8c0 100644 --- a/CSharpBible/Games/CreateCards/CreateCards.csproj +++ b/CSharpBible/Games/CreateCards/CreateCards.csproj @@ -15,5 +15,8 @@ + + + diff --git a/CSharpBible/Games/CreateCards/Model/Card.cs b/CSharpBible/Games/CreateCards/Model/Card.cs index 7ba76979b..d70a7a245 100644 --- a/CSharpBible/Games/CreateCards/Model/Card.cs +++ b/CSharpBible/Games/CreateCards/Model/Card.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Drawing.Drawing2D; using System.Drawing; @@ -11,6 +12,23 @@ public enum CardValues public class Card { + // Helper methods for color manipulation (replacing ControlPaint) + private static Color DarkenColor(Color color, float factor) + { + int r = (int)(color.R * (1 - factor)); + int g = (int)(color.G * (1 - factor)); + int b = (int)(color.B * (1 - factor)); + return Color.FromArgb(color.A, System.Math.Max(0, r), System.Math.Max(0, g), System.Math.Max(0, b)); + } + + private static Color LightenColor(Color color, float factor) + { + int r = (int)(color.R + (255 - color.R) * factor); + int g = (int)(color.G + (255 - color.G) * factor); + int b = (int)(color.B + (255 - color.B) * factor); + return Color.FromArgb(color.A, System.Math.Min(255, r), System.Math.Min(255, g), System.Math.Min(255, b)); + } + public static Dictionary DrawDef = new() { { CardValues.Ace ,new("A",0.8){ PntSuits=new[]{new PointF(0.5f,0.5f) } } }, @@ -118,264 +136,1321 @@ void DrawText(Rectangle rect, string sP, double fSize, PointF fpOffs, Graphics g private static void DrawJack(Graphics g, Rectangle rect, Color color, string suit) { - // Simple stylized Jack vector drawing - RectangleF inner = RectangleF.Inflate(rect, -rect.Width * 0.15f, -rect.Height * 0.2f); - using var bodyBrush = new SolidBrush(Color.FromArgb(220, color)); - using var outlinePen = new Pen(Color.Black, rect.Width / 150f); - using var faceBrush = new SolidBrush(Color.Beige); - - // Body - RectangleF body = new RectangleF(inner.X + inner.Width * 0.25f, inner.Y + inner.Height * 0.35f, - inner.Width * 0.5f, inner.Height * 0.5f); - g.FillRectangle(bodyBrush, body); - g.DrawRectangle(outlinePen, body.X, body.Y, body.Width, body.Height); - - // Sword (left side) - float swordW = inner.Width * 0.06f; - float swordH = inner.Height * 0.7f; - float swordX = inner.X + inner.Width * 0.15f; - float swordY = inner.Bottom - swordH * 0.8f; - - using var metalBrush = new SolidBrush(Color.Silver); - // Blade - g.FillRectangle(metalBrush, swordX, swordY, swordW, swordH); - g.DrawRectangle(outlinePen, swordX, swordY, swordW, swordH); - // Guard - g.FillRectangle(metalBrush, swordX - swordW * 1.5f, swordY + swordH * 0.7f, swordW * 4, swordW); - g.DrawRectangle(outlinePen, swordX - swordW * 1.5f, swordY + swordH * 0.7f, swordW * 4, swordW); - - // Head - float headRadius = inner.Width * 0.18f; - PointF headCenter = new PointF(inner.X + inner.Width * 0.5f, inner.Y + inner.Height * 0.22f); - RectangleF head = new RectangleF(headCenter.X - headRadius, headCenter.Y - headRadius, - headRadius * 2, headRadius * 2); - g.FillEllipse(faceBrush, head); - g.DrawEllipse(outlinePen, head); - - // Eyes - float eyeSize = headRadius * 0.2f; - using var eyeBrush = new SolidBrush(Color.Black); - g.FillEllipse(eyeBrush, headCenter.X - headRadius * 0.4f, headCenter.Y - headRadius * 0.2f, eyeSize, eyeSize); - g.FillEllipse(eyeBrush, headCenter.X + headRadius * 0.4f - eyeSize, headCenter.Y - headRadius * 0.2f, eyeSize, eyeSize); - - // Cap - RectangleF cap = new RectangleF(head.X - headRadius * 0.3f, head.Y - headRadius * 0.6f, - head.Width * 1.3f, head.Height * 0.6f); - using var capBrush = new SolidBrush(color); - g.FillRectangle(capBrush, cap); - g.DrawRectangle(outlinePen, cap.X, cap.Y, cap.Width, cap.Height); - - // Feather - PointF f1 = new PointF(cap.Right, cap.Bottom); - PointF f2 = new PointF(cap.Right + cap.Width * 0.3f, cap.Top - cap.Height * 0.5f); - PointF f3 = new PointF(cap.Right - cap.Width * 0.1f, cap.Top); - g.FillPolygon(capBrush, new[] { f1, f2, f3 }); - g.DrawPolygon(outlinePen, new[] { f1, f2, f3 }); - - // Shield (right side) - float shieldW = inner.Width * 0.35f; - float shieldH = inner.Height * 0.4f; - float shieldX = inner.Right - shieldW * 0.9f; - float shieldY = inner.Bottom - shieldH; - - PointF s1 = new PointF(shieldX, shieldY); - PointF s2 = new PointF(shieldX + shieldW, shieldY); - PointF s3 = new PointF(shieldX + shieldW, shieldY + shieldH * 0.6f); - PointF s4 = new PointF(shieldX + shieldW * 0.5f, shieldY + shieldH); - PointF s5 = new PointF(shieldX, shieldY + shieldH * 0.6f); - PointF[] shieldPts = { s1, s2, s3, s4, s5 }; - - using var shieldBrush = new SolidBrush(Color.WhiteSmoke); - g.FillPolygon(shieldBrush, shieldPts); - g.DrawPolygon(outlinePen, shieldPts); - - // Suit on Shield - using var suitFont = new Font("Arial", shieldW * 0.6f, FontStyle.Bold); + // French-style Jack (Valet) - elaborate mirrored double-headed design + float penW = System.Math.Max(1f, rect.Width / 120f); + using var outlinePen = new Pen(Color.FromArgb(50, 30, 15), penW); + using var thinPen = new Pen(Color.FromArgb(50, 30, 15), penW * 0.5f); + using var shadowPen = new Pen(Color.FromArgb(80, 0, 0, 0), penW * 0.4f); + + // Colors - rich palette + Color cream = Color.FromArgb(255, 252, 245); + Color gold = Color.FromArgb(212, 175, 55); + Color darkGold = Color.FromArgb(170, 135, 30); + Color lightGold = Color.FromArgb(255, 223, 120); + Color skinTone = Color.FromArgb(255, 220, 185); + Color skinShadow = Color.FromArgb(235, 190, 150); + Color hairColor = Color.FromArgb(120, 75, 35); + Color hairHighlight = Color.FromArgb(160, 110, 60); + + // Draw decorative frame with gradient effect + RectangleF frameRect = new RectangleF(rect.X + rect.Width * 0.10f, rect.Y + rect.Height * 0.06f, + rect.Width * 0.80f, rect.Height * 0.88f); + + // Ornate frame background with subtle pattern + using var frameBrush = new LinearGradientBrush(frameRect, cream, Color.FromArgb(250, 245, 235), 45f); + g.FillRectangle(frameBrush, frameRect); + + // Draw diagonal pattern in frame + using var patternPen = new Pen(Color.FromArgb(15, color), penW * 0.3f); + for (float i = frameRect.X; i < frameRect.Right + frameRect.Height; i += rect.Width * 0.04f) + { + g.DrawLine(patternPen, i, frameRect.Y, i - frameRect.Height * 0.3f, frameRect.Y + frameRect.Height * 0.3f); + } + + // Inner decorative border - double line with gold + float borderInset = rect.Width * 0.02f; + RectangleF innerFrame = RectangleF.Inflate(frameRect, -borderInset * 2, -borderInset * 2); + using var borderPen = new Pen(color, penW * 1.2f); + using var goldBorderPen = new Pen(gold, penW * 0.6f); + g.DrawRectangle(borderPen, innerFrame.X, innerFrame.Y, innerFrame.Width, innerFrame.Height); + g.DrawRectangle(goldBorderPen, innerFrame.X - penW, innerFrame.Y - penW, innerFrame.Width + penW * 2, innerFrame.Height + penW * 2); + + // Corner ornaments + DrawCornerOrnament(g, innerFrame.X, innerFrame.Y, rect.Width * 0.08f, gold, outlinePen, false, false); + DrawCornerOrnament(g, innerFrame.Right, innerFrame.Y, rect.Width * 0.08f, gold, outlinePen, true, false); + DrawCornerOrnament(g, innerFrame.X, innerFrame.Bottom, rect.Width * 0.08f, gold, outlinePen, false, true); + DrawCornerOrnament(g, innerFrame.Right, innerFrame.Bottom, rect.Width * 0.08f, gold, outlinePen, true, true); + + // Draw upper half figure + DrawJackHalf(g, innerFrame, color, suit, false, outlinePen, thinPen, shadowPen, + skinTone, skinShadow, hairColor, hairHighlight, gold, darkGold, lightGold); + + // Draw lower half figure (mirrored) + DrawJackHalf(g, innerFrame, color, suit, true, outlinePen, thinPen, shadowPen, + skinTone, skinShadow, hairColor, hairHighlight, gold, darkGold, lightGold); + + // Center medallion with suit symbol + float centerY = innerFrame.Y + innerFrame.Height / 2; + float medalSize = innerFrame.Width * 0.22f; + RectangleF medalRect = new RectangleF(innerFrame.X + innerFrame.Width / 2 - medalSize / 2, + centerY - medalSize / 2, medalSize, medalSize); + + // Medallion with gradient + using var medalGradient = new LinearGradientBrush(medalRect, Color.White, Color.FromArgb(240, 235, 220), 135f); + g.FillEllipse(medalGradient, medalRect); + using var medalBorderPen = new Pen(gold, penW * 1.5f); + g.DrawEllipse(medalBorderPen, medalRect); + g.DrawEllipse(outlinePen, RectangleF.Inflate(medalRect, penW, penW)); + + // Suit symbol in center + using var suitFont = new Font("Segoe UI Symbol", medalSize * 0.5f, FontStyle.Bold); using var suitBrush = new SolidBrush(color); StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }; - RectangleF suitRect = new RectangleF(shieldX, shieldY, shieldW, shieldH * 0.8f); - g.DrawString(suit, suitFont, suitBrush, suitRect, sf); + g.DrawString(suit, suitFont, suitBrush, medalRect, sf); + } + + private static void DrawCornerOrnament(Graphics g, float x, float y, float size, Color gold, Pen outlinePen, bool flipH, bool flipV) + { + var state = g.Save(); + g.TranslateTransform(x, y); + if (flipH) g.ScaleTransform(-1, 1); + if (flipV) g.ScaleTransform(1, -1); + + using var goldBrush = new SolidBrush(gold); + // Fleur-de-lis style corner + PointF[] ornament = { + new PointF(0, 0), + new PointF(size * 0.3f, 0), + new PointF(size * 0.15f, size * 0.15f), + new PointF(size * 0.4f, size * 0.1f), + new PointF(size * 0.2f, size * 0.3f), + new PointF(size * 0.1f, size * 0.4f), + new PointF(size * 0.15f, size * 0.15f), + new PointF(0, size * 0.3f) + }; + g.FillPolygon(goldBrush, ornament); + g.DrawPolygon(outlinePen, ornament); + + g.Restore(state); + } + + private static void DrawJackHalf(Graphics g, RectangleF rect, Color color, string suit, bool mirrored, + Pen outlinePen, Pen thinPen, Pen shadowPen, Color skinTone, Color skinShadow, + Color hairColor, Color hairHighlight, Color gold, Color darkGold, Color lightGold) + { + var state = g.Save(); + + if (mirrored) + { + g.TranslateTransform(rect.X + rect.Width / 2, rect.Y + rect.Height / 2); + g.RotateTransform(180); + g.TranslateTransform(-(rect.X + rect.Width / 2), -(rect.Y + rect.Height / 2)); + } + + float halfH = rect.Height * 0.47f; + RectangleF half = new RectangleF(rect.X, rect.Y, rect.Width, halfH); + + // Shadow layer for depth + using var shadowBrush = new SolidBrush(Color.FromArgb(30, 0, 0, 0)); + + // Tunic with gradient and folds + RectangleF tunicRect = new RectangleF(half.X + half.Width * 0.18f, half.Y + half.Height * 0.4f, + half.Width * 0.64f, half.Height * 0.6f); + using var tunicGradient = new LinearGradientBrush(tunicRect, + Color.FromArgb(255, color), Color.FromArgb(200, DarkenColor(color, 0.2f)), 0f); + + PointF[] tunic = { + new PointF(half.X + half.Width * 0.22f, half.Bottom), + new PointF(half.X + half.Width * 0.18f, half.Y + half.Height * 0.52f), + new PointF(half.X + half.Width * 0.28f, half.Y + half.Height * 0.46f), + new PointF(half.X + half.Width * 0.5f, half.Y + half.Height * 0.42f), + new PointF(half.X + half.Width * 0.72f, half.Y + half.Height * 0.46f), + new PointF(half.X + half.Width * 0.82f, half.Y + half.Height * 0.52f), + new PointF(half.X + half.Width * 0.78f, half.Bottom) + }; + g.FillPolygon(tunicGradient, tunic); + g.DrawPolygon(outlinePen, tunic); + + // Tunic folds/creases for texture + using var foldPen = new Pen(Color.FromArgb(60, 0, 0, 0), thinPen.Width); + using var highlightPen = new Pen(Color.FromArgb(80, 255, 255, 255), thinPen.Width); + g.DrawLine(foldPen, half.X + half.Width * 0.35f, half.Y + half.Height * 0.55f, + half.X + half.Width * 0.32f, half.Bottom); + g.DrawLine(highlightPen, half.X + half.Width * 0.37f, half.Y + half.Height * 0.55f, + half.X + half.Width * 0.35f, half.Bottom); + g.DrawLine(foldPen, half.X + half.Width * 0.65f, half.Y + half.Height * 0.55f, + half.X + half.Width * 0.68f, half.Bottom); + + // Decorative trim on tunic + using var trimPen = new Pen(gold, outlinePen.Width * 1.2f); + g.DrawLine(trimPen, half.X + half.Width * 0.5f, half.Y + half.Height * 0.45f, + half.X + half.Width * 0.5f, half.Bottom); + + // Elaborate collar with lace detail + using var collarBrush = new SolidBrush(Color.White); + PointF[] collar = { + new PointF(half.X + half.Width * 0.35f, half.Y + half.Height * 0.46f), + new PointF(half.X + half.Width * 0.42f, half.Y + half.Height * 0.52f), + new PointF(half.X + half.Width * 0.5f, half.Y + half.Height * 0.55f), + new PointF(half.X + half.Width * 0.58f, half.Y + half.Height * 0.52f), + new PointF(half.X + half.Width * 0.65f, half.Y + half.Height * 0.46f), + new PointF(half.X + half.Width * 0.5f, half.Y + half.Height * 0.42f) + }; + g.FillPolygon(collarBrush, collar); + g.DrawPolygon(thinPen, collar); + + // Lace pattern on collar + using var lacePen = new Pen(Color.FromArgb(100, 150, 150, 150), thinPen.Width * 0.5f); + for (float lx = half.X + half.Width * 0.4f; lx < half.X + half.Width * 0.6f; lx += half.Width * 0.03f) + { + g.DrawLine(lacePen, lx, half.Y + half.Height * 0.48f, lx + half.Width * 0.015f, half.Y + half.Height * 0.52f); + } + + // Head with shading + float headW = half.Width * 0.24f; + float headH = half.Height * 0.34f; + RectangleF headRect = new RectangleF(half.X + half.Width * 0.5f - headW / 2, + half.Y + half.Height * 0.10f, headW, headH); + + // Hair with texture + using var hairGradient = new LinearGradientBrush( + new RectangleF(headRect.X - headW * 0.15f, headRect.Y - headH * 0.1f, headW * 1.3f, headH * 0.6f), + hairHighlight, hairColor, 45f); + RectangleF hairRect = new RectangleF(headRect.X - headW * 0.12f, headRect.Y - headH * 0.08f, + headW * 1.24f, headH * 0.55f); + g.FillEllipse(hairGradient, hairRect); + + // Hair strands + using var strandPen = new Pen(Color.FromArgb(80, 60, 40, 20), thinPen.Width * 0.6f); + for (int i = 0; i < 5; i++) + { + float sx = headRect.X + headW * (0.1f + i * 0.2f); + g.DrawBezier(strandPen, + new PointF(sx, headRect.Y), + new PointF(sx - headW * 0.05f, headRect.Y + headH * 0.1f), + new PointF(sx + headW * 0.05f, headRect.Y + headH * 0.2f), + new PointF(sx, headRect.Y + headH * 0.3f)); + } + + // Face with gradient for 3D effect + using var faceGradient = new LinearGradientBrush(headRect, skinTone, skinShadow, 120f); + g.FillEllipse(faceGradient, headRect); + g.DrawEllipse(outlinePen, headRect); + + // Cheek blush + using var blushBrush = new SolidBrush(Color.FromArgb(40, 255, 150, 150)); + g.FillEllipse(blushBrush, headRect.X + headW * 0.6f, headRect.Y + headH * 0.45f, headW * 0.25f, headH * 0.15f); + + // Elaborate beret/cap with feather + RectangleF capRect = new RectangleF(headRect.X - headW * 0.2f, headRect.Y - headH * 0.35f, headW * 1.6f, headH * 0.6f); + using var capGradient = new LinearGradientBrush(capRect, + LightenColor(color, 0.2f), color, 90f); + PointF[] cap = { + new PointF(headRect.X - headW * 0.18f, headRect.Y + headH * 0.18f), + new PointF(headRect.X + headW * 0.1f, headRect.Y - headH * 0.15f), + new PointF(headRect.X + headW * 0.5f, headRect.Y - headH * 0.28f), + new PointF(headRect.Right + headW * 0.35f, headRect.Y - headH * 0.12f), + new PointF(headRect.Right + headW * 0.2f, headRect.Y + headH * 0.22f) + }; + g.FillPolygon(capGradient, cap); + g.DrawPolygon(outlinePen, cap); + + // Cap band + using var bandBrush = new SolidBrush(gold); + g.FillRectangle(bandBrush, headRect.X - headW * 0.1f, headRect.Y + headH * 0.08f, headW * 1.2f, headH * 0.08f); + + // Jewel on cap + using var jewelBrush = new SolidBrush(Color.FromArgb(220, 20, 60)); + float jewelSize = headW * 0.12f; + g.FillEllipse(jewelBrush, headRect.X + headW * 0.4f, headRect.Y + headH * 0.02f, jewelSize, jewelSize); + g.DrawEllipse(thinPen, headRect.X + headW * 0.4f, headRect.Y + headH * 0.02f, jewelSize, jewelSize); + + // Elaborate feather with multiple strands + using var featherGradient = new LinearGradientBrush( + new RectangleF(headRect.Right, headRect.Y - headH * 0.7f, headW * 0.8f, headH * 0.8f), + lightGold, gold, 45f); + using var featherPen = new Pen(featherGradient, outlinePen.Width * 2f); + + // Main feather curve + g.DrawBezier(featherPen, + new PointF(headRect.Right + headW * 0.25f, headRect.Y - headH * 0.05f), + new PointF(headRect.Right + headW * 0.6f, headRect.Y - headH * 0.35f), + new PointF(headRect.Right + headW * 0.5f, headRect.Y - headH * 0.55f), + new PointF(headRect.Right + headW * 0.15f, headRect.Y - headH * 0.45f)); + + // Feather barbs + using var barbPen = new Pen(gold, thinPen.Width * 0.8f); + for (int i = 0; i < 6; i++) + { + float t = i / 6f; + float bx = headRect.Right + headW * (0.25f + t * 0.25f); + float by = headRect.Y - headH * (0.05f + t * 0.35f); + g.DrawLine(barbPen, bx, by, bx + headW * 0.15f, by - headH * 0.08f); + g.DrawLine(barbPen, bx, by, bx - headW * 0.1f, by - headH * 0.12f); + } + + // Eyes - two symmetric eyes (front view like Queen and King) + float eyeW = headW * 0.12f; + float eyeH = headH * 0.07f; + float eyeY = headRect.Y + headH * 0.36f; + + // Left eye + float leftEyeX = headRect.X + headW * 0.22f; + DrawJackEye(g, leftEyeX, eyeY, eyeW, eyeH, thinPen); + + // Right eye + float rightEyeX = headRect.X + headW * 0.66f; + DrawJackEye(g, rightEyeX, eyeY, eyeW, eyeH, thinPen); + + // Eyebrows + using var browPen = new Pen(hairColor, thinPen.Width * 1.2f); + g.DrawArc(browPen, leftEyeX - eyeW * 0.1f, eyeY - eyeH * 1.0f, eyeW * 1.2f, eyeH, 200, 70); + g.DrawArc(browPen, rightEyeX - eyeW * 0.1f, eyeY - eyeH * 1.0f, eyeW * 1.2f, eyeH, 250, 70); + + // Nose (centered) + g.DrawBezier(thinPen, + new PointF(headRect.X + headW * 0.48f, headRect.Y + headH * 0.4f), + new PointF(headRect.X + headW * 0.5f, headRect.Y + headH * 0.48f), + new PointF(headRect.X + headW * 0.52f, headRect.Y + headH * 0.54f), + new PointF(headRect.X + headW * 0.5f, headRect.Y + headH * 0.56f)); + + // Mouth (centered) + using var lipPen = new Pen(Color.FromArgb(180, 100, 90), thinPen.Width); + g.DrawArc(lipPen, headRect.X + headW * 0.4f, headRect.Y + headH * 0.62f, headW * 0.2f, headH * 0.1f, 0, 180); + + // Halberd with detailed blade + float shaftX = half.X + half.Width * 0.10f; + + // Shaft with wood grain + RectangleF shaftRect = new RectangleF(shaftX, half.Y + half.Height * 0.08f, half.Width * 0.028f, half.Height * 0.88f); + using var shaftGradient = new LinearGradientBrush(shaftRect, + Color.FromArgb(160, 110, 60), Color.FromArgb(100, 65, 30), 0f); + g.FillRectangle(shaftGradient, shaftRect); + g.DrawRectangle(outlinePen, shaftRect.X, shaftRect.Y, shaftRect.Width, shaftRect.Height); + + // Wood grain lines + using var grainPen = new Pen(Color.FromArgb(50, 60, 40, 20), thinPen.Width * 0.3f); + for (float gy = shaftRect.Y; gy < shaftRect.Bottom; gy += half.Height * 0.05f) + { + g.DrawLine(grainPen, shaftRect.X + shaftRect.Width * 0.2f, gy, + shaftRect.X + shaftRect.Width * 0.8f, gy + half.Height * 0.02f); + } + + // Elaborate blade with engraving + using var bladeGradient = new LinearGradientBrush( + new RectangleF(shaftX, half.Y, half.Width * 0.15f, half.Height * 0.3f), + Color.FromArgb(220, 220, 230), Color.FromArgb(160, 165, 175), 90f); + PointF[] blade = { + new PointF(shaftX + half.Width * 0.028f, half.Y + half.Height * 0.12f), + new PointF(shaftX + half.Width * 0.08f, half.Y + half.Height * 0.04f), + new PointF(shaftX + half.Width * 0.14f, half.Y + half.Height * 0.06f), + new PointF(shaftX + half.Width * 0.12f, half.Y + half.Height * 0.18f), + new PointF(shaftX + half.Width * 0.08f, half.Y + half.Height * 0.28f), + new PointF(shaftX + half.Width * 0.028f, half.Y + half.Height * 0.24f) + }; + g.FillPolygon(bladeGradient, blade); + g.DrawPolygon(outlinePen, blade); + + // Blade edge highlight + using var edgePen = new Pen(Color.FromArgb(150, 255, 255, 255), thinPen.Width * 0.5f); + g.DrawLine(edgePen, blade[1], blade[2]); + + // Axe spike + PointF[] spike = { + new PointF(shaftX + half.Width * 0.014f, half.Y + half.Height * 0.08f), + new PointF(shaftX + half.Width * 0.014f, half.Y), + new PointF(shaftX + half.Width * 0.028f, half.Y + half.Height * 0.08f) + }; + g.FillPolygon(bladeGradient, spike); + g.DrawPolygon(outlinePen, spike); + + g.Restore(state); } private static void DrawQueen(Graphics g, Rectangle rect, Color color, string suit) { - // Simple stylized Queen vector drawing - RectangleF inner = RectangleF.Inflate(rect, -rect.Width * 0.15f, -rect.Height * 0.2f); - using var bodyBrush = new SolidBrush(Color.FromArgb(200, color)); - using var outlinePen = new Pen(Color.Black, rect.Width / 150f); - using var faceBrush = new SolidBrush(Color.Beige); - - // Dress (triangle) - PointF p1 = new PointF(inner.X + inner.Width * 0.5f, inner.Bottom); - PointF p2 = new PointF(inner.X + inner.Width * 0.2f, inner.Y + inner.Height * 0.45f); - PointF p3 = new PointF(inner.X + inner.Width * 0.8f, inner.Y + inner.Height * 0.45f); - PointF[] dress = { p1, p2, p3 }; - g.FillPolygon(bodyBrush, dress); - g.DrawPolygon(outlinePen, dress); - - // Upper body - RectangleF body = new RectangleF(inner.X + inner.Width * 0.35f, inner.Y + inner.Height * 0.32f, - inner.Width * 0.3f, inner.Height * 0.2f); - g.FillRectangle(bodyBrush, body); - g.DrawRectangle(outlinePen, body.X, body.Y, body.Width, body.Height); - - // Hair - float headRadius = inner.Width * 0.17f; - PointF headCenter = new PointF(inner.X + inner.Width * 0.5f, inner.Y + inner.Height * 0.18f); - RectangleF hairRect = new RectangleF(headCenter.X - headRadius * 1.2f, headCenter.Y - headRadius * 1.2f, - headRadius * 2.4f, headRadius * 2.4f); - using var hairBrush = new SolidBrush(Color.Gold); - g.FillEllipse(hairBrush, hairRect); - g.DrawEllipse(outlinePen, hairRect); - - // Head - RectangleF head = new RectangleF(headCenter.X - headRadius, headCenter.Y - headRadius, - headRadius * 2, headRadius * 2); - g.FillEllipse(faceBrush, head); - g.DrawEllipse(outlinePen, head); - - // Eyes - float eyeSize = headRadius * 0.2f; - using var eyeBrush = new SolidBrush(Color.Black); - g.FillEllipse(eyeBrush, headCenter.X - headRadius * 0.35f, headCenter.Y - headRadius * 0.1f, eyeSize, eyeSize); - g.FillEllipse(eyeBrush, headCenter.X + headRadius * 0.35f - eyeSize, headCenter.Y - headRadius * 0.1f, eyeSize, eyeSize); - - // Crown - float crownHeight = headRadius * 0.8f; - PointF c1 = new PointF(head.X, head.Y); - PointF c2 = new PointF(head.Right, head.Y); - PointF c3 = new PointF(head.X + head.Width * 0.2f, head.Y - crownHeight); - PointF c4 = new PointF(head.X + head.Width * 0.5f, head.Y - crownHeight * 1.2f); - PointF c5 = new PointF(head.X + head.Width * 0.8f, head.Y - crownHeight); - PointF[] crown = { c1, c3, c4, c5, c2 }; - using var crownBrush = new SolidBrush(color); - g.FillPolygon(crownBrush, crown); + // French-style Queen (Dame) - elaborate mirrored double-headed design + float penW = System.Math.Max(1f, rect.Width / 120f); + using var outlinePen = new Pen(Color.FromArgb(50, 30, 15), penW); + using var thinPen = new Pen(Color.FromArgb(50, 30, 15), penW * 0.5f); + + // Colors - elegant palette + Color cream = Color.FromArgb(255, 252, 245); + Color gold = Color.FromArgb(212, 175, 55); + Color lightGold = Color.FromArgb(255, 223, 120); + Color skinTone = Color.FromArgb(255, 225, 200); + Color skinShadow = Color.FromArgb(240, 200, 175); + Color hairColor = Color.FromArgb(180, 140, 60); + Color hairHighlight = Color.FromArgb(220, 190, 100); + + // Draw decorative frame with gradient + RectangleF frameRect = new RectangleF(rect.X + rect.Width * 0.10f, rect.Y + rect.Height * 0.06f, + rect.Width * 0.80f, rect.Height * 0.88f); + using var frameBrush = new LinearGradientBrush(frameRect, cream, Color.FromArgb(250, 245, 235), 45f); + g.FillRectangle(frameBrush, frameRect); + + // Elegant floral pattern in background + using var patternPen = new Pen(Color.FromArgb(12, color), penW * 0.4f); + for (float px = frameRect.X; px < frameRect.Right; px += rect.Width * 0.06f) + { + for (float py = frameRect.Y; py < frameRect.Bottom; py += rect.Height * 0.05f) + { + g.DrawEllipse(patternPen, px, py, rect.Width * 0.02f, rect.Width * 0.02f); + } + } + + // Inner decorative border - double line + float borderInset = rect.Width * 0.02f; + RectangleF innerFrame = RectangleF.Inflate(frameRect, -borderInset * 2, -borderInset * 2); + using var borderPen = new Pen(color, penW * 1.2f); + using var goldBorderPen = new Pen(gold, penW * 0.6f); + g.DrawRectangle(borderPen, innerFrame.X, innerFrame.Y, innerFrame.Width, innerFrame.Height); + g.DrawRectangle(goldBorderPen, innerFrame.X - penW, innerFrame.Y - penW, innerFrame.Width + penW * 2, innerFrame.Height + penW * 2); + + // Floral corner ornaments + DrawFloralCorner(g, innerFrame.X, innerFrame.Y, rect.Width * 0.1f, gold, color, outlinePen, false, false); + DrawFloralCorner(g, innerFrame.Right, innerFrame.Y, rect.Width * 0.1f, gold, color, outlinePen, true, false); + DrawFloralCorner(g, innerFrame.X, innerFrame.Bottom, rect.Width * 0.1f, gold, color, outlinePen, false, true); + DrawFloralCorner(g, innerFrame.Right, innerFrame.Bottom, rect.Width * 0.1f, gold, color, outlinePen, true, true); + + // Draw upper half figure + DrawQueenHalf(g, innerFrame, color, suit, false, outlinePen, thinPen, skinTone, skinShadow, hairColor, hairHighlight, gold, lightGold); + + // Draw lower half figure (mirrored) + DrawQueenHalf(g, innerFrame, color, suit, true, outlinePen, thinPen, skinTone, skinShadow, hairColor, hairHighlight, gold, lightGold); + + // Center medallion with suit symbol + float centerY = innerFrame.Y + innerFrame.Height / 2; + float medalSize = innerFrame.Width * 0.24f; + RectangleF medalRect = new RectangleF(innerFrame.X + innerFrame.Width / 2 - medalSize / 2, + centerY - medalSize / 2, medalSize, medalSize); + + // Ornate medallion + using var medalGradient = new LinearGradientBrush(medalRect, Color.White, Color.FromArgb(245, 240, 230), 135f); + g.FillEllipse(medalGradient, medalRect); + + // Decorative ring around medallion + using var ringPen = new Pen(gold, penW * 2f); + g.DrawEllipse(ringPen, medalRect); + using var innerRingPen = new Pen(color, penW * 0.8f); + g.DrawEllipse(innerRingPen, RectangleF.Inflate(medalRect, -penW * 2, -penW * 2)); + + // Suit symbol + using var suitFont = new Font("Segoe UI Symbol", medalSize * 0.45f, FontStyle.Bold); + using var suitBrush = new SolidBrush(color); + StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }; + g.DrawString(suit, suitFont, suitBrush, medalRect, sf); + } + + private static void DrawFloralCorner(Graphics g, float x, float y, float size, Color gold, Color accent, Pen outlinePen, bool flipH, bool flipV) + { + var state = g.Save(); + g.TranslateTransform(x, y); + if (flipH) g.ScaleTransform(-1, 1); + if (flipV) g.ScaleTransform(1, -1); + + using var goldBrush = new SolidBrush(gold); + using var accentBrush = new SolidBrush(accent); + + // Main curved vine + using var vinePen = new Pen(gold, outlinePen.Width * 1.2f); + g.DrawBezier(vinePen, + new PointF(0, size * 0.5f), + new PointF(size * 0.2f, size * 0.3f), + new PointF(size * 0.3f, size * 0.2f), + new PointF(size * 0.5f, 0)); + + // Small leaves + PointF[] leaf1 = { + new PointF(size * 0.15f, size * 0.35f), + new PointF(size * 0.05f, size * 0.15f), + new PointF(size * 0.25f, size * 0.25f) + }; + g.FillPolygon(goldBrush, leaf1); + + PointF[] leaf2 = { + new PointF(size * 0.35f, size * 0.15f), + new PointF(size * 0.15f, size * 0.05f), + new PointF(size * 0.25f, size * 0.25f) + }; + g.FillPolygon(goldBrush, leaf2); + + // Small flower + float flowerX = size * 0.08f; + float flowerY = size * 0.08f; + float petalR = size * 0.06f; + g.FillEllipse(accentBrush, flowerX - petalR, flowerY - petalR * 1.5f, petalR * 2, petalR * 2); + g.FillEllipse(accentBrush, flowerX - petalR * 1.5f, flowerY - petalR, petalR * 2, petalR * 2); + g.FillEllipse(goldBrush, flowerX - petalR * 0.5f, flowerY - petalR * 0.5f, petalR, petalR); + + g.Restore(state); + } + + private static void DrawQueenHalf(Graphics g, RectangleF rect, Color color, string suit, bool mirrored, + Pen outlinePen, Pen thinPen, Color skinTone, Color skinShadow, Color hairColor, Color hairHighlight, Color gold, Color lightGold) + { + var state = g.Save(); + + if (mirrored) + { + g.TranslateTransform(rect.X + rect.Width / 2, rect.Y + rect.Height / 2); + g.RotateTransform(180); + g.TranslateTransform(-(rect.X + rect.Width / 2), -(rect.Y + rect.Height / 2)); + } + + float halfH = rect.Height * 0.47f; + RectangleF half = new RectangleF(rect.X, rect.Y, rect.Width, halfH); + + // Elaborate gown with gradient and layers + RectangleF gownRect = new RectangleF(half.X + half.Width * 0.12f, half.Y + half.Height * 0.42f, + half.Width * 0.76f, half.Height * 0.58f); + using var gownGradient = new LinearGradientBrush(gownRect, + Color.FromArgb(255, color), Color.FromArgb(200, DarkenColor(color, 0.15f)), 90f); + + // Full gown shape + PointF[] gown = { + new PointF(half.X + half.Width * 0.12f, half.Bottom), + new PointF(half.X + half.Width * 0.15f, half.Y + half.Height * 0.58f), + new PointF(half.X + half.Width * 0.22f, half.Y + half.Height * 0.5f), + new PointF(half.X + half.Width * 0.32f, half.Y + half.Height * 0.45f), + new PointF(half.X + half.Width * 0.5f, half.Y + half.Height * 0.42f), + new PointF(half.X + half.Width * 0.68f, half.Y + half.Height * 0.45f), + new PointF(half.X + half.Width * 0.78f, half.Y + half.Height * 0.5f), + new PointF(half.X + half.Width * 0.85f, half.Y + half.Height * 0.58f), + new PointF(half.X + half.Width * 0.88f, half.Bottom) + }; + g.FillPolygon(gownGradient, gown); + g.DrawPolygon(outlinePen, gown); + + // Gown folds for depth + using var foldPen = new Pen(Color.FromArgb(50, 0, 0, 0), thinPen.Width); + using var highlightPen = new Pen(Color.FromArgb(60, 255, 255, 255), thinPen.Width); + g.DrawBezier(foldPen, + new PointF(half.X + half.Width * 0.3f, half.Y + half.Height * 0.5f), + new PointF(half.X + half.Width * 0.28f, half.Y + half.Height * 0.7f), + new PointF(half.X + half.Width * 0.25f, half.Y + half.Height * 0.85f), + new PointF(half.X + half.Width * 0.22f, half.Bottom)); + g.DrawBezier(highlightPen, + new PointF(half.X + half.Width * 0.32f, half.Y + half.Height * 0.5f), + new PointF(half.X + half.Width * 0.3f, half.Y + half.Height * 0.7f), + new PointF(half.X + half.Width * 0.28f, half.Y + half.Height * 0.85f), + new PointF(half.X + half.Width * 0.26f, half.Bottom)); + g.DrawBezier(foldPen, + new PointF(half.X + half.Width * 0.7f, half.Y + half.Height * 0.5f), + new PointF(half.X + half.Width * 0.72f, half.Y + half.Height * 0.7f), + new PointF(half.X + half.Width * 0.75f, half.Y + half.Height * 0.85f), + new PointF(half.X + half.Width * 0.78f, half.Bottom)); + + // Decorative embroidery on gown + using var embPen = new Pen(gold, thinPen.Width * 1.2f); + // Vertical ornament + g.DrawLine(embPen, half.X + half.Width * 0.5f, half.Y + half.Height * 0.5f, + half.X + half.Width * 0.5f, half.Bottom); + // Small diamonds along the line + for (float ey = half.Y + half.Height * 0.55f; ey < half.Bottom - half.Height * 0.1f; ey += half.Height * 0.1f) + { + PointF[] diamond = { + new PointF(half.X + half.Width * 0.5f, ey - half.Height * 0.02f), + new PointF(half.X + half.Width * 0.52f, ey), + new PointF(half.X + half.Width * 0.5f, ey + half.Height * 0.02f), + new PointF(half.X + half.Width * 0.48f, ey) + }; + using var diamondBrush = new SolidBrush(gold); + g.FillPolygon(diamondBrush, diamond); + } + + // Elaborate neckline with lace + using var laceBrush = new SolidBrush(Color.White); + PointF[] neckLace = { + new PointF(half.X + half.Width * 0.32f, half.Y + half.Height * 0.45f), + new PointF(half.X + half.Width * 0.38f, half.Y + half.Height * 0.5f), + new PointF(half.X + half.Width * 0.44f, half.Y + half.Height * 0.53f), + new PointF(half.X + half.Width * 0.5f, half.Y + half.Height * 0.55f), + new PointF(half.X + half.Width * 0.56f, half.Y + half.Height * 0.53f), + new PointF(half.X + half.Width * 0.62f, half.Y + half.Height * 0.5f), + new PointF(half.X + half.Width * 0.68f, half.Y + half.Height * 0.45f), + new PointF(half.X + half.Width * 0.5f, half.Y + half.Height * 0.42f) + }; + g.FillPolygon(laceBrush, neckLace); + g.DrawPolygon(thinPen, neckLace); + + // Lace scalloped edge + using var scallopPen = new Pen(Color.FromArgb(120, 120, 120), thinPen.Width * 0.6f); + for (float sx = half.X + half.Width * 0.36f; sx < half.X + half.Width * 0.64f; sx += half.Width * 0.04f) + { + g.DrawArc(scallopPen, sx, half.Y + half.Height * 0.51f, half.Width * 0.04f, half.Height * 0.03f, 0, 180); + } + + // Necklace with pendant + using var necklacePen = new Pen(gold, thinPen.Width * 1.5f); + g.DrawArc(necklacePen, half.X + half.Width * 0.38f, half.Y + half.Height * 0.42f, + half.Width * 0.24f, half.Height * 0.12f, 0, 180); + + // Pendant + using var pendantBrush = new SolidBrush(color); + using var goldBrush = new SolidBrush(gold); + float pendX = half.X + half.Width * 0.5f; + float pendY = half.Y + half.Height * 0.52f; + g.FillEllipse(goldBrush, pendX - half.Width * 0.025f, pendY, half.Width * 0.05f, half.Width * 0.05f); + g.FillEllipse(pendantBrush, pendX - half.Width * 0.018f, pendY + half.Width * 0.007f, + half.Width * 0.036f, half.Width * 0.036f); + + // Elaborate hair with curls + float headW = half.Width * 0.22f; + float headH = half.Height * 0.3f; + RectangleF headRect = new RectangleF(half.X + half.Width * 0.5f - headW / 2, + half.Y + half.Height * 0.12f, headW, headH); + + // Hair base with gradient + using var hairGradient = new LinearGradientBrush( + new RectangleF(headRect.X - headW * 0.3f, headRect.Y - headH * 0.15f, headW * 1.6f, headH * 1.2f), + hairHighlight, hairColor, 60f); + + // Main hair volume + RectangleF hairOuter = new RectangleF(headRect.X - headW * 0.28f, headRect.Y - headH * 0.12f, + headW * 1.56f, headH * 1.15f); + g.FillEllipse(hairGradient, hairOuter); + + // Hair curls on sides + using var curlPen = new Pen(Color.FromArgb(100, 60, 25), thinPen.Width * 0.8f); + // Left curls + g.DrawBezier(curlPen, + new PointF(headRect.X - headW * 0.15f, headRect.Y + headH * 0.3f), + new PointF(headRect.X - headW * 0.3f, headRect.Y + headH * 0.5f), + new PointF(headRect.X - headW * 0.25f, headRect.Y + headH * 0.7f), + new PointF(headRect.X - headW * 0.1f, headRect.Y + headH * 0.6f)); + g.DrawBezier(curlPen, + new PointF(headRect.X - headW * 0.1f, headRect.Y + headH * 0.5f), + new PointF(headRect.X - headW * 0.22f, headRect.Y + headH * 0.65f), + new PointF(headRect.X - headW * 0.18f, headRect.Y + headH * 0.8f), + new PointF(headRect.X - headW * 0.05f, headRect.Y + headH * 0.75f)); + // Right curls + g.DrawBezier(curlPen, + new PointF(headRect.Right + headW * 0.15f, headRect.Y + headH * 0.3f), + new PointF(headRect.Right + headW * 0.3f, headRect.Y + headH * 0.5f), + new PointF(headRect.Right + headW * 0.25f, headRect.Y + headH * 0.7f), + new PointF(headRect.Right + headW * 0.1f, headRect.Y + headH * 0.6f)); + + // Face with 3D shading + using var faceGradient = new LinearGradientBrush(headRect, skinTone, skinShadow, 130f); + g.FillEllipse(faceGradient, headRect); + g.DrawEllipse(outlinePen, headRect); + + // Rosy cheeks + using var blushBrush = new SolidBrush(Color.FromArgb(35, 255, 130, 130)); + g.FillEllipse(blushBrush, headRect.X + headW * 0.08f, headRect.Y + headH * 0.45f, headW * 0.22f, headH * 0.15f); + g.FillEllipse(blushBrush, headRect.X + headW * 0.7f, headRect.Y + headH * 0.45f, headW * 0.22f, headH * 0.15f); + + // Elegant tiara crown + float crownH = headH * 0.45f; + float crownW = headW * 1.4f; + float crownX = headRect.X - headW * 0.2f; + float crownY = headRect.Y - crownH * 0.55f; + + // Crown with gradient + using var crownGradient = new LinearGradientBrush( + new RectangleF(crownX, crownY, crownW, crownH), lightGold, gold, 90f); + + PointF[] crown = { + new PointF(crownX, crownY + crownH), + new PointF(crownX + crownW * 0.08f, crownY + crownH * 0.35f), + new PointF(crownX + crownW * 0.18f, crownY + crownH * 0.75f), + new PointF(crownX + crownW * 0.28f, crownY + crownH * 0.15f), + new PointF(crownX + crownW * 0.38f, crownY + crownH * 0.6f), + new PointF(crownX + crownW * 0.5f, crownY - crownH * 0.1f), + new PointF(crownX + crownW * 0.62f, crownY + crownH * 0.6f), + new PointF(crownX + crownW * 0.72f, crownY + crownH * 0.15f), + new PointF(crownX + crownW * 0.82f, crownY + crownH * 0.75f), + new PointF(crownX + crownW * 0.92f, crownY + crownH * 0.35f), + new PointF(crownX + crownW, crownY + crownH) + }; + g.FillPolygon(crownGradient, crown); g.DrawPolygon(outlinePen, crown); + + // Crown jewels + float jewelSize = crownW * 0.065f; + using var rubyBrush = new SolidBrush(Color.FromArgb(220, 20, 60)); + using var sapphireBrush = new SolidBrush(Color.FromArgb(30, 80, 180)); + using var pearlBrush = new SolidBrush(Color.FromArgb(255, 250, 245)); + + // Center jewel (ruby) + g.FillEllipse(rubyBrush, crownX + crownW * 0.5f - jewelSize * 0.7f, crownY - crownH * 0.1f - jewelSize * 0.3f, + jewelSize * 1.4f, jewelSize * 1.4f); + g.DrawEllipse(thinPen, crownX + crownW * 0.5f - jewelSize * 0.7f, crownY - crownH * 0.1f - jewelSize * 0.3f, + jewelSize * 1.4f, jewelSize * 1.4f); + + // Side jewels + g.FillEllipse(sapphireBrush, crownX + crownW * 0.28f - jewelSize/2, crownY + crownH * 0.1f, jewelSize, jewelSize); + g.FillEllipse(sapphireBrush, crownX + crownW * 0.72f - jewelSize/2, crownY + crownH * 0.1f, jewelSize, jewelSize); + + // Pearls + g.FillEllipse(pearlBrush, crownX + crownW * 0.08f - jewelSize * 0.4f, crownY + crownH * 0.3f, jewelSize * 0.8f, jewelSize * 0.8f); + g.FillEllipse(pearlBrush, crownX + crownW * 0.92f - jewelSize * 0.4f, crownY + crownH * 0.3f, jewelSize * 0.8f, jewelSize * 0.8f); + + // Detailed eyes + float eyeW = headW * 0.12f; + float eyeH = headH * 0.07f; + + // Left eye + DrawDetailedEye(g, headRect.X + headW * 0.22f, headRect.Y + headH * 0.38f, eyeW, eyeH, + Color.FromArgb(100, 80, 60), thinPen); + // Right eye + DrawDetailedEye(g, headRect.X + headW * 0.66f, headRect.Y + headH * 0.38f, eyeW, eyeH, + Color.FromArgb(100, 80, 60), thinPen); + + // Eyebrows + using var browPen = new Pen(Color.FromArgb(120, 90, 50), thinPen.Width); + g.DrawArc(browPen, headRect.X + headW * 0.18f, headRect.Y + headH * 0.28f, eyeW * 1.3f, eyeH, 200, 70); + g.DrawArc(browPen, headRect.X + headW * 0.62f, headRect.Y + headH * 0.28f, eyeW * 1.3f, eyeH, 250, 70); + + // Elegant nose + g.DrawBezier(thinPen, + new PointF(headRect.X + headW * 0.48f, headRect.Y + headH * 0.4f), + new PointF(headRect.X + headW * 0.5f, headRect.Y + headH * 0.5f), + new PointF(headRect.X + headW * 0.52f, headRect.Y + headH * 0.55f), + new PointF(headRect.X + headW * 0.5f, headRect.Y + headH * 0.58f)); + + // Lips with detail + using var lipBrush = new SolidBrush(Color.FromArgb(200, 90, 90)); + using var lipHighlight = new SolidBrush(Color.FromArgb(100, 255, 200, 200)); + + // Upper lip + PointF[] upperLip = { + new PointF(headRect.X + headW * 0.38f, headRect.Y + headH * 0.68f), + new PointF(headRect.X + headW * 0.45f, headRect.Y + headH * 0.65f), + new PointF(headRect.X + headW * 0.5f, headRect.Y + headH * 0.67f), + new PointF(headRect.X + headW * 0.55f, headRect.Y + headH * 0.65f), + new PointF(headRect.X + headW * 0.62f, headRect.Y + headH * 0.68f), + new PointF(headRect.X + headW * 0.5f, headRect.Y + headH * 0.72f) + }; + g.FillPolygon(lipBrush, upperLip); + + // Lower lip + g.FillEllipse(lipBrush, headRect.X + headW * 0.4f, headRect.Y + headH * 0.69f, headW * 0.2f, headH * 0.08f); + g.FillEllipse(lipHighlight, headRect.X + headW * 0.44f, headRect.Y + headH * 0.71f, headW * 0.08f, headH * 0.03f); + + // Elegant flower scepter + float flowerX = half.X + half.Width * 0.85f; + float flowerY = half.Y + half.Height * 0.25f; + DrawElaborateFlower(g, flowerX, flowerY, half.Width * 0.1f, color, gold, outlinePen, thinPen); + + // Flower stem + using var stemPen = new Pen(Color.FromArgb(80, 120, 60), outlinePen.Width * 1.2f); + g.DrawBezier(stemPen, + new PointF(flowerX, flowerY + half.Width * 0.08f), + new PointF(flowerX - half.Width * 0.02f, flowerY + half.Height * 0.3f), + new PointF(flowerX + half.Width * 0.02f, flowerY + half.Height * 0.5f), + new PointF(flowerX - half.Width * 0.01f, half.Bottom)); + + // Small leaves on stem + using var leafBrush = new SolidBrush(Color.FromArgb(100, 140, 80)); + PointF[] leaf1 = { + new PointF(flowerX, flowerY + half.Height * 0.35f), + new PointF(flowerX + half.Width * 0.06f, flowerY + half.Height * 0.32f), + new PointF(flowerX + half.Width * 0.02f, flowerY + half.Height * 0.4f) + }; + g.FillPolygon(leafBrush, leaf1); + + g.Restore(state); + } + + private static void DrawDetailedEye(Graphics g, float x, float y, float w, float h, Color irisColor, Pen outlinePen) + { + // Eye white + using var whiteBrush = new SolidBrush(Color.FromArgb(252, 252, 252)); + g.FillEllipse(whiteBrush, x, y, w, h); + + // Iris + using var irisBrush = new SolidBrush(irisColor); + float irisW = w * 0.5f; + float irisH = h * 0.85f; + g.FillEllipse(irisBrush, x + w * 0.25f, y + h * 0.08f, irisW, irisH); + + // Pupil + using var pupilBrush = new SolidBrush(Color.Black); + g.FillEllipse(pupilBrush, x + w * 0.35f, y + h * 0.2f, irisW * 0.6f, irisH * 0.6f); + + // Highlight + using var highlightBrush = new SolidBrush(Color.White); + g.FillEllipse(highlightBrush, x + w * 0.32f, y + h * 0.15f, w * 0.12f, h * 0.25f); + + // Eye outline + g.DrawEllipse(outlinePen, x, y, w, h); + + // Eyelashes + using var lashPen = new Pen(Color.FromArgb(60, 40, 30), outlinePen.Width * 0.4f); + for (int i = 0; i < 4; i++) + { + float lx = x + w * (0.15f + i * 0.22f); + g.DrawLine(lashPen, lx, y, lx - w * 0.02f, y - h * 0.15f); + } + } + + private static void DrawElaborateFlower(Graphics g, float x, float y, float size, Color petalColor, Color centerColor, Pen outlinePen, Pen thinPen) + { + // Outer petals + RectangleF petalRect = new RectangleF(x - size, y - size, size * 2, size * 2); + using var petalGradient = new LinearGradientBrush(petalRect, + LightenColor(petalColor, 0.3f), petalColor, 45f); + + for (int i = 0; i < 6; i++) + { + float angle = i * 60 * (float)System.Math.PI / 180; + float px = x + (float)System.Math.Cos(angle) * size * 0.7f; + float py = y + (float)System.Math.Sin(angle) * size * 0.7f; + + g.FillEllipse(petalGradient, px - size * 0.45f, py - size * 0.45f, size * 0.9f, size * 0.9f); + g.DrawEllipse(thinPen, px - size * 0.45f, py - size * 0.45f, size * 0.9f, size * 0.9f); + } + + // Inner petals + for (int i = 0; i < 6; i++) + { + float angle = (i * 60 + 30) * (float)System.Math.PI / 180; + float px = x + (float)System.Math.Cos(angle) * size * 0.4f; + float py = y + (float)System.Math.Sin(angle) * size * 0.4f; + + using var innerBrush = new SolidBrush(LightenColor(petalColor, 0.2f)); + g.FillEllipse(innerBrush, px - size * 0.3f, py - size * 0.3f, size * 0.6f, size * 0.6f); + } + + // Center + using var centerBrush = new SolidBrush(centerColor); + g.FillEllipse(centerBrush, x - size * 0.25f, y - size * 0.25f, size * 0.5f, size * 0.5f); + g.DrawEllipse(thinPen, x - size * 0.25f, y - size * 0.25f, size * 0.5f, size * 0.5f); + + // Center dots + using var dotBrush = new SolidBrush(Color.FromArgb(180, 140, 40)); + for (int i = 0; i < 5; i++) + { + float angle = i * 72 * (float)System.Math.PI / 180; + float dx = x + (float)System.Math.Cos(angle) * size * 0.12f; + float dy = y + (float)System.Math.Sin(angle) * size * 0.12f; + g.FillEllipse(dotBrush, dx - size * 0.04f, dy - size * 0.04f, size * 0.08f, size * 0.08f); + } + } + + private static void DrawJackEye(Graphics g, float x, float y, float w, float h, Pen outlinePen) + { + // Eye white + using var whiteBrush = new SolidBrush(Color.FromArgb(252, 252, 252)); + g.FillEllipse(whiteBrush, x, y, w, h); + + // Iris + using var irisBrush = new SolidBrush(Color.FromArgb(80, 60, 40)); + float irisW = w * 0.5f; + float irisH = h * 0.85f; + g.FillEllipse(irisBrush, x + w * 0.25f, y + h * 0.08f, irisW, irisH); + + // Pupil + using var pupilBrush = new SolidBrush(Color.Black); + g.FillEllipse(pupilBrush, x + w * 0.35f, y + h * 0.2f, irisW * 0.6f, irisH * 0.6f); + + // Highlight + using var highlightBrush = new SolidBrush(Color.White); + g.FillEllipse(highlightBrush, x + w * 0.32f, y + h * 0.15f, w * 0.12f, h * 0.25f); + + // Eye outline + g.DrawEllipse(outlinePen, x, y, w, h); } private static void DrawKing(Graphics g, Rectangle rect, Color color, string suit) { - // Simple stylized King vector drawing - RectangleF inner = RectangleF.Inflate(rect, -rect.Width * 0.15f, -rect.Height * 0.2f); - using var robeBrush = new SolidBrush(Color.FromArgb(230, color)); - using var outlinePen = new Pen(Color.Black, rect.Width / 150f); - using var faceBrush = new SolidBrush(Color.Beige); - using var goldBrush = new SolidBrush(Color.Gold); - - // Robe (rounded rectangle) - RectangleF robe = new RectangleF(inner.X + inner.Width * 0.25f, inner.Y + inner.Height * 0.4f, - inner.Width * 0.5f, inner.Height * 0.5f); - using (GraphicsPath robePath = new GraphicsPath()) + // French-style King (Roi) - elaborate mirrored double-headed design + float penW = System.Math.Max(1f, rect.Width / 120f); + using var outlinePen = new Pen(Color.FromArgb(50, 30, 15), penW); + using var thinPen = new Pen(Color.FromArgb(50, 30, 15), penW * 0.5f); + + // Colors - royal palette + Color cream = Color.FromArgb(255, 252, 245); + Color gold = Color.FromArgb(212, 175, 55); + Color darkGold = Color.FromArgb(170, 135, 30); + Color lightGold = Color.FromArgb(255, 223, 120); + Color skinTone = Color.FromArgb(255, 218, 185); + Color skinShadow = Color.FromArgb(235, 190, 160); + Color beardColor = Color.FromArgb(110, 75, 40); + Color beardHighlight = Color.FromArgb(150, 110, 65); + + // Draw decorative frame with gradient + RectangleF frameRect = new RectangleF(rect.X + rect.Width * 0.10f, rect.Y + rect.Height * 0.06f, + rect.Width * 0.80f, rect.Height * 0.88f); + using var frameBrush = new LinearGradientBrush(frameRect, cream, Color.FromArgb(250, 245, 235), 45f); + g.FillRectangle(frameBrush, frameRect); + + // Royal cross-hatch pattern in background + using var patternPen = new Pen(Color.FromArgb(10, color), penW * 0.3f); + for (float i = frameRect.X; i < frameRect.Right + frameRect.Height; i += rect.Width * 0.035f) { - float r = robe.Width * 0.2f; - robePath.AddArc(robe.X, robe.Y, r, r, 180, 90); - robePath.AddArc(robe.Right - r, robe.Y, r, r, 270, 90); - robePath.AddArc(robe.Right - r, robe.Bottom - r, r, r, 0, 90); - robePath.AddArc(robe.X, robe.Bottom - r, r, r, 90, 90); - robePath.CloseFigure(); - g.FillPath(robeBrush, robePath); - g.DrawPath(outlinePen, robePath); + g.DrawLine(patternPen, i, frameRect.Y, i - frameRect.Height * 0.4f, frameRect.Bottom); + g.DrawLine(patternPen, i - frameRect.Height * 0.4f, frameRect.Y, i, frameRect.Bottom); } - // Scepter (Left side) - float scepterX = inner.X + inner.Width * 0.15f; - float scepterY = inner.Bottom - inner.Height * 0.7f; - float scepterW = inner.Width * 0.05f; - float scepterH = inner.Height * 0.6f; - g.FillRectangle(goldBrush, scepterX, scepterY, scepterW, scepterH); - g.DrawRectangle(outlinePen, scepterX, scepterY, scepterW, scepterH); - // Scepter Head - float sHeadSize = inner.Width * 0.12f; - g.FillEllipse(goldBrush, scepterX + scepterW/2 - sHeadSize/2, scepterY - sHeadSize/2, sHeadSize, sHeadSize); - g.DrawEllipse(outlinePen, scepterX + scepterW/2 - sHeadSize/2, scepterY - sHeadSize/2, sHeadSize, sHeadSize); - - // Orb (Reichsapfel) (Right side) - float orbSize = inner.Width * 0.25f; - float orbX = inner.Right - orbSize * 1.2f; - float orbY = inner.Bottom - orbSize * 1.5f; - RectangleF orbRect = new RectangleF(orbX, orbY, orbSize, orbSize); - g.FillEllipse(goldBrush, orbRect); - g.DrawEllipse(outlinePen, orbRect); - // Cross on Orb - float oCrossW = orbSize * 0.2f; - float oCrossH = orbSize * 0.3f; - float oCrossX = orbX + orbSize/2 - oCrossW/2; - float oCrossY = orbY - oCrossH * 0.8f; - g.FillRectangle(goldBrush, oCrossX, oCrossY, oCrossW, oCrossH); // Vertical - g.DrawRectangle(outlinePen, oCrossX, oCrossY, oCrossW, oCrossH); - g.FillRectangle(goldBrush, oCrossX - oCrossW, oCrossY + oCrossH * 0.3f, oCrossW * 3, oCrossW); // Horizontal - g.DrawRectangle(outlinePen, oCrossX - oCrossW, oCrossY + oCrossH * 0.3f, oCrossW * 3, oCrossW); - - // Suit on Orb - using var suitFont = new Font("Arial", orbSize * 0.6f, FontStyle.Bold); + // Inner decorative border - triple line royal style + float borderInset = rect.Width * 0.02f; + RectangleF innerFrame = RectangleF.Inflate(frameRect, -borderInset * 2, -borderInset * 2); + using var borderPen = new Pen(color, penW * 1.2f); + using var goldBorderPen = new Pen(gold, penW * 0.6f); + g.DrawRectangle(borderPen, innerFrame.X, innerFrame.Y, innerFrame.Width, innerFrame.Height); + g.DrawRectangle(goldBorderPen, innerFrame.X - penW, innerFrame.Y - penW, innerFrame.Width + penW * 2, innerFrame.Height + penW * 2); + g.DrawRectangle(goldBorderPen, innerFrame.X + penW * 2, innerFrame.Y + penW * 2, innerFrame.Width - penW * 4, innerFrame.Height - penW * 4); + + // Royal crown corner ornaments + DrawRoyalCorner(g, innerFrame.X, innerFrame.Y, rect.Width * 0.1f, gold, color, outlinePen, false, false); + DrawRoyalCorner(g, innerFrame.Right, innerFrame.Y, rect.Width * 0.1f, gold, color, outlinePen, true, false); + DrawRoyalCorner(g, innerFrame.X, innerFrame.Bottom, rect.Width * 0.1f, gold, color, outlinePen, false, true); + DrawRoyalCorner(g, innerFrame.Right, innerFrame.Bottom, rect.Width * 0.1f, gold, color, outlinePen, true, true); + + // Draw upper half figure + DrawKingHalf(g, innerFrame, color, suit, false, outlinePen, thinPen, skinTone, skinShadow, beardColor, beardHighlight, gold, darkGold, lightGold); + + // Draw lower half figure (mirrored) + DrawKingHalf(g, innerFrame, color, suit, true, outlinePen, thinPen, skinTone, skinShadow, beardColor, beardHighlight, gold, darkGold, lightGold); + + // Center medallion with suit symbol and royal seal + float centerY = innerFrame.Y + innerFrame.Height / 2; + float medalSize = innerFrame.Width * 0.26f; + RectangleF medalRect = new RectangleF(innerFrame.X + innerFrame.Width / 2 - medalSize / 2, + centerY - medalSize / 2, medalSize, medalSize); + + // Royal seal medallion with multiple rings + using var sealGradient = new LinearGradientBrush(medalRect, Color.White, Color.FromArgb(245, 240, 225), 135f); + g.FillEllipse(sealGradient, medalRect); + + // Decorative rings + using var outerRingPen = new Pen(gold, penW * 2.5f); + g.DrawEllipse(outerRingPen, medalRect); + using var innerRingPen = new Pen(color, penW * 1.2f); + g.DrawEllipse(innerRingPen, RectangleF.Inflate(medalRect, -penW * 3, -penW * 3)); + using var centerRingPen = new Pen(gold, penW * 0.8f); + g.DrawEllipse(centerRingPen, RectangleF.Inflate(medalRect, -penW * 5, -penW * 5)); + + // Suit symbol + using var suitFont = new Font("Segoe UI Symbol", medalSize * 0.4f, FontStyle.Bold); using var suitBrush = new SolidBrush(color); StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }; - g.DrawString(suit, suitFont, suitBrush, orbRect, sf); - - // Head - float headRadius = inner.Width * 0.18f; - PointF headCenter = new PointF(inner.X + inner.Width * 0.5f, inner.Y + inner.Height * 0.24f); - RectangleF head = new RectangleF(headCenter.X - headRadius, headCenter.Y - headRadius, - headRadius * 2, headRadius * 2); - g.FillEllipse(faceBrush, head); - g.DrawEllipse(outlinePen, head); - - // Eyes - float eyeSize = headRadius * 0.2f; - using var eyeBrush = new SolidBrush(Color.Black); - g.FillEllipse(eyeBrush, headCenter.X - headRadius * 0.35f, headCenter.Y - headRadius * 0.2f, eyeSize, eyeSize); - g.FillEllipse(eyeBrush, headCenter.X + headRadius * 0.35f - eyeSize, headCenter.Y - headRadius * 0.2f, eyeSize, eyeSize); - - // Beard - RectangleF beard = new RectangleF(head.X + head.Width * 0.225f, headCenter.Y + headRadius * 0.2f, - head.Width * 0.55f, headRadius * 0.85f); - using var beardBrush = new SolidBrush(Color.FromArgb(160, 120, 80)); - g.FillEllipse(beardBrush, beard); - g.DrawEllipse(outlinePen, beard); - RectangleF beard2 = new RectangleF(head.X + head.Width * 0.3f, headCenter.Y + headRadius * 0.3f, - head.Width * 0.4f, headRadius * 0.3f); - g.FillEllipse(faceBrush, beard2); - g.DrawEllipse(outlinePen, beard2); - - - // 5-pointed Golden Crown - float crownBaseY = head.Y + headRadius * 0.5f; - float crownH = headRadius * 1.2f; - float crownW = head.Width * 1.1f; - float crownX = headCenter.X - crownW / 2; - - PointF[] crownPts = new PointF[11]; // 5 points + 2 base points - crownPts[0] = new PointF(crownX+ crownW * 0.1f, crownBaseY); // Base Left - crownPts[1] = new PointF(crownX, crownBaseY - crownH * 0.6f); // Point 1 - crownPts[2] = new PointF(crownX + crownW * 0.125f, crownBaseY - crownH * 0.4f); // Point 2 - crownPts[3] = new PointF(crownX + crownW * 0.25f, crownBaseY - crownH * 0.9f); // Point 2 - crownPts[4] = new PointF(crownX + crownW * 0.375f, crownBaseY - crownH * 0.5f); // Point 2 - crownPts[5] = new PointF(crownX + crownW * 0.5f, crownBaseY - crownH); // Point 3 (Middle) - crownPts[6] = new PointF(crownX + crownW * 0.625f, crownBaseY - crownH *0.5f); // Point 3 (Middle) - crownPts[7] = new PointF(crownX + crownW * 0.75f, crownBaseY - crownH * 0.9f); // Point 4 - crownPts[8] = new PointF(crownX + crownW * 0.875f, crownBaseY - crownH * 0.4f); // Point 4 - crownPts[9] = new PointF(crownX + crownW, crownBaseY - crownH * 0.6f); // Point 5 - crownPts[10] = new PointF(crownX + crownW *0.9f, crownBaseY); // Base Right - - g.FillPolygon(goldBrush, crownPts); - g.DrawPolygon(outlinePen, crownPts); - - // Gemstones on Crown - float gemSize = crownW * 0.1f; - float gemY = crownBaseY - gemSize * 1.5f; - using var gemBrush = new SolidBrush(color); - - // Gems - g.FillEllipse(gemBrush, crownX + crownW * 0.2f, gemY, gemSize, gemSize); - g.FillEllipse(gemBrush, crownX + crownW * 0.5f - gemSize/2, gemY - gemSize * 0.5f, gemSize, gemSize); - g.FillEllipse(gemBrush, crownX + crownW * 0.8f - gemSize, gemY, gemSize, gemSize); - - g.FillEllipse(gemBrush, crownX + crownW * 0.0f - gemSize / 2, crownBaseY- crownH *0.6f- gemSize * 0.5f, gemSize, gemSize); - g.FillEllipse(gemBrush, crownX + crownW * 0.25f - gemSize / 2, crownBaseY - crownH *0.9f- gemSize * 0.5f, gemSize, gemSize); - g.FillEllipse(gemBrush, crownX + crownW * 0.5f - gemSize / 2, crownBaseY - crownH - gemSize * 0.5f, gemSize, gemSize); - g.FillEllipse(gemBrush, crownX + crownW * 0.75f - gemSize / 2, crownBaseY - crownH *0.9f- gemSize * 0.5f, gemSize, gemSize); - g.FillEllipse(gemBrush, crownX + crownW * 1.0f - gemSize/2, crownBaseY - crownH *0.6f- gemSize * 0.5f, gemSize, gemSize); + g.DrawString(suit, suitFont, suitBrush, medalRect, sf); + } + + private static void DrawRoyalCorner(Graphics g, float x, float y, float size, Color gold, Color accent, Pen outlinePen, bool flipH, bool flipV) + { + var state = g.Save(); + g.TranslateTransform(x, y); + if (flipH) g.ScaleTransform(-1, 1); + if (flipV) g.ScaleTransform(1, -1); + + using var goldBrush = new SolidBrush(gold); + using var accentBrush = new SolidBrush(accent); + + // Crown-like corner ornament + PointF[] crownOrn = { + new PointF(0, 0), + new PointF(size * 0.4f, 0), + new PointF(size * 0.3f, size * 0.15f), + new PointF(size * 0.5f, size * 0.08f), + new PointF(size * 0.35f, size * 0.25f), + new PointF(size * 0.25f, size * 0.35f), + new PointF(size * 0.08f, size * 0.5f), + new PointF(size * 0.15f, size * 0.3f), + new PointF(0, size * 0.4f) + }; + g.FillPolygon(goldBrush, crownOrn); + g.DrawPolygon(outlinePen, crownOrn); + + // Small jewel + float jewelX = size * 0.12f; + float jewelY = size * 0.12f; + float jewelSize = size * 0.1f; + g.FillEllipse(accentBrush, jewelX, jewelY, jewelSize, jewelSize); + + g.Restore(state); + } + + private static void DrawKingHalf(Graphics g, RectangleF rect, Color color, string suit, bool mirrored, + Pen outlinePen, Pen thinPen, Color skinTone, Color skinShadow, Color beardColor, Color beardHighlight, + Color gold, Color darkGold, Color lightGold) + { + var state = g.Save(); + + if (mirrored) + { + g.TranslateTransform(rect.X + rect.Width / 2, rect.Y + rect.Height / 2); + g.RotateTransform(180); + g.TranslateTransform(-(rect.X + rect.Width / 2), -(rect.Y + rect.Height / 2)); + } + + float halfH = rect.Height * 0.47f; + RectangleF half = new RectangleF(rect.X, rect.Y, rect.Width, halfH); + + // Royal robe with rich gradient and ermine trim + RectangleF robeRect = new RectangleF(half.X + half.Width * 0.1f, half.Y + half.Height * 0.38f, + half.Width * 0.8f, half.Height * 0.62f); + using var robeGradient = new LinearGradientBrush(robeRect, + Color.FromArgb(255, color), Color.FromArgb(200, DarkenColor(color, 0.2f)), 90f); + + PointF[] robe = { + new PointF(half.X + half.Width * 0.1f, half.Bottom), + new PointF(half.X + half.Width * 0.15f, half.Y + half.Height * 0.52f), + new PointF(half.X + half.Width * 0.22f, half.Y + half.Height * 0.45f), + new PointF(half.X + half.Width * 0.5f, half.Y + half.Height * 0.38f), + new PointF(half.X + half.Width * 0.78f, half.Y + half.Height * 0.45f), + new PointF(half.X + half.Width * 0.85f, half.Y + half.Height * 0.52f), + new PointF(half.X + half.Width * 0.9f, half.Bottom) + }; + g.FillPolygon(robeGradient, robe); + g.DrawPolygon(outlinePen, robe); + + // Robe folds + using var foldPen = new Pen(Color.FromArgb(50, 0, 0, 0), thinPen.Width); + using var highlightPen = new Pen(Color.FromArgb(60, 255, 255, 255), thinPen.Width); + g.DrawBezier(foldPen, + new PointF(half.X + half.Width * 0.35f, half.Y + half.Height * 0.48f), + new PointF(half.X + half.Width * 0.32f, half.Y + half.Height * 0.65f), + new PointF(half.X + half.Width * 0.28f, half.Y + half.Height * 0.8f), + new PointF(half.X + half.Width * 0.22f, half.Bottom)); + g.DrawBezier(highlightPen, + new PointF(half.X + half.Width * 0.38f, half.Y + half.Height * 0.48f), + new PointF(half.X + half.Width * 0.36f, half.Y + half.Height * 0.65f), + new PointF(half.X + half.Width * 0.33f, half.Y + half.Height * 0.8f), + new PointF(half.X + half.Width * 0.28f, half.Bottom)); + g.DrawBezier(foldPen, + new PointF(half.X + half.Width * 0.65f, half.Y + half.Height * 0.48f), + new PointF(half.X + half.Width * 0.68f, half.Y + half.Height * 0.65f), + new PointF(half.X + half.Width * 0.72f, half.Y + half.Height * 0.8f), + new PointF(half.X + half.Width * 0.78f, half.Bottom)); + + // Elaborate ermine collar with spots + using var ermineBrush = new SolidBrush(Color.FromArgb(255, 252, 248)); + PointF[] collar = { + new PointF(half.X + half.Width * 0.25f, half.Y + half.Height * 0.45f), + new PointF(half.X + half.Width * 0.32f, half.Y + half.Height * 0.52f), + new PointF(half.X + half.Width * 0.42f, half.Y + half.Height * 0.56f), + new PointF(half.X + half.Width * 0.5f, half.Y + half.Height * 0.58f), + new PointF(half.X + half.Width * 0.58f, half.Y + half.Height * 0.56f), + new PointF(half.X + half.Width * 0.68f, half.Y + half.Height * 0.52f), + new PointF(half.X + half.Width * 0.75f, half.Y + half.Height * 0.45f), + new PointF(half.X + half.Width * 0.5f, half.Y + half.Height * 0.38f) + }; + g.FillPolygon(ermineBrush, collar); + g.DrawPolygon(thinPen, collar); + + // Ermine spots (black tail tips) + using var spotBrush = new SolidBrush(Color.FromArgb(35, 25, 15)); + float spotH = half.Width * 0.012f; + float spotW = spotH * 0.6f; + float[] spotXs = { 0.35f, 0.42f, 0.5f, 0.58f, 0.65f }; + float[] spotYs = { 0.48f, 0.52f, 0.54f, 0.52f, 0.48f }; + for (int i = 0; i < spotXs.Length; i++) + { + g.FillEllipse(spotBrush, half.X + half.Width * spotXs[i], half.Y + half.Height * spotYs[i], spotW, spotH * 2.5f); + } + // Second row + float[] spotXs2 = { 0.38f, 0.46f, 0.54f, 0.62f }; + for (int i = 0; i < spotXs2.Length; i++) + { + g.FillEllipse(spotBrush, half.X + half.Width * spotXs2[i], half.Y + half.Height * 0.44f, spotW, spotH * 2.5f); + } + + // Royal chain with medallion + using var chainPen = new Pen(gold, outlinePen.Width * 2f); + g.DrawArc(chainPen, half.X + half.Width * 0.35f, half.Y + half.Height * 0.48f, + half.Width * 0.3f, half.Height * 0.16f, 0, 180); + + // Chain links detail + using var linkPen = new Pen(darkGold, thinPen.Width); + for (float lx = half.X + half.Width * 0.38f; lx < half.X + half.Width * 0.62f; lx += half.Width * 0.04f) + { + float ly = half.Y + half.Height * 0.52f + (float)System.Math.Sin((lx - half.X) * 0.1f) * half.Height * 0.04f; + g.DrawEllipse(linkPen, lx, ly, half.Width * 0.025f, half.Height * 0.02f); + } + + // Royal medallion on chain + using var medalGradient = new LinearGradientBrush( + new RectangleF(half.X + half.Width * 0.44f, half.Y + half.Height * 0.58f, half.Width * 0.12f, half.Width * 0.12f), + lightGold, gold, 135f); + float medalX = half.X + half.Width * 0.5f; + float medalY = half.Y + half.Height * 0.62f; + float medalSize = half.Width * 0.1f; + g.FillEllipse(medalGradient, medalX - medalSize / 2, medalY, medalSize, medalSize); + g.DrawEllipse(outlinePen, medalX - medalSize / 2, medalY, medalSize, medalSize); + + // Cross on medallion + using var crossPen = new Pen(color, thinPen.Width * 1.5f); + g.DrawLine(crossPen, medalX, medalY + medalSize * 0.2f, medalX, medalY + medalSize * 0.8f); + g.DrawLine(crossPen, medalX - medalSize * 0.3f, medalY + medalSize * 0.5f, medalX + medalSize * 0.3f, medalY + medalSize * 0.5f); + + // Head with detailed shading + float headW = half.Width * 0.24f; + float headH = half.Height * 0.32f; + RectangleF headRect = new RectangleF(half.X + half.Width * 0.5f - headW / 2, + half.Y + half.Height * 0.08f, headW, headH); + + // Face with gradient + using var faceGradient = new LinearGradientBrush(headRect, skinTone, skinShadow, 130f); + g.FillEllipse(faceGradient, headRect); + g.DrawEllipse(outlinePen, headRect); + + // Elaborate beard with gradient and texture + using var beardGradient = new LinearGradientBrush( + new RectangleF(headRect.X + headW * 0.1f, headRect.Y + headH * 0.45f, headW * 0.8f, headH * 0.7f), + beardHighlight, beardColor, 90f); + + // Main beard shape + PointF[] beard = { + new PointF(headRect.X + headW * 0.15f, headRect.Y + headH * 0.5f), + new PointF(headRect.X + headW * 0.1f, headRect.Y + headH * 0.7f), + new PointF(headRect.X + headW * 0.2f, headRect.Y + headH * 0.9f), + new PointF(headRect.X + headW * 0.35f, headRect.Y + headH * 1.05f), + new PointF(headRect.X + headW * 0.5f, headRect.Y + headH * 1.1f), + new PointF(headRect.X + headW * 0.65f, headRect.Y + headH * 1.05f), + new PointF(headRect.X + headW * 0.8f, headRect.Y + headH * 0.9f), + new PointF(headRect.X + headW * 0.9f, headRect.Y + headH * 0.7f), + new PointF(headRect.X + headW * 0.85f, headRect.Y + headH * 0.5f) + }; + g.FillPolygon(beardGradient, beard); + g.DrawPolygon(thinPen, beard); + + // Beard texture (wavy lines) + using var beardTexturePen = new Pen(Color.FromArgb(60, 80, 55, 30), thinPen.Width * 0.5f); + for (int i = 0; i < 5; i++) + { + float bx = headRect.X + headW * (0.25f + i * 0.12f); + g.DrawBezier(beardTexturePen, + new PointF(bx, headRect.Y + headH * 0.55f), + new PointF(bx - headW * 0.03f, headRect.Y + headH * 0.7f), + new PointF(bx + headW * 0.03f, headRect.Y + headH * 0.85f), + new PointF(bx, headRect.Y + headH * 1.0f)); + } + + // Mustache with detail + using var mustacheBrush = new SolidBrush(beardColor); + PointF[] leftMustache = { + new PointF(headRect.X + headW * 0.48f, headRect.Y + headH * 0.52f), + new PointF(headRect.X + headW * 0.3f, headRect.Y + headH * 0.48f), + new PointF(headRect.X + headW * 0.15f, headRect.Y + headH * 0.55f), + new PointF(headRect.X + headW * 0.2f, headRect.Y + headH * 0.6f), + new PointF(headRect.X + headW * 0.35f, headRect.Y + headH * 0.58f), + new PointF(headRect.X + headW * 0.48f, headRect.Y + headH * 0.6f) + }; + g.FillPolygon(mustacheBrush, leftMustache); + + PointF[] rightMustache = { + new PointF(headRect.X + headW * 0.52f, headRect.Y + headH * 0.52f), + new PointF(headRect.X + headW * 0.7f, headRect.Y + headH * 0.48f), + new PointF(headRect.X + headW * 0.85f, headRect.Y + headH * 0.55f), + new PointF(headRect.X + headW * 0.8f, headRect.Y + headH * 0.6f), + new PointF(headRect.X + headW * 0.65f, headRect.Y + headH * 0.58f), + new PointF(headRect.X + headW * 0.52f, headRect.Y + headH * 0.6f) + }; + g.FillPolygon(mustacheBrush, rightMustache); + + // Detailed eyes + float eyeW = headW * 0.13f; + float eyeH = headH * 0.07f; + DrawKingEye(g, headRect.X + headW * 0.22f, headRect.Y + headH * 0.32f, eyeW, eyeH, thinPen); + DrawKingEye(g, headRect.X + headW * 0.65f, headRect.Y + headH * 0.32f, eyeW, eyeH, thinPen); + + // Stern eyebrows + using var browPen = new Pen(beardColor, thinPen.Width * 1.5f); + g.DrawLine(browPen, headRect.X + headW * 0.18f, headRect.Y + headH * 0.28f, + headRect.X + headW * 0.38f, headRect.Y + headH * 0.25f); + g.DrawLine(browPen, headRect.X + headW * 0.62f, headRect.Y + headH * 0.25f, + headRect.X + headW * 0.82f, headRect.Y + headH * 0.28f); + + // Nose + g.DrawBezier(thinPen, + new PointF(headRect.X + headW * 0.48f, headRect.Y + headH * 0.35f), + new PointF(headRect.X + headW * 0.5f, headRect.Y + headH * 0.42f), + new PointF(headRect.X + headW * 0.52f, headRect.Y + headH * 0.48f), + new PointF(headRect.X + headW * 0.5f, headRect.Y + headH * 0.5f)); + + // Elaborate royal crown with cross + float crownH = headH * 0.6f; + float crownW = headW * 1.5f; + float crownX = headRect.X - headW * 0.25f; + float crownY = headRect.Y - crownH * 0.45f; + + // Crown base band + using var crownBaseGradient = new LinearGradientBrush( + new RectangleF(crownX, crownY + crownH * 0.55f, crownW, crownH * 0.45f), + lightGold, gold, 90f); + RectangleF crownBase = new RectangleF(crownX, crownY + crownH * 0.55f, crownW, crownH * 0.45f); + g.FillRectangle(crownBaseGradient, crownBase); + g.DrawRectangle(outlinePen, crownBase.X, crownBase.Y, crownBase.Width, crownBase.Height); + + // Velvet interior (visible above base) + using var velvetBrush = new SolidBrush(color); + RectangleF velvetRect = new RectangleF(crownX + crownW * 0.08f, crownY + crownH * 0.4f, + crownW * 0.84f, crownH * 0.2f); + g.FillRectangle(velvetBrush, velvetRect); + + // Crown arches with gradient + using var archGradient = new LinearGradientBrush( + new RectangleF(crownX, crownY, crownW, crownH * 0.6f), lightGold, gold, 90f); + + PointF[] crownArch = { + new PointF(crownX + crownW * 0.08f, crownY + crownH * 0.55f), + new PointF(crownX + crownW * 0.15f, crownY + crownH * 0.2f), + new PointF(crownX + crownW * 0.3f, crownY + crownH * 0.35f), + new PointF(crownX + crownW * 0.5f, crownY - crownH * 0.05f), + new PointF(crownX + crownW * 0.7f, crownY + crownH * 0.35f), + new PointF(crownX + crownW * 0.85f, crownY + crownH * 0.2f), + new PointF(crownX + crownW * 0.92f, crownY + crownH * 0.55f) + }; + g.FillPolygon(archGradient, crownArch); + g.DrawPolygon(outlinePen, crownArch); + + // Fleur-de-lis points on crown + DrawFleurDeLis(g, crownX + crownW * 0.15f, crownY + crownH * 0.15f, crownW * 0.08f, gold, outlinePen); + DrawFleurDeLis(g, crownX + crownW * 0.5f, crownY - crownH * 0.1f, crownW * 0.1f, gold, outlinePen); + DrawFleurDeLis(g, crownX + crownW * 0.85f, crownY + crownH * 0.15f, crownW * 0.08f, gold, outlinePen); + + // Cross on top (monde) + float crossX = crownX + crownW * 0.5f; + float crossY = crownY - crownH * 0.15f; + float crossSize = crownW * 0.08f; + + // Orb + using var orbGradient = new LinearGradientBrush( + new RectangleF(crossX - crossSize * 0.7f, crossY - crossSize * 0.3f, crossSize * 1.4f, crossSize * 1.4f), + lightGold, gold, 135f); + g.FillEllipse(orbGradient, crossX - crossSize * 0.5f, crossY, crossSize, crossSize); + g.DrawEllipse(outlinePen, crossX - crossSize * 0.5f, crossY, crossSize, crossSize); + + // Cross on orb + using var crossBrush = new SolidBrush(gold); + g.FillRectangle(crossBrush, crossX - crossSize * 0.08f, crossY - crossSize * 0.5f, crossSize * 0.16f, crossSize * 0.6f); + g.FillRectangle(crossBrush, crossX - crossSize * 0.25f, crossY - crossSize * 0.3f, crossSize * 0.5f, crossSize * 0.12f); + + // Crown jewels + float jewelSize = crownW * 0.055f; + using var rubyBrush = new SolidBrush(Color.FromArgb(180, 20, 40)); + using var sapphireBrush = new SolidBrush(Color.FromArgb(30, 60, 150)); + using var emeraldBrush = new SolidBrush(Color.FromArgb(30, 120, 60)); + + // Band jewels + g.FillEllipse(rubyBrush, crownX + crownW * 0.2f, crownY + crownH * 0.65f, jewelSize, jewelSize); + g.FillEllipse(sapphireBrush, crownX + crownW * 0.4f, crownY + crownH * 0.65f, jewelSize, jewelSize); + g.FillEllipse(emeraldBrush, crownX + crownW * 0.5f - jewelSize / 2, crownY + crownH * 0.62f, jewelSize * 1.2f, jewelSize * 1.2f); + g.FillEllipse(sapphireBrush, crownX + crownW * 0.6f, crownY + crownH * 0.65f, jewelSize, jewelSize); + g.FillEllipse(rubyBrush, crownX + crownW * 0.8f - jewelSize, crownY + crownH * 0.65f, jewelSize, jewelSize); + + // Jewel highlights + using var jewelHighlight = new SolidBrush(Color.FromArgb(100, 255, 255, 255)); + g.FillEllipse(jewelHighlight, crownX + crownW * 0.5f - jewelSize * 0.3f, crownY + crownH * 0.64f, jewelSize * 0.3f, jewelSize * 0.3f); + + // Royal sword (behind shoulder) + DrawRoyalSword(g, half.X + half.Width * 0.06f, half.Y + half.Height * 0.02f, half.Width * 0.12f, half.Height * 0.95f, + gold, darkGold, outlinePen, thinPen); + + g.Restore(state); + } + + private static void DrawKingEye(Graphics g, float x, float y, float w, float h, Pen thinPen) + { + using var whiteBrush = new SolidBrush(Color.FromArgb(250, 250, 250)); + g.FillEllipse(whiteBrush, x, y, w, h); + + using var irisBrush = new SolidBrush(Color.FromArgb(70, 55, 45)); + g.FillEllipse(irisBrush, x + w * 0.28f, y + h * 0.1f, w * 0.45f, h * 0.8f); + + using var pupilBrush = new SolidBrush(Color.Black); + g.FillEllipse(pupilBrush, x + w * 0.38f, y + h * 0.22f, w * 0.25f, h * 0.56f); + + using var highlightBrush = new SolidBrush(Color.White); + g.FillEllipse(highlightBrush, x + w * 0.35f, y + h * 0.18f, w * 0.12f, h * 0.25f); + + g.DrawEllipse(thinPen, x, y, w, h); + } + + private static void DrawFleurDeLis(Graphics g, float x, float y, float size, Color gold, Pen outlinePen) + { + using var goldBrush = new SolidBrush(gold); + + // Center petal + PointF[] center = { + new PointF(x, y + size), + new PointF(x - size * 0.15f, y + size * 0.3f), + new PointF(x, y - size * 0.2f), + new PointF(x + size * 0.15f, y + size * 0.3f) + }; + g.FillPolygon(goldBrush, center); + + // Left petal + PointF[] left = { + new PointF(x - size * 0.1f, y + size * 0.5f), + new PointF(x - size * 0.4f, y), + new PointF(x - size * 0.35f, y + size * 0.6f) + }; + g.FillPolygon(goldBrush, left); + + // Right petal + PointF[] right = { + new PointF(x + size * 0.1f, y + size * 0.5f), + new PointF(x + size * 0.4f, y), + new PointF(x + size * 0.35f, y + size * 0.6f) + }; + g.FillPolygon(goldBrush, right); + } + + private static void DrawRoyalSword(Graphics g, float x, float y, float w, float h, Color gold, Color darkGold, Pen outlinePen, Pen thinPen) + { + // Blade with gradient + using var bladeGradient = new LinearGradientBrush( + new RectangleF(x, y, w, h * 0.7f), + Color.FromArgb(230, 235, 240), Color.FromArgb(180, 185, 195), 0f); + + PointF[] blade = { + new PointF(x + w * 0.35f, y), + new PointF(x + w * 0.65f, y), + new PointF(x + w * 0.6f, y + h * 0.65f), + new PointF(x + w * 0.4f, y + h * 0.65f) + }; + g.FillPolygon(bladeGradient, blade); + g.DrawPolygon(outlinePen, blade); + + // Blade center line (fuller) + using var fullerPen = new Pen(Color.FromArgb(60, 100, 100, 100), thinPen.Width); + g.DrawLine(fullerPen, x + w * 0.5f, y + h * 0.05f, x + w * 0.5f, y + h * 0.55f); + + // Elaborate crossguard + using var guardGradient = new LinearGradientBrush( + new RectangleF(x - w * 0.3f, y + h * 0.63f, w * 1.6f, h * 0.06f), + Color.FromArgb(255, 223, 120), gold, 90f); + RectangleF guard = new RectangleF(x - w * 0.2f, y + h * 0.64f, w * 1.4f, h * 0.04f); + g.FillRectangle(guardGradient, guard); + g.DrawRectangle(outlinePen, guard.X, guard.Y, guard.Width, guard.Height); + + // Guard ends (quillons) + using var goldBrush = new SolidBrush(gold); + g.FillEllipse(goldBrush, x - w * 0.3f, y + h * 0.635f, w * 0.15f, h * 0.05f); + g.FillEllipse(goldBrush, x + w * 1.15f, y + h * 0.635f, w * 0.15f, h * 0.05f); + + // Handle (grip) with wire wrapping + using var gripGradient = new LinearGradientBrush( + new RectangleF(x + w * 0.35f, y + h * 0.68f, w * 0.3f, h * 0.2f), + darkGold, Color.FromArgb(120, 85, 30), 0f); + RectangleF grip = new RectangleF(x + w * 0.38f, y + h * 0.68f, w * 0.24f, h * 0.18f); + g.FillRectangle(gripGradient, grip); + g.DrawRectangle(outlinePen, grip.X, grip.Y, grip.Width, grip.Height); + + // Wire wrapping + using var wirePen = new Pen(gold, thinPen.Width * 0.7f); + for (float wy = grip.Y + h * 0.02f; wy < grip.Bottom - h * 0.01f; wy += h * 0.025f) + { + g.DrawLine(wirePen, grip.X, wy, grip.Right, wy + h * 0.01f); + } + + // Pommel + using var pommelGradient = new LinearGradientBrush( + new RectangleF(x + w * 0.3f, y + h * 0.85f, w * 0.4f, w * 0.4f), + Color.FromArgb(255, 223, 120), gold, 135f); + g.FillEllipse(pommelGradient, x + w * 0.32f, y + h * 0.86f, w * 0.36f, w * 0.36f); + g.DrawEllipse(outlinePen, x + w * 0.32f, y + h * 0.86f, w * 0.36f, w * 0.36f); + // Jewel in pommel + using var jewelBrush = new SolidBrush(Color.FromArgb(150, 20, 40)); + float jewelSize = w * 0.12f; + g.FillEllipse(jewelBrush, x + w * 0.5f - jewelSize / 2, y + h * 0.88f, jewelSize, jewelSize); } private GraphicsPath RoundedRectangle(Rectangle r, int d) diff --git a/CSharpBible/Games/DetectiveGame.Console/DetectiveGame.Console.csproj b/CSharpBible/Games/DetectiveGame.Console/DetectiveGame.Console.csproj index 400994b58..645c746ed 100644 --- a/CSharpBible/Games/DetectiveGame.Console/DetectiveGame.Console.csproj +++ b/CSharpBible/Games/DetectiveGame.Console/DetectiveGame.Console.csproj @@ -23,4 +23,8 @@ + + + + \ No newline at end of file diff --git a/CSharpBible/Games/DetectiveGame.Tests/DetectiveGame.Tests.csproj b/CSharpBible/Games/DetectiveGame.Tests/DetectiveGame.Tests.csproj index acff2ea2a..17c22cb15 100644 --- a/CSharpBible/Games/DetectiveGame.Tests/DetectiveGame.Tests.csproj +++ b/CSharpBible/Games/DetectiveGame.Tests/DetectiveGame.Tests.csproj @@ -21,4 +21,9 @@ + + + + + \ No newline at end of file diff --git a/CSharpBible/Games/DetectiveGame.Wpf/DetectiveGame.Wpf.csproj b/CSharpBible/Games/DetectiveGame.Wpf/DetectiveGame.Wpf.csproj index 3efd58590..6139114ef 100644 --- a/CSharpBible/Games/DetectiveGame.Wpf/DetectiveGame.Wpf.csproj +++ b/CSharpBible/Games/DetectiveGame.Wpf/DetectiveGame.Wpf.csproj @@ -13,4 +13,7 @@ + + + \ No newline at end of file diff --git a/CSharpBible/Games/Directory.Packages.props b/CSharpBible/Games/Directory.Packages.props index 56c7ac5db..07fa7bc83 100644 --- a/CSharpBible/Games/Directory.Packages.props +++ b/CSharpBible/Games/Directory.Packages.props @@ -5,5 +5,7 @@ + + \ No newline at end of file diff --git a/CSharpBible/Games/Galaxia_BaseTests/Galaxia_BaseTests.csproj b/CSharpBible/Games/Galaxia_BaseTests/Galaxia_BaseTests.csproj index a53a4c3b2..a994bb297 100644 --- a/CSharpBible/Games/Galaxia_BaseTests/Galaxia_BaseTests.csproj +++ b/CSharpBible/Games/Galaxia_BaseTests/Galaxia_BaseTests.csproj @@ -22,4 +22,9 @@ + + + + + diff --git a/CSharpBible/Games/Galaxia_UI.Tests/Galaxia_UI.Tests.csproj b/CSharpBible/Games/Galaxia_UI.Tests/Galaxia_UI.Tests.csproj index 467326d3a..f021ee2da 100644 --- a/CSharpBible/Games/Galaxia_UI.Tests/Galaxia_UI.Tests.csproj +++ b/CSharpBible/Games/Galaxia_UI.Tests/Galaxia_UI.Tests.csproj @@ -13,4 +13,7 @@ + + + \ No newline at end of file diff --git a/CSharpBible/Games/Galaxia_UI/Galaxia_UI.csproj b/CSharpBible/Games/Galaxia_UI/Galaxia_UI.csproj index dd0719b76..ee0a2795c 100644 --- a/CSharpBible/Games/Galaxia_UI/Galaxia_UI.csproj +++ b/CSharpBible/Games/Galaxia_UI/Galaxia_UI.csproj @@ -15,9 +15,14 @@ + + + + + \ No newline at end of file diff --git a/CSharpBible/Games/Game_Base/Game_Base.csproj b/CSharpBible/Games/Game_Base/Game_Base.csproj index e6e47afcc..f5968e276 100644 --- a/CSharpBible/Games/Game_Base/Game_Base.csproj +++ b/CSharpBible/Games/Game_Base/Game_Base.csproj @@ -15,11 +15,15 @@ - + + + + + diff --git a/CSharpBible/Games/Game_BaseTests/Game_BaseTests.csproj b/CSharpBible/Games/Game_BaseTests/Game_BaseTests.csproj index 3cfc29c04..d4819430a 100644 --- a/CSharpBible/Games/Game_BaseTests/Game_BaseTests.csproj +++ b/CSharpBible/Games/Game_BaseTests/Game_BaseTests.csproj @@ -20,4 +20,10 @@ + + + + + + diff --git a/CSharpBible/Games/HexaBan_Console/HexaBan_Console.csproj b/CSharpBible/Games/HexaBan_Console/HexaBan_Console.csproj index a922e806a..02938bb78 100644 --- a/CSharpBible/Games/HexaBan_Console/HexaBan_Console.csproj +++ b/CSharpBible/Games/HexaBan_Console/HexaBan_Console.csproj @@ -20,4 +20,7 @@ + + + diff --git a/CSharpBible/Games/HexaBan_Console/HexaBan_ConsoleLnx.csproj b/CSharpBible/Games/HexaBan_Console/HexaBan_ConsoleLnx.csproj index 2a82b663c..b86e174c3 100644 --- a/CSharpBible/Games/HexaBan_Console/HexaBan_ConsoleLnx.csproj +++ b/CSharpBible/Games/HexaBan_Console/HexaBan_ConsoleLnx.csproj @@ -16,5 +16,8 @@ + + + diff --git a/CSharpBible/Games/HexaBan_Console/HexaBan_ConsoleWin.csproj b/CSharpBible/Games/HexaBan_Console/HexaBan_ConsoleWin.csproj index 15f4d4809..3ce8e3c75 100644 --- a/CSharpBible/Games/HexaBan_Console/HexaBan_ConsoleWin.csproj +++ b/CSharpBible/Games/HexaBan_Console/HexaBan_ConsoleWin.csproj @@ -16,5 +16,8 @@ + + + diff --git a/CSharpBible/Games/MVVM_TiledDisplay_net/MVVM_TiledDisplay_net.csproj b/CSharpBible/Games/MVVM_TiledDisplay_net/MVVM_TiledDisplay_net.csproj index 2689139f2..695194ea0 100644 --- a/CSharpBible/Games/MVVM_TiledDisplay_net/MVVM_TiledDisplay_net.csproj +++ b/CSharpBible/Games/MVVM_TiledDisplay_net/MVVM_TiledDisplay_net.csproj @@ -24,5 +24,8 @@ + + + diff --git a/CSharpBible/Games/MidiSwing.MVVM/MidiSwing.MVVM.csproj b/CSharpBible/Games/MidiSwing.MVVM/MidiSwing.MVVM.csproj index fb8e4cf3a..d19a10fc5 100644 --- a/CSharpBible/Games/MidiSwing.MVVM/MidiSwing.MVVM.csproj +++ b/CSharpBible/Games/MidiSwing.MVVM/MidiSwing.MVVM.csproj @@ -20,4 +20,9 @@ + + + + + diff --git a/CSharpBible/Games/RemoteTerminal.Tests/RemoteTerminal.Tests.csproj b/CSharpBible/Games/RemoteTerminal.Tests/RemoteTerminal.Tests.csproj index 3620db949..73433b0d9 100644 --- a/CSharpBible/Games/RemoteTerminal.Tests/RemoteTerminal.Tests.csproj +++ b/CSharpBible/Games/RemoteTerminal.Tests/RemoteTerminal.Tests.csproj @@ -24,4 +24,8 @@ + + + + diff --git a/CSharpBible/Games/SharpHack.AITests/SharpHack.AITests.csproj b/CSharpBible/Games/SharpHack.AITests/SharpHack.AITests.csproj index 59561df96..81b090d9d 100644 --- a/CSharpBible/Games/SharpHack.AITests/SharpHack.AITests.csproj +++ b/CSharpBible/Games/SharpHack.AITests/SharpHack.AITests.csproj @@ -27,4 +27,10 @@ + + + + + + diff --git a/CSharpBible/Games/SharpHack.Base/SharpHack.Base.csproj b/CSharpBible/Games/SharpHack.Base/SharpHack.Base.csproj index 49b654132..05017359d 100644 --- a/CSharpBible/Games/SharpHack.Base/SharpHack.Base.csproj +++ b/CSharpBible/Games/SharpHack.Base/SharpHack.Base.csproj @@ -17,4 +17,8 @@ + + + + diff --git a/CSharpBible/Games/SharpHack.BaseItemsTests/SharpHack.BaseItemsTests.csproj b/CSharpBible/Games/SharpHack.BaseItemsTests/SharpHack.BaseItemsTests.csproj index d6e9103be..d561581a1 100644 --- a/CSharpBible/Games/SharpHack.BaseItemsTests/SharpHack.BaseItemsTests.csproj +++ b/CSharpBible/Games/SharpHack.BaseItemsTests/SharpHack.BaseItemsTests.csproj @@ -34,4 +34,10 @@ + + + + + + diff --git a/CSharpBible/Games/SharpHack.BaseTests/SharpHack.BaseTests.csproj b/CSharpBible/Games/SharpHack.BaseTests/SharpHack.BaseTests.csproj index ba89292ed..5576323fe 100644 --- a/CSharpBible/Games/SharpHack.BaseTests/SharpHack.BaseTests.csproj +++ b/CSharpBible/Games/SharpHack.BaseTests/SharpHack.BaseTests.csproj @@ -35,4 +35,10 @@ + + + + + + diff --git a/CSharpBible/Games/SharpHack.CombatTests/SharpHack.CombatTests.csproj b/CSharpBible/Games/SharpHack.CombatTests/SharpHack.CombatTests.csproj index f483ab9fd..960851cb0 100644 --- a/CSharpBible/Games/SharpHack.CombatTests/SharpHack.CombatTests.csproj +++ b/CSharpBible/Games/SharpHack.CombatTests/SharpHack.CombatTests.csproj @@ -34,4 +34,10 @@ + + + + + + diff --git a/CSharpBible/Games/SharpHack.EngineTests/SharpHack.EngineTests.csproj b/CSharpBible/Games/SharpHack.EngineTests/SharpHack.EngineTests.csproj index 57f9bc0b9..008e3f5c5 100644 --- a/CSharpBible/Games/SharpHack.EngineTests/SharpHack.EngineTests.csproj +++ b/CSharpBible/Games/SharpHack.EngineTests/SharpHack.EngineTests.csproj @@ -36,4 +36,10 @@ + + + + + + diff --git a/CSharpBible/Games/SharpHack.LevelGenTests/SharpHack.LevelGenTests.csproj b/CSharpBible/Games/SharpHack.LevelGenTests/SharpHack.LevelGenTests.csproj index 7764ff80e..2495cf219 100644 --- a/CSharpBible/Games/SharpHack.LevelGenTests/SharpHack.LevelGenTests.csproj +++ b/CSharpBible/Games/SharpHack.LevelGenTests/SharpHack.LevelGenTests.csproj @@ -35,4 +35,10 @@ + + + + + + diff --git a/CSharpBible/Games/SharpHack.MapExport/SharpHack.MapExport.csproj b/CSharpBible/Games/SharpHack.MapExport/SharpHack.MapExport.csproj index 367b8ee67..18a69a976 100644 --- a/CSharpBible/Games/SharpHack.MapExport/SharpHack.MapExport.csproj +++ b/CSharpBible/Games/SharpHack.MapExport/SharpHack.MapExport.csproj @@ -27,4 +27,8 @@ + + + + diff --git a/CSharpBible/Games/SharpHack.View.FirstPerson/SharpHack.View.FirstPerson.csproj b/CSharpBible/Games/SharpHack.View.FirstPerson/SharpHack.View.FirstPerson.csproj index 421bb029a..e52bcb88f 100644 --- a/CSharpBible/Games/SharpHack.View.FirstPerson/SharpHack.View.FirstPerson.csproj +++ b/CSharpBible/Games/SharpHack.View.FirstPerson/SharpHack.View.FirstPerson.csproj @@ -36,4 +36,9 @@ + + + + + diff --git a/CSharpBible/Games/SharpHack.ViewModel.Tests/SharpHack.ViewModel.Tests.csproj b/CSharpBible/Games/SharpHack.ViewModel.Tests/SharpHack.ViewModel.Tests.csproj index 3e7db26ab..14c48956d 100644 --- a/CSharpBible/Games/SharpHack.ViewModel.Tests/SharpHack.ViewModel.Tests.csproj +++ b/CSharpBible/Games/SharpHack.ViewModel.Tests/SharpHack.ViewModel.Tests.csproj @@ -10,7 +10,10 @@ - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + @@ -19,4 +22,10 @@ + + + + + + diff --git a/CSharpBible/Games/SharpHack.ViewModel/LayeredGameViewModel.cs b/CSharpBible/Games/SharpHack.ViewModel/LayeredGameViewModel.cs index b5e7f5134..29e84d037 100644 --- a/CSharpBible/Games/SharpHack.ViewModel/LayeredGameViewModel.cs +++ b/CSharpBible/Games/SharpHack.ViewModel/LayeredGameViewModel.cs @@ -2,12 +2,15 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using System.Threading; +using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using SharpHack.Base.Data; using SharpHack.Base.Interfaces; using SharpHack.Base.Model; using SharpHack.Engine; +using SharpHack.Engine.Pathfinding; namespace SharpHack.ViewModel; @@ -22,10 +25,19 @@ public sealed record LayeredEntity(LayeredEntityKind Kind, DisplayTile Tile, str public sealed record LayeredCell(DisplayTile Structure, IReadOnlyList Entities); +public enum LayeredTileHoverAction +{ + None, + GoTo, + Pickup, + ToggleDoor +} + public partial class LayeredGameViewModel : ObservableObject { private readonly GameSession _session; private LayeredCell[] _cells; + private CancellationTokenSource? _goCts; private int _viewOffsetX; private int _viewOffsetY; @@ -141,6 +153,7 @@ private void UpdateCells() var map = Map; var player = Player; var playerPos = player.Position; + var cells = new LayeredCell[ViewWidth * ViewHeight]; int maxOffsetX = Math.Max(0, map.Width - ViewWidth); int maxOffsetY = Math.Max(0, map.Height - ViewHeight); @@ -162,7 +175,7 @@ private void UpdateCells() if (!rowInBounds || mapX < 0 || mapX >= map.Width) { - _cells[index] = new LayeredCell(DisplayTile.Empty, Array.Empty()); + cells[index] = new LayeredCell(DisplayTile.Empty, Array.Empty()); index++; continue; } @@ -170,7 +183,7 @@ private void UpdateCells() var tile = map[mapX, mapY]; if (!tile.IsExplored) { - _cells[index] = new LayeredCell(DisplayTile.Empty, Array.Empty()); + cells[index] = new LayeredCell(DisplayTile.Empty, Array.Empty()); index++; continue; } @@ -192,11 +205,12 @@ private void UpdateCells() var structure = CreateStructureTile(tile, surWall); var entities = CreateEntities(tile, isPlayer: mapX == playerPos.X && mapY == playerPos.Y); - _cells[index] = new LayeredCell(structure, entities); + cells[index] = new LayeredCell(structure, entities); index++; } } + _cells = cells; OnPropertyChanged(nameof(PrimaryActionHint)); } @@ -293,6 +307,36 @@ private static IReadOnlyList CreateEntities(ITile tile, bool isPl return list; } + private bool IsEnemyNearPlayer() + { + var pp = Player.Position; + return Enemies.Any(e => + { + int dx = Math.Abs(e.Position.X - pp.X); + int dy = Math.Abs(e.Position.Y - pp.Y); + return dx <= 1 && dy <= 1; + }); + } + + private static Direction? TryGetDirection(Point from, Point to) + { + int dx = Math.Clamp(to.X - from.X, -1, 1); + int dy = Math.Clamp(to.Y - from.Y, -1, 1); + + return (dx, dy) switch + { + (0, -1) => Direction.North, + (0, 1) => Direction.South, + (-1, 0) => Direction.West, + (1, 0) => Direction.East, + (-1, -1) => Direction.NorthWest, + (1, -1) => Direction.NorthEast, + (-1, 1) => Direction.SouthWest, + (1, 1) => Direction.SouthEast, + _ => null + }; + } + private void NotifyMiniMapIfChanged() { var current = _session.MiniMap; @@ -309,6 +353,157 @@ public void RefreshMiniMap() OnPropertyChanged(nameof(MiniMap)); } + public LayeredTileHoverAction GetHoverActionForView(Point targetView) + { + var world = new Point(targetView.X + ViewOffsetX, targetView.Y + ViewOffsetY); + if (!Map.IsValid(world)) + { + return LayeredTileHoverAction.None; + } + + var tile = Map[world]; + if (!tile.IsExplored) + { + return LayeredTileHoverAction.None; + } + + var playerPosition = Player.Position; + bool adjacent = Math.Abs(world.X - playerPosition.X) <= 1 && Math.Abs(world.Y - playerPosition.Y) <= 1; + + if (adjacent && (tile.Type == TileType.DoorClosed || tile.Type == TileType.DoorOpen)) + { + return LayeredTileHoverAction.ToggleDoor; + } + + if (adjacent && tile.Items.Count == 1) + { + var item = tile.Items[0]; + if (item is not IContainerItem) + { + return LayeredTileHoverAction.Pickup; + } + } + + if (tile.IsWalkable) + { + return LayeredTileHoverAction.GoTo; + } + + return LayeredTileHoverAction.None; + } + + [RelayCommand] + public void ToggleDoorAtView(Point targetView) + { + if (GetHoverActionForView(targetView) != LayeredTileHoverAction.ToggleDoor) + { + return; + } + + var world = new Point(targetView.X + ViewOffsetX, targetView.Y + ViewOffsetY); + if (_session.ToggleDoorAt(world)) + { + UpdateCells(); + UpdateStats(); + OnPropertyChanged(nameof(Cells)); + NotifyMiniMapIfChanged(); + } + } + + [RelayCommand] + public void PickupAtView(Point targetView) + { + if (GetHoverActionForView(targetView) != LayeredTileHoverAction.Pickup) + { + return; + } + + var world = new Point(targetView.X + ViewOffsetX, targetView.Y + ViewOffsetY); + var tile = Map[world]; + if (tile.Items.Count != 1) + { + return; + } + + _session.PickUpItem(Player, tile.Items[0], autoEquip: AutoEquip); + UpdateInventory(); + UpdateCells(); + UpdateStats(); + OnPropertyChanged(nameof(Cells)); + NotifyMiniMapIfChanged(); + } + + public bool CanClickGoToView(Point targetView) + { + return GetHoverActionForView(targetView) == LayeredTileHoverAction.GoTo; + } + + [RelayCommand] + public async Task GoToViewAsync(Point targetView) + { + if (!CanClickGoToView(targetView)) + { + return; + } + + var targetWorld = new Point(targetView.X + ViewOffsetX, targetView.Y + ViewOffsetY); + await GoToWorldAsync(targetWorld); + } + + [RelayCommand] + public async Task GoToWorldAsync(Point targetWorld) + { + if (!Map.IsValid(targetWorld)) + { + return; + } + + _goCts?.Cancel(); + _goCts = new CancellationTokenSource(); + var token = _goCts.Token; + + while (!token.IsCancellationRequested) + { + if (Player.Position == targetWorld) + { + break; + } + + if (IsEnemyNearPlayer()) + { + break; + } + + if (!Map.IsValid(targetWorld) || !Map[targetWorld].IsExplored || !Map[targetWorld].IsWalkable) + { + break; + } + + var start = Player.Position; + var path = AStarPathfinder.FindPath( + Map, + start, + targetWorld, + canEnter: p => Map[p].IsExplored && Map[p].IsWalkable); + + if (path is null || path.Count < 2) + { + break; + } + + var next = path[1]; + var direction = TryGetDirection(start, next); + if (direction is null) + { + break; + } + + Move(direction.Value); + + await Task.Delay(25, token); + } + } + [RelayCommand] public void Move(Direction direction) { diff --git a/CSharpBible/Games/SharpHack.ViewModel/SharpHack.ViewModel.csproj b/CSharpBible/Games/SharpHack.ViewModel/SharpHack.ViewModel.csproj index a91381296..5a6b9379f 100644 --- a/CSharpBible/Games/SharpHack.ViewModel/SharpHack.ViewModel.csproj +++ b/CSharpBible/Games/SharpHack.ViewModel/SharpHack.ViewModel.csproj @@ -15,4 +15,8 @@ + + + + diff --git a/CSharpBible/Games/SharpHack.WPF2D/Converters/TopEntityTileConverter.cs b/CSharpBible/Games/SharpHack.WPF2D/Converters/TopEntityTileConverter.cs new file mode 100644 index 000000000..2c110c747 --- /dev/null +++ b/CSharpBible/Games/SharpHack.WPF2D/Converters/TopEntityTileConverter.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Windows; +using System.Windows.Data; +using SharpHack.ViewModel; +using SharpHack.Wpf.Services; + +namespace SharpHack.WPF2D.Converters; + +public sealed class TopEntityTileConverter : Freezable, IValueConverter +{ + public static readonly DependencyProperty TileServiceProperty = DependencyProperty.Register( + nameof(TileService), + typeof(ITileService), + typeof(TopEntityTileConverter), + new PropertyMetadata(null)); + + public ITileService? TileService + { + get => (ITileService?)GetValue(TileServiceProperty); + set => SetValue(TileServiceProperty, value); + } + + protected override Freezable CreateInstanceCore() => new TopEntityTileConverter(); + + public object? Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not IReadOnlyList entities || entities.Count == 0) + { + return null; + } + + return TileService?.GetTile(entities[0].Tile); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + => throw new NotSupportedException(); +} diff --git a/CSharpBible/Games/SharpHack.WPF2D/MainWindow.xaml b/CSharpBible/Games/SharpHack.WPF2D/MainWindow.xaml index 351b41f5c..52742912b 100644 --- a/CSharpBible/Games/SharpHack.WPF2D/MainWindow.xaml +++ b/CSharpBible/Games/SharpHack.WPF2D/MainWindow.xaml @@ -2,14 +2,19 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:conv="clr-namespace:SharpHack.WPF2D.Converters" - Title="SharpHack.WPF2D" Height="720" Width="1024"> + Title="SharpHack.WPF2D" Height="720" Width="1024" + Focusable="True" + Loaded="OnWindowLoaded" + PreviewKeyDown="OnWindowPreviewKeyDown"> - + + + @@ -27,7 +32,11 @@ - + @@ -36,15 +45,49 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSharpBible/Games/SharpHack.WPF2D/MainWindow.xaml.cs b/CSharpBible/Games/SharpHack.WPF2D/MainWindow.xaml.cs index ea37bf1af..0bc48524c 100644 --- a/CSharpBible/Games/SharpHack.WPF2D/MainWindow.xaml.cs +++ b/CSharpBible/Games/SharpHack.WPF2D/MainWindow.xaml.cs @@ -1,6 +1,11 @@ +using System; using SharpHack.WPF2D.ViewModels; +using SharpHack.WPF2D.Converters; +using SharpHack.Base.Model; using SharpHack.Wpf.Services; using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; namespace SharpHack.WPF2D; @@ -9,6 +14,8 @@ namespace SharpHack.WPF2D; /// public partial class MainWindow : Window { + private readonly MainViewModel _viewModel; + public ITileService TileService { get; } /// @@ -18,8 +25,167 @@ public partial class MainWindow : Window public MainWindow(MainViewModel vm, ITileService tileService) { InitializeComponent(); + _viewModel = vm; TileService = tileService; TileService.LoadTileset("tileset_cutout3.png", tileSize: 96); + + if (Resources["TileToImageConverter"] is TileToImageConverter converter) + { + converter.TileService = TileService; + } + + if (Resources["TopEntityTileConverter"] is TopEntityTileConverter topEntityConverter) + { + topEntityConverter.TileService = TileService; + } + DataContext = vm; } + + private void OnWindowLoaded(object sender, RoutedEventArgs e) + { + Focus(); + Keyboard.Focus(this); + } + + private void OnWindowPreviewKeyDown(object sender, KeyEventArgs e) + { + bool handled = e.Key switch + { + Key.Up => TryMove(Direction.North), + Key.Down => TryMove(Direction.South), + Key.Left => TryMove(Direction.West), + Key.Right => TryMove(Direction.East), + Key.NumPad7 => TryMove(Direction.NorthWest), + Key.NumPad9 => TryMove(Direction.NorthEast), + Key.NumPad1 => TryMove(Direction.SouthWest), + Key.NumPad3 => TryMove(Direction.SouthEast), + Key.Space => TryExecutePrimaryAction(), + Key.Enter => TryExecutePrimaryAction(), + _ => false + }; + + if (handled) + { + e.Handled = true; + } + } + + private async void OnMapMouseLeftButtonUp(object sender, MouseButtonEventArgs e) + { + if (sender is not ItemsControl itemsControl) + { + return; + } + + if (_viewModel.Game.ViewWidth <= 0 || _viewModel.Game.ViewHeight <= 0 || itemsControl.ActualWidth <= 0 || itemsControl.ActualHeight <= 0) + { + return; + } + + var position = e.GetPosition(itemsControl); + double cellWidth = itemsControl.ActualWidth / _viewModel.Game.ViewWidth; + double cellHeight = itemsControl.ActualHeight / _viewModel.Game.ViewHeight; + + if (cellWidth <= 0 || cellHeight <= 0) + { + return; + } + + int viewX = Math.Clamp((int)(position.X / cellWidth), 0, _viewModel.Game.ViewWidth - 1); + int viewY = Math.Clamp((int)(position.Y / cellHeight), 0, _viewModel.Game.ViewHeight - 1); + + var targetView = new SharpHack.Base.Model.Point(viewX, viewY); + var action = _viewModel.Game.GetHoverActionForView(targetView); + + if (action == SharpHack.ViewModel.LayeredTileHoverAction.ToggleDoor) + { + _viewModel.Game.ToggleDoorAtView(targetView); + } + else if (action == SharpHack.ViewModel.LayeredTileHoverAction.Pickup) + { + _viewModel.Game.PickupAtView(targetView); + } + else if (action == SharpHack.ViewModel.LayeredTileHoverAction.GoTo) + { + await _viewModel.Game.GoToViewAsync(targetView); + } + + Focus(); + Keyboard.Focus(this); + e.Handled = true; + } + + private void OnMapMouseMove(object sender, MouseEventArgs e) + { + if (sender is not ItemsControl itemsControl) + { + Mouse.OverrideCursor = null; + return; + } + + if (!TryGetViewPoint(itemsControl, e.GetPosition(itemsControl), out var targetView)) + { + Mouse.OverrideCursor = null; + return; + } + + var action = _viewModel.Game.GetHoverActionForView(targetView); + Mouse.OverrideCursor = action switch + { + SharpHack.ViewModel.LayeredTileHoverAction.ToggleDoor => Cursors.SizeWE, + SharpHack.ViewModel.LayeredTileHoverAction.GoTo => Cursors.Hand, + SharpHack.ViewModel.LayeredTileHoverAction.Pickup => Cursors.Hand, + _ => Cursors.No + }; + } + + private void OnMapMouseLeave(object sender, MouseEventArgs e) + { + Mouse.OverrideCursor = null; + } + + private bool TryMove(Direction direction) + { + if (!_viewModel.Game.MoveCommand.CanExecute(direction)) + { + return false; + } + + _viewModel.Game.MoveCommand.Execute(direction); + return true; + } + + private bool TryExecutePrimaryAction() + { + if (!_viewModel.Game.ExecutePrimaryActionCommand.CanExecute(null)) + { + return false; + } + + _viewModel.Game.ExecutePrimaryActionCommand.Execute(null); + return true; + } + + private bool TryGetViewPoint(ItemsControl itemsControl, System.Windows.Point position, out SharpHack.Base.Model.Point targetView) + { + targetView = default; + + if (_viewModel.Game.ViewWidth <= 0 || _viewModel.Game.ViewHeight <= 0 || itemsControl.ActualWidth <= 0 || itemsControl.ActualHeight <= 0) + { + return false; + } + + double cellWidth = itemsControl.ActualWidth / _viewModel.Game.ViewWidth; + double cellHeight = itemsControl.ActualHeight / _viewModel.Game.ViewHeight; + if (cellWidth <= 0 || cellHeight <= 0) + { + return false; + } + + int viewX = Math.Clamp((int)(position.X / cellWidth), 0, _viewModel.Game.ViewWidth - 1); + int viewY = Math.Clamp((int)(position.Y / cellHeight), 0, _viewModel.Game.ViewHeight - 1); + targetView = new SharpHack.Base.Model.Point(viewX, viewY); + return true; + } } diff --git a/CSharpBible/Games/SharpHack.WPF2D/SharpHack.WPF2D.csproj b/CSharpBible/Games/SharpHack.WPF2D/SharpHack.WPF2D.csproj index 56a428353..73bc3d2e5 100644 --- a/CSharpBible/Games/SharpHack.WPF2D/SharpHack.WPF2D.csproj +++ b/CSharpBible/Games/SharpHack.WPF2D/SharpHack.WPF2D.csproj @@ -39,4 +39,9 @@ + + + + + diff --git a/CSharpBible/Games/SharpHack.WPF2D/ViewModels/MainViewModel.cs b/CSharpBible/Games/SharpHack.WPF2D/ViewModels/MainViewModel.cs index c5d3c81ff..7169a51a6 100644 --- a/CSharpBible/Games/SharpHack.WPF2D/ViewModels/MainViewModel.cs +++ b/CSharpBible/Games/SharpHack.WPF2D/ViewModels/MainViewModel.cs @@ -1,8 +1,13 @@ -using CommunityToolkit.Mvvm.ComponentModel; +using System; +using System.Collections.Generic; +using System.Linq; +using CommunityToolkit.Mvvm.ComponentModel; using SharpHack.ViewModel; namespace SharpHack.WPF2D.ViewModels; +public sealed record TilePaletteEntry(DisplayTile Tile, string Name, int Index); + /// /// Main window view model. /// @@ -15,10 +20,16 @@ public sealed partial class MainViewModel : ObservableObject public MainViewModel(LayeredGameViewModel game) { Game = game; + TilePalette = Enum.GetValues() + .OrderBy(tile => (int)tile) + .Select(tile => new TilePaletteEntry(tile, tile.ToString(), (int)tile)) + .ToArray(); } /// /// Gets the game view model. /// public LayeredGameViewModel Game { get; } + + public IReadOnlyList TilePalette { get; } } diff --git a/CSharpBible/Games/SharpHack.Wpf/Services/TileService.cs b/CSharpBible/Games/SharpHack.Wpf/Services/TileService.cs index 7e4bd9bc7..2f8742f67 100644 --- a/CSharpBible/Games/SharpHack.Wpf/Services/TileService.cs +++ b/CSharpBible/Games/SharpHack.Wpf/Services/TileService.cs @@ -126,6 +126,7 @@ private ImageSource GetEmptyTile() if (_emptyTile is not null) { return _emptyTile; + } EnsureLoaded(); diff --git a/CSharpBible/Games/SharpHack.Wpf/SharpHack.Wpf.csproj b/CSharpBible/Games/SharpHack.Wpf/SharpHack.Wpf.csproj index b5e483086..743ff3c2c 100644 --- a/CSharpBible/Games/SharpHack.Wpf/SharpHack.Wpf.csproj +++ b/CSharpBible/Games/SharpHack.Wpf/SharpHack.Wpf.csproj @@ -29,5 +29,8 @@ + + + diff --git a/CSharpBible/Games/Snake.WPF/Snake.WPF.csproj b/CSharpBible/Games/Snake.WPF/Snake.WPF.csproj index 656d3036d..600ca84b0 100644 --- a/CSharpBible/Games/Snake.WPF/Snake.WPF.csproj +++ b/CSharpBible/Games/Snake.WPF/Snake.WPF.csproj @@ -25,4 +25,10 @@ + + + + + + diff --git a/CSharpBible/Games/Snake_Base/Snake_Base.csproj b/CSharpBible/Games/Snake_Base/Snake_Base.csproj index fde558f76..5dcca688c 100644 --- a/CSharpBible/Games/Snake_Base/Snake_Base.csproj +++ b/CSharpBible/Games/Snake_Base/Snake_Base.csproj @@ -19,5 +19,9 @@ + + + + diff --git a/CSharpBible/Games/Snake_BaseTests/Snake_BaseTests.csproj b/CSharpBible/Games/Snake_BaseTests/Snake_BaseTests.csproj index e38a5e387..cc23ba46b 100644 --- a/CSharpBible/Games/Snake_BaseTests/Snake_BaseTests.csproj +++ b/CSharpBible/Games/Snake_BaseTests/Snake_BaseTests.csproj @@ -25,4 +25,10 @@ + + + + + + diff --git a/CSharpBible/Games/Snake_Console/Snake_Console.csproj b/CSharpBible/Games/Snake_Console/Snake_Console.csproj index 0901800ee..ba3a87716 100644 --- a/CSharpBible/Games/Snake_Console/Snake_Console.csproj +++ b/CSharpBible/Games/Snake_Console/Snake_Console.csproj @@ -21,4 +21,8 @@ + + + + diff --git a/CSharpBible/Games/Sokoban.Plugin/Sokoban.Plugin.csproj b/CSharpBible/Games/Sokoban.Plugin/Sokoban.Plugin.csproj index 90b251705..7a70e735d 100644 --- a/CSharpBible/Games/Sokoban.Plugin/Sokoban.Plugin.csproj +++ b/CSharpBible/Games/Sokoban.Plugin/Sokoban.Plugin.csproj @@ -36,8 +36,8 @@ false runtime - - + + @@ -58,4 +58,8 @@ + + + + diff --git a/CSharpBible/Games/Sokoban_Base/Sokoban_Base.csproj b/CSharpBible/Games/Sokoban_Base/Sokoban_Base.csproj index 5b8e9d0c0..27e2d5afa 100644 --- a/CSharpBible/Games/Sokoban_Base/Sokoban_Base.csproj +++ b/CSharpBible/Games/Sokoban_Base/Sokoban_Base.csproj @@ -47,8 +47,8 @@ - - + + @@ -59,6 +59,11 @@ + + + + + diff --git a/CSharpBible/Games/Sokoban_Base/Sokoban_Base_win.csproj b/CSharpBible/Games/Sokoban_Base/Sokoban_Base_win.csproj index 1fa8e7542..aa3de9a51 100644 --- a/CSharpBible/Games/Sokoban_Base/Sokoban_Base_win.csproj +++ b/CSharpBible/Games/Sokoban_Base/Sokoban_Base_win.csproj @@ -50,9 +50,14 @@ - + + + + + + diff --git a/CSharpBible/Games/Sokoban_BaseTests/Sokoban_BaseTests.csproj b/CSharpBible/Games/Sokoban_BaseTests/Sokoban_BaseTests.csproj index 160d58545..717294772 100644 --- a/CSharpBible/Games/Sokoban_BaseTests/Sokoban_BaseTests.csproj +++ b/CSharpBible/Games/Sokoban_BaseTests/Sokoban_BaseTests.csproj @@ -28,4 +28,10 @@ + + + + + + diff --git a/CSharpBible/Games/Sudoku_BaseTests/Sudoku_BaseTests.csproj b/CSharpBible/Games/Sudoku_BaseTests/Sudoku_BaseTests.csproj index 0f2fac93d..8023173b8 100644 --- a/CSharpBible/Games/Sudoku_BaseTests/Sudoku_BaseTests.csproj +++ b/CSharpBible/Games/Sudoku_BaseTests/Sudoku_BaseTests.csproj @@ -41,4 +41,10 @@ + + + + + + diff --git a/CSharpBible/Games/Tetris_BaseTests/Tetris_BaseTests.csproj b/CSharpBible/Games/Tetris_BaseTests/Tetris_BaseTests.csproj index d0879d038..62e6b4eb9 100644 --- a/CSharpBible/Games/Tetris_BaseTests/Tetris_BaseTests.csproj +++ b/CSharpBible/Games/Tetris_BaseTests/Tetris_BaseTests.csproj @@ -28,4 +28,10 @@ + + + + + + diff --git a/CSharpBible/Games/TileSetAnimator.Tests/TileSetAnimator.Tests.csproj b/CSharpBible/Games/TileSetAnimator.Tests/TileSetAnimator.Tests.csproj index b0d45bcf7..91f4a927a 100644 --- a/CSharpBible/Games/TileSetAnimator.Tests/TileSetAnimator.Tests.csproj +++ b/CSharpBible/Games/TileSetAnimator.Tests/TileSetAnimator.Tests.csproj @@ -27,4 +27,8 @@ + + + + diff --git a/CSharpBible/Games/TileSetAnimator/TileSetAnimator.csproj b/CSharpBible/Games/TileSetAnimator/TileSetAnimator.csproj index d28784a93..17bb109ae 100644 --- a/CSharpBible/Games/TileSetAnimator/TileSetAnimator.csproj +++ b/CSharpBible/Games/TileSetAnimator/TileSetAnimator.csproj @@ -31,4 +31,8 @@ Resources.Designer.cs + + + + diff --git a/CSharpBible/Games/Treppen.Base/Treppen.Base.csproj b/CSharpBible/Games/Treppen.Base/Treppen.Base.csproj index 63c1652ad..0c0dc98e2 100644 --- a/CSharpBible/Games/Treppen.Base/Treppen.Base.csproj +++ b/CSharpBible/Games/Treppen.Base/Treppen.Base.csproj @@ -16,10 +16,14 @@ $(TargetFrameworks);net10.0 - - + + + + + + diff --git a/CSharpBible/Games/Treppen.BaseTests/Treppen.BaseTests.csproj b/CSharpBible/Games/Treppen.BaseTests/Treppen.BaseTests.csproj index e508eeed4..ad5423255 100644 --- a/CSharpBible/Games/Treppen.BaseTests/Treppen.BaseTests.csproj +++ b/CSharpBible/Games/Treppen.BaseTests/Treppen.BaseTests.csproj @@ -16,4 +16,8 @@ + + + + diff --git a/CSharpBible/Games/Treppen.WPF/Treppen.WPF.csproj b/CSharpBible/Games/Treppen.WPF/Treppen.WPF.csproj index f12d6638a..5aad220f1 100644 --- a/CSharpBible/Games/Treppen.WPF/Treppen.WPF.csproj +++ b/CSharpBible/Games/Treppen.WPF/Treppen.WPF.csproj @@ -27,4 +27,9 @@ + + + + + diff --git a/CSharpBible/Games/VTileEdit.WPF/VTileEdit.WPF.csproj b/CSharpBible/Games/VTileEdit.WPF/VTileEdit.WPF.csproj index dfeed85f9..b6c52be08 100644 --- a/CSharpBible/Games/VTileEdit.WPF/VTileEdit.WPF.csproj +++ b/CSharpBible/Games/VTileEdit.WPF/VTileEdit.WPF.csproj @@ -46,4 +46,7 @@ Strings.resx + + + diff --git a/CSharpBible/Games/VTileEdit.WPFTests/VTileEdit.WPFTests.csproj b/CSharpBible/Games/VTileEdit.WPFTests/VTileEdit.WPFTests.csproj index 47c34defd..76aa2d48c 100644 --- a/CSharpBible/Games/VTileEdit.WPFTests/VTileEdit.WPFTests.csproj +++ b/CSharpBible/Games/VTileEdit.WPFTests/VTileEdit.WPFTests.csproj @@ -31,5 +31,10 @@ + + + + + diff --git a/CSharpBible/Games/VTileEdit/VTileEdit.csproj b/CSharpBible/Games/VTileEdit/VTileEdit.csproj index c293c7d91..3c7fe144b 100644 --- a/CSharpBible/Games/VTileEdit/VTileEdit.csproj +++ b/CSharpBible/Games/VTileEdit/VTileEdit.csproj @@ -27,6 +27,8 @@ + + diff --git a/CSharpBible/Games/VTileEditTests/VTileEditTests.csproj b/CSharpBible/Games/VTileEditTests/VTileEditTests.csproj index 7cc4f67ef..774bd5815 100644 --- a/CSharpBible/Games/VTileEditTests/VTileEditTests.csproj +++ b/CSharpBible/Games/VTileEditTests/VTileEditTests.csproj @@ -49,4 +49,9 @@ PreserveNewest + + + + + diff --git a/CSharpBible/Games/VectorGfx/VectorGfx.csproj b/CSharpBible/Games/VectorGfx/VectorGfx.csproj index 8a8c66ab9..ab7aa4efe 100644 --- a/CSharpBible/Games/VectorGfx/VectorGfx.csproj +++ b/CSharpBible/Games/VectorGfx/VectorGfx.csproj @@ -19,7 +19,7 @@ - + @@ -29,4 +29,9 @@ + + + + + diff --git a/CSharpBible/Games/VectorGfx2/VectorGfx2.csproj b/CSharpBible/Games/VectorGfx2/VectorGfx2.csproj index 672a47586..ab7aa4efe 100644 --- a/CSharpBible/Games/VectorGfx2/VectorGfx2.csproj +++ b/CSharpBible/Games/VectorGfx2/VectorGfx2.csproj @@ -29,4 +29,9 @@ + + + + + diff --git a/CSharpBible/Games/Werner_Flaschbier.Console2/Werner_Flaschbier.Console2.csproj b/CSharpBible/Games/Werner_Flaschbier.Console2/Werner_Flaschbier.Console2.csproj index d2a6da173..1fdf2c16b 100644 --- a/CSharpBible/Games/Werner_Flaschbier.Console2/Werner_Flaschbier.Console2.csproj +++ b/CSharpBible/Games/Werner_Flaschbier.Console2/Werner_Flaschbier.Console2.csproj @@ -24,7 +24,11 @@ - + + + + + diff --git a/CSharpBible/Games/Werner_Flaschbier/Werner_Flaschbier_Base.csproj b/CSharpBible/Games/Werner_Flaschbier/Werner_Flaschbier_Base.csproj index 6e6229527..b4f98c8ab 100644 --- a/CSharpBible/Games/Werner_Flaschbier/Werner_Flaschbier_Base.csproj +++ b/CSharpBible/Games/Werner_Flaschbier/Werner_Flaschbier_Base.csproj @@ -37,4 +37,9 @@ Resource1.Designer.cs + + + + + diff --git a/CSharpBible/Games/Werner_Flaschbier/Werner_Flaschbier_Console.csproj b/CSharpBible/Games/Werner_Flaschbier/Werner_Flaschbier_Console.csproj index a866eca94..0f9330808 100644 --- a/CSharpBible/Games/Werner_Flaschbier/Werner_Flaschbier_Console.csproj +++ b/CSharpBible/Games/Werner_Flaschbier/Werner_Flaschbier_Console.csproj @@ -24,7 +24,11 @@ - + + + + + diff --git a/CSharpBible/Games/Werner_Flaschbier_BaseTests/Werner_Flaschbier_BaseTests.csproj b/CSharpBible/Games/Werner_Flaschbier_BaseTests/Werner_Flaschbier_BaseTests.csproj index 500af7e1c..2c24aee13 100644 --- a/CSharpBible/Games/Werner_Flaschbier_BaseTests/Werner_Flaschbier_BaseTests.csproj +++ b/CSharpBible/Games/Werner_Flaschbier_BaseTests/Werner_Flaschbier_BaseTests.csproj @@ -15,11 +15,11 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + @@ -27,4 +27,10 @@ + + + + + + diff --git a/CSharpBible/Games/Werner_Flaschbier_BaseTests/Werner_Flaschbier_ConsoleTests.csproj b/CSharpBible/Games/Werner_Flaschbier_BaseTests/Werner_Flaschbier_ConsoleTests.csproj index ca86c3d5b..7709cd3b3 100644 --- a/CSharpBible/Games/Werner_Flaschbier_BaseTests/Werner_Flaschbier_ConsoleTests.csproj +++ b/CSharpBible/Games/Werner_Flaschbier_BaseTests/Werner_Flaschbier_ConsoleTests.csproj @@ -23,4 +23,10 @@ + + + + + + diff --git a/CSharpBible/Graphics/All_Graphics/All_Graphics_net.csproj b/CSharpBible/Graphics/All_Graphics/All_Graphics_net.csproj index 138d98189..674f6096e 100644 --- a/CSharpBible/Graphics/All_Graphics/All_Graphics_net.csproj +++ b/CSharpBible/Graphics/All_Graphics/All_Graphics_net.csproj @@ -29,8 +29,8 @@ - - + + diff --git a/CSharpBible/Graphics/CanvasWPF2_CTItemTemplateSelector/CanvasWPF2_CTItemTemplateSelector.csproj b/CSharpBible/Graphics/CanvasWPF2_CTItemTemplateSelector/CanvasWPF2_CTItemTemplateSelector.csproj index 8192f8718..109111dde 100644 --- a/CSharpBible/Graphics/CanvasWPF2_CTItemTemplateSelector/CanvasWPF2_CTItemTemplateSelector.csproj +++ b/CSharpBible/Graphics/CanvasWPF2_CTItemTemplateSelector/CanvasWPF2_CTItemTemplateSelector.csproj @@ -50,8 +50,8 @@ - - + + diff --git a/CSharpBible/Graphics/CanvasWPF2_CTItemTemplateSelector/ViewModels/MainWindowViewmodel.cs b/CSharpBible/Graphics/CanvasWPF2_CTItemTemplateSelector/ViewModels/MainWindowViewmodel.cs index 81966eb58..b208e8346 100644 --- a/CSharpBible/Graphics/CanvasWPF2_CTItemTemplateSelector/ViewModels/MainWindowViewmodel.cs +++ b/CSharpBible/Graphics/CanvasWPF2_CTItemTemplateSelector/ViewModels/MainWindowViewmodel.cs @@ -119,7 +119,7 @@ private void SelectShape(object? o) private void CreateRectangle() { lock (Shapes) - Shapes.Add(new ShapeData(_rnd.Next(0, 600), _rnd.Next(0, 400)) { Dx = _rnd.NextDouble() * 40 - 20, Dy = _rnd.NextDouble() * 40 - 20, SType = 0, MouseHover = Shape_MouseHover }); + Shapes.Add(new ShapeData(_rnd.Next(0, 600), _rnd.Next(0, 400)) { Dx = _rnd.NextDouble() * 40 - 20, Dy = _rnd.NextDouble() * 40 - 20, SType = 0, MouseHover = new DelegateCommand(Shape_MouseHover) }); } private void CreateCircle() diff --git a/CSharpBible/Graphics/CanvasWPF2_ItemTemplateSelector/CanvasWPF2_ItemTemplateSelector.csproj b/CSharpBible/Graphics/CanvasWPF2_ItemTemplateSelector/CanvasWPF2_ItemTemplateSelector.csproj index 6555ad4b2..8631ba5df 100644 --- a/CSharpBible/Graphics/CanvasWPF2_ItemTemplateSelector/CanvasWPF2_ItemTemplateSelector.csproj +++ b/CSharpBible/Graphics/CanvasWPF2_ItemTemplateSelector/CanvasWPF2_ItemTemplateSelector.csproj @@ -47,7 +47,7 @@ - + diff --git a/CSharpBible/Graphics/CanvasWPF_CT/CanvasWPF_CT.csproj b/CSharpBible/Graphics/CanvasWPF_CT/CanvasWPF_CT.csproj index 89a39dd49..3299184ea 100644 --- a/CSharpBible/Graphics/CanvasWPF_CT/CanvasWPF_CT.csproj +++ b/CSharpBible/Graphics/CanvasWPF_CT/CanvasWPF_CT.csproj @@ -50,7 +50,7 @@ - + diff --git a/CSharpBible/Graphics/Cifar10.WPF/Cifar10.WPF.csproj b/CSharpBible/Graphics/Cifar10.WPF/Cifar10.WPF.csproj index 8747971cd..5db7974ae 100644 --- a/CSharpBible/Graphics/Cifar10.WPF/Cifar10.WPF.csproj +++ b/CSharpBible/Graphics/Cifar10.WPF/Cifar10.WPF.csproj @@ -10,7 +10,7 @@ - + diff --git a/CSharpBible/Graphics/Cifar10_2.WPF/Cifar10_2.WPF.csproj b/CSharpBible/Graphics/Cifar10_2.WPF/Cifar10_2.WPF.csproj index 0e134c023..50e9db95a 100644 --- a/CSharpBible/Graphics/Cifar10_2.WPF/Cifar10_2.WPF.csproj +++ b/CSharpBible/Graphics/Cifar10_2.WPF/Cifar10_2.WPF.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/CSharpBible/Graphics/Cifar10_3.WPF/Cifar10_2.WPF.csproj b/CSharpBible/Graphics/Cifar10_3.WPF/Cifar10_2.WPF.csproj index 1834c6662..465ee86e3 100644 --- a/CSharpBible/Graphics/Cifar10_3.WPF/Cifar10_2.WPF.csproj +++ b/CSharpBible/Graphics/Cifar10_3.WPF/Cifar10_2.WPF.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/CSharpBible/Graphics/ConsoleApp1/ColorVis.csproj b/CSharpBible/Graphics/ConsoleApp1/ColorVis.csproj index 1e3fc42c8..3fcb97cfb 100644 --- a/CSharpBible/Graphics/ConsoleApp1/ColorVis.csproj +++ b/CSharpBible/Graphics/ConsoleApp1/ColorVis.csproj @@ -8,7 +8,7 @@ - + diff --git a/CSharpBible/Graphics/DynamicShapeWPF/DynamicShapeWPF.csproj b/CSharpBible/Graphics/DynamicShapeWPF/DynamicShapeWPF.csproj index e0520356c..2eff3210b 100644 --- a/CSharpBible/Graphics/DynamicShapeWPF/DynamicShapeWPF.csproj +++ b/CSharpBible/Graphics/DynamicShapeWPF/DynamicShapeWPF.csproj @@ -39,7 +39,7 @@ - + diff --git a/CSharpBible/Graphics/Graphics.sln b/CSharpBible/Graphics/Graphics.sln index a80dfb4dd..b5a5bfff7 100644 --- a/CSharpBible/Graphics/Graphics.sln +++ b/CSharpBible/Graphics/Graphics.sln @@ -170,6 +170,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SuperResolutionOnnxSample4" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommonDialogs_net", "..\Libraries\CommonDialogs\CommonDialogs_net.csproj", "{65F08D9B-F63E-14C2-C35D-C324E1E37785}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MVVM", "MVVM", "{C99C28ED-E367-4D36-9146-F42A2E5A65CA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -713,9 +715,25 @@ Global GlobalSection(NestedProjects) = preSolution {890CF504-3814-443B-9EE6-E8BCACF68203} = {AF041458-CF94-4D6D-BB0F-8BC50F4F099C} {66EB60F2-523D-47C8-95EA-C7E10759E239} = {AF041458-CF94-4D6D-BB0F-8BC50F4F099C} + {5EC87513-0C16-4609-844D-FF7EC579BFFC} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} {E79A022E-5BD3-4539-830A-FA991EC793C1} = {2D82C624-6758-46A6-B7BE-B985F6145CC4} {BB49E15E-986C-4FB9-8376-66C64D86EF86} = {AF041458-CF94-4D6D-BB0F-8BC50F4F099C} + {267FA958-396A-434A-9BA9-1E944F0FC99F} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} {CB7C3DBF-3E01-41A1-A5E0-B2EF13FDEE4E} = {2D82C624-6758-46A6-B7BE-B985F6145CC4} + {E6606D4C-9AFD-4346-BB3F-D3892EFFCBDB} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {57211B99-A63D-4492-B2BB-4DC8DA8E2684} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {8C5DCEC2-5080-4B5C-823C-836D5041857E} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {7ADBE7DD-AC3F-489B-BB94-B89222AFEE3A} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {15A9C328-A1B9-4CE0-85AA-DF425659F441} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {F02D8CEA-8069-4FE8-8F5A-9F62B0359EEC} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {BC6EBCF3-F0CE-4B9A-B5D6-B35A62EEAACB} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {F2CA5A63-D15B-4DE8-96B9-2089E64E5571} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {5F8B8B7E-0422-4CC5-8778-8D3F9F1AF6D1} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {DD829CC4-E6B9-42CB-A197-D8C20BBEFC30} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {90581608-341A-4117-A12F-096D92977548} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {2A7BADAF-70BB-4A6B-89A2-60C44E7E9773} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {74702CB8-336B-4AE0-990C-4E1914F720E2} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} + {B1FCD6F4-2DBF-4AC7-AD62-64E830E83764} = {C99C28ED-E367-4D36-9146-F42A2E5A65CA} {B4D693A6-63AF-48A9-89CC-55BE89AE8FCC} = {ED69D2D6-14A4-4EC3-AA1A-6C094F21F4C0} {A77A2D02-C709-46C3-AC71-DD39B4BE1BB8} = {AF041458-CF94-4D6D-BB0F-8BC50F4F099C} {BA9C8374-D44A-4102-B709-B4D2DA4020CF} = {AF041458-CF94-4D6D-BB0F-8BC50F4F099C} diff --git a/CSharpBible/Graphics/MVVM_Converter_CTDrawGrid/App.xaml.cs b/CSharpBible/Graphics/MVVM_Converter_CTDrawGrid/App.xaml.cs index 690d73264..435e6aa0b 100644 --- a/CSharpBible/Graphics/MVVM_Converter_CTDrawGrid/App.xaml.cs +++ b/CSharpBible/Graphics/MVVM_Converter_CTDrawGrid/App.xaml.cs @@ -1,4 +1,9 @@ -using System.Windows; +using BaseLib.Helper; +using Microsoft.Extensions.DependencyInjection; +using MVVM_Converter_CTDrawGrid.Model; +using MVVM_Converter_CTDrawGrid.Models.Interfaces; +using System; +using System.Windows; namespace MVVM_Converter_CTDrawGrid; @@ -7,4 +12,23 @@ namespace MVVM_Converter_CTDrawGrid; /// public partial class App : Application { + + protected override void OnStartup(StartupEventArgs e) + { + var services = new ServiceCollection(); + ConfigureServices(services); + var ServiceProvider = services.BuildServiceProvider(); + IoC.Configure(ServiceProvider); + base.OnStartup(e); + } + + private static void ConfigureServices(IServiceCollection services) + { + // IoT-Service registrieren + services.AddSingleton(); + + // ViewModels registrieren +// services.AddTransielt<>(); + // services.AddTransient(); + } } diff --git a/CSharpBible/Graphics/MVVM_Converter_CTDrawGrid/MVVM_Converter_CTDrawGrid.csproj b/CSharpBible/Graphics/MVVM_Converter_CTDrawGrid/MVVM_Converter_CTDrawGrid.csproj index c2e13b87c..f63fda903 100644 --- a/CSharpBible/Graphics/MVVM_Converter_CTDrawGrid/MVVM_Converter_CTDrawGrid.csproj +++ b/CSharpBible/Graphics/MVVM_Converter_CTDrawGrid/MVVM_Converter_CTDrawGrid.csproj @@ -19,6 +19,9 @@ + + + Resources.resx diff --git a/CSharpBible/Graphics/MVVM_Converter_DrawGrid3_NonLin/MVVM_Converter_DrawGrid3_NonLin.csproj b/CSharpBible/Graphics/MVVM_Converter_DrawGrid3_NonLin/MVVM_Converter_DrawGrid3_NonLin.csproj index 80975a8f3..2348a1f4c 100644 --- a/CSharpBible/Graphics/MVVM_Converter_DrawGrid3_NonLin/MVVM_Converter_DrawGrid3_NonLin.csproj +++ b/CSharpBible/Graphics/MVVM_Converter_DrawGrid3_NonLin/MVVM_Converter_DrawGrid3_NonLin.csproj @@ -21,7 +21,7 @@ - + diff --git a/CSharpBible/Graphics/MVVM_DynamicShape/MVVM_DynamicShape.csproj b/CSharpBible/Graphics/MVVM_DynamicShape/MVVM_DynamicShape.csproj index 3d2cee535..4aea265d6 100644 --- a/CSharpBible/Graphics/MVVM_DynamicShape/MVVM_DynamicShape.csproj +++ b/CSharpBible/Graphics/MVVM_DynamicShape/MVVM_DynamicShape.csproj @@ -47,7 +47,7 @@ - + diff --git a/CSharpBible/Graphics/MVVM_ImageHandling/MVVM_ImageHandling.csproj b/CSharpBible/Graphics/MVVM_ImageHandling/MVVM_ImageHandling.csproj index 0c4ff1f91..44b6c5324 100644 --- a/CSharpBible/Graphics/MVVM_ImageHandling/MVVM_ImageHandling.csproj +++ b/CSharpBible/Graphics/MVVM_ImageHandling/MVVM_ImageHandling.csproj @@ -9,8 +9,8 @@ - - + + diff --git a/CSharpBible/Graphics/MVVM_ImageHandling/MVVM_ImageHandling_net.csproj b/CSharpBible/Graphics/MVVM_ImageHandling/MVVM_ImageHandling_net.csproj index ad03340e2..566851b93 100644 --- a/CSharpBible/Graphics/MVVM_ImageHandling/MVVM_ImageHandling_net.csproj +++ b/CSharpBible/Graphics/MVVM_ImageHandling/MVVM_ImageHandling_net.csproj @@ -15,8 +15,8 @@ $(TargetFrameworks);net10.0-windows - - + + diff --git a/CSharpBible/Graphics/MVVM_ImageHandlingTests/MVVM_ImageHandlingTests.csproj b/CSharpBible/Graphics/MVVM_ImageHandlingTests/MVVM_ImageHandlingTests.csproj index 1156dd331..f7639ad8a 100644 --- a/CSharpBible/Graphics/MVVM_ImageHandlingTests/MVVM_ImageHandlingTests.csproj +++ b/CSharpBible/Graphics/MVVM_ImageHandlingTests/MVVM_ImageHandlingTests.csproj @@ -10,9 +10,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Graphics/MVVM_ImageHandlingTests/MVVM_ImageHandling_netTests.csproj b/CSharpBible/Graphics/MVVM_ImageHandlingTests/MVVM_ImageHandling_netTests.csproj index 9aa66cdde..1f04824af 100644 --- a/CSharpBible/Graphics/MVVM_ImageHandlingTests/MVVM_ImageHandling_netTests.csproj +++ b/CSharpBible/Graphics/MVVM_ImageHandlingTests/MVVM_ImageHandling_netTests.csproj @@ -15,10 +15,10 @@ $(TargetFrameworks);net10.0-windows - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Graphics/MVVM_Lines_on_Grid/MVVM_Lines_on_Grid.csproj b/CSharpBible/Graphics/MVVM_Lines_on_Grid/MVVM_Lines_on_Grid.csproj index a7edf7716..f6266b057 100644 --- a/CSharpBible/Graphics/MVVM_Lines_on_Grid/MVVM_Lines_on_Grid.csproj +++ b/CSharpBible/Graphics/MVVM_Lines_on_Grid/MVVM_Lines_on_Grid.csproj @@ -16,7 +16,7 @@ - + diff --git a/CSharpBible/Graphics/MVVM_Lines_on_Grid2/MVVM_Lines_on_Grid2.csproj b/CSharpBible/Graphics/MVVM_Lines_on_Grid2/MVVM_Lines_on_Grid2.csproj index a19f03489..af9f0829a 100644 --- a/CSharpBible/Graphics/MVVM_Lines_on_Grid2/MVVM_Lines_on_Grid2.csproj +++ b/CSharpBible/Graphics/MVVM_Lines_on_Grid2/MVVM_Lines_on_Grid2.csproj @@ -16,7 +16,7 @@ - + diff --git a/CSharpBible/Graphics/PermutationTests/PermutationTests.csproj b/CSharpBible/Graphics/PermutationTests/PermutationTests.csproj index f4eb8a176..30fdbd46e 100644 --- a/CSharpBible/Graphics/PermutationTests/PermutationTests.csproj +++ b/CSharpBible/Graphics/PermutationTests/PermutationTests.csproj @@ -13,9 +13,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Graphics/PolySpline/PolySpline.csproj b/CSharpBible/Graphics/PolySpline/PolySpline.csproj index 06455f6d5..113bed7a7 100644 --- a/CSharpBible/Graphics/PolySpline/PolySpline.csproj +++ b/CSharpBible/Graphics/PolySpline/PolySpline.csproj @@ -53,7 +53,7 @@ - + diff --git a/CSharpBible/Graphics/PolySpline/PolySpline2.csproj b/CSharpBible/Graphics/PolySpline/PolySpline2.csproj index 7e6c564da..ef300d7be 100644 --- a/CSharpBible/Graphics/PolySpline/PolySpline2.csproj +++ b/CSharpBible/Graphics/PolySpline/PolySpline2.csproj @@ -21,7 +21,7 @@ - + diff --git a/CSharpBible/Graphics/PolySpline/PolySpline_net.csproj b/CSharpBible/Graphics/PolySpline/PolySpline_net.csproj index 6eaec5214..27a552c49 100644 --- a/CSharpBible/Graphics/PolySpline/PolySpline_net.csproj +++ b/CSharpBible/Graphics/PolySpline/PolySpline_net.csproj @@ -29,7 +29,7 @@ - + diff --git a/CSharpBible/Graphics/Polyline/Polyline.csproj b/CSharpBible/Graphics/Polyline/Polyline.csproj index c0e83ab57..3308c96c3 100644 --- a/CSharpBible/Graphics/Polyline/Polyline.csproj +++ b/CSharpBible/Graphics/Polyline/Polyline.csproj @@ -23,7 +23,7 @@ - + diff --git a/CSharpBible/Graphics/Polyline/Polyline2.csproj b/CSharpBible/Graphics/Polyline/Polyline2.csproj index 1173e62ea..e5bb349cf 100644 --- a/CSharpBible/Graphics/Polyline/Polyline2.csproj +++ b/CSharpBible/Graphics/Polyline/Polyline2.csproj @@ -12,6 +12,6 @@ - + \ No newline at end of file diff --git a/CSharpBible/Graphics/Polyline/Polyline_net.csproj b/CSharpBible/Graphics/Polyline/Polyline_net.csproj index 8298d2952..e2f67930f 100644 --- a/CSharpBible/Graphics/Polyline/Polyline_net.csproj +++ b/CSharpBible/Graphics/Polyline/Polyline_net.csproj @@ -28,7 +28,7 @@ - + diff --git a/CSharpBible/Graphics/PrimeDisc/PrimeDisc.csproj b/CSharpBible/Graphics/PrimeDisc/PrimeDisc.csproj index 3ec444732..bc67ad7a7 100644 --- a/CSharpBible/Graphics/PrimeDisc/PrimeDisc.csproj +++ b/CSharpBible/Graphics/PrimeDisc/PrimeDisc.csproj @@ -12,9 +12,10 @@ - - - + + + + diff --git a/CSharpBible/Graphics/ScreenX.BaseTests/ScreenX.BaseTests.csproj b/CSharpBible/Graphics/ScreenX.BaseTests/ScreenX.BaseTests.csproj index 8e365ef4d..72149379c 100644 --- a/CSharpBible/Graphics/ScreenX.BaseTests/ScreenX.BaseTests.csproj +++ b/CSharpBible/Graphics/ScreenX.BaseTests/ScreenX.BaseTests.csproj @@ -19,8 +19,11 @@ - - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + diff --git a/CSharpBible/Graphics/SuperResolutionOnnxSample/SuperResolutionOnnxSample4.csproj b/CSharpBible/Graphics/SuperResolutionOnnxSample/SuperResolutionOnnxSample4.csproj index b2f3c4723..51f3fc755 100644 --- a/CSharpBible/Graphics/SuperResolutionOnnxSample/SuperResolutionOnnxSample4.csproj +++ b/CSharpBible/Graphics/SuperResolutionOnnxSample/SuperResolutionOnnxSample4.csproj @@ -6,6 +6,6 @@ enable - + diff --git a/CSharpBible/Graphics/SuperResolutionOnnxSample0/SuperResolutionOnnxSample0.csproj b/CSharpBible/Graphics/SuperResolutionOnnxSample0/SuperResolutionOnnxSample0.csproj index b2f3c4723..51f3fc755 100644 --- a/CSharpBible/Graphics/SuperResolutionOnnxSample0/SuperResolutionOnnxSample0.csproj +++ b/CSharpBible/Graphics/SuperResolutionOnnxSample0/SuperResolutionOnnxSample0.csproj @@ -6,6 +6,6 @@ enable - + diff --git a/CSharpBible/Graphics/SuperResolutionOnnxSample1/SuperResolutionOnnxSample1.csproj b/CSharpBible/Graphics/SuperResolutionOnnxSample1/SuperResolutionOnnxSample1.csproj index b2f3c4723..51f3fc755 100644 --- a/CSharpBible/Graphics/SuperResolutionOnnxSample1/SuperResolutionOnnxSample1.csproj +++ b/CSharpBible/Graphics/SuperResolutionOnnxSample1/SuperResolutionOnnxSample1.csproj @@ -6,6 +6,6 @@ enable - + diff --git a/CSharpBible/Graphics/SuperResolutionOnnxSample2/SuperResolutionOnnxSample2.csproj b/CSharpBible/Graphics/SuperResolutionOnnxSample2/SuperResolutionOnnxSample2.csproj index b2f3c4723..51f3fc755 100644 --- a/CSharpBible/Graphics/SuperResolutionOnnxSample2/SuperResolutionOnnxSample2.csproj +++ b/CSharpBible/Graphics/SuperResolutionOnnxSample2/SuperResolutionOnnxSample2.csproj @@ -6,6 +6,6 @@ enable - + diff --git a/CSharpBible/Graphics/SuperResolutionOnnxSample3/SuperResolutionOnnxSample3.csproj b/CSharpBible/Graphics/SuperResolutionOnnxSample3/SuperResolutionOnnxSample3.csproj index b2f3c4723..51f3fc755 100644 --- a/CSharpBible/Graphics/SuperResolutionOnnxSample3/SuperResolutionOnnxSample3.csproj +++ b/CSharpBible/Graphics/SuperResolutionOnnxSample3/SuperResolutionOnnxSample3.csproj @@ -6,6 +6,6 @@ enable - + diff --git a/CSharpBible/Graphics/TitleGen/TitleGen.csproj b/CSharpBible/Graphics/TitleGen/TitleGen.csproj index 8789e7511..5a474b685 100644 --- a/CSharpBible/Graphics/TitleGen/TitleGen.csproj +++ b/CSharpBible/Graphics/TitleGen/TitleGen.csproj @@ -10,7 +10,7 @@ - + diff --git a/CSharpBible/Libraries/BaseLib.Show/BaseLib.Show.csproj b/CSharpBible/Libraries/BaseLib.Show/BaseLib.Show.csproj index 6e9ffe3ee..f70e41509 100644 --- a/CSharpBible/Libraries/BaseLib.Show/BaseLib.Show.csproj +++ b/CSharpBible/Libraries/BaseLib.Show/BaseLib.Show.csproj @@ -8,7 +8,7 @@ - + diff --git a/CSharpBible/Libraries/BaseLib/BaseLib.csproj b/CSharpBible/Libraries/BaseLib/BaseLib.csproj index 6373fe699..5cc8cd416 100644 --- a/CSharpBible/Libraries/BaseLib/BaseLib.csproj +++ b/CSharpBible/Libraries/BaseLib/BaseLib.csproj @@ -30,7 +30,7 @@ - - + + \ No newline at end of file diff --git a/CSharpBible/Libraries/BaseLibTests/BaseLibTests.csproj b/CSharpBible/Libraries/BaseLibTests/BaseLibTests.csproj index 14814d5ae..1f48d0795 100644 --- a/CSharpBible/Libraries/BaseLibTests/BaseLibTests.csproj +++ b/CSharpBible/Libraries/BaseLibTests/BaseLibTests.csproj @@ -15,8 +15,8 @@ $(TargetFrameworks);net10.0 - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Libraries/ConsoleDisplay/ConsoleDisplay.csproj b/CSharpBible/Libraries/ConsoleDisplay/ConsoleDisplay.csproj index f2efdbf2a..2ec76b128 100644 --- a/CSharpBible/Libraries/ConsoleDisplay/ConsoleDisplay.csproj +++ b/CSharpBible/Libraries/ConsoleDisplay/ConsoleDisplay.csproj @@ -19,10 +19,10 @@ - - + + - + diff --git a/CSharpBible/Libraries/ConsoleDisplayTests/ConsoleDisplayTests.csproj b/CSharpBible/Libraries/ConsoleDisplayTests/ConsoleDisplayTests.csproj index f1c3ced99..5653aafcd 100644 --- a/CSharpBible/Libraries/ConsoleDisplayTests/ConsoleDisplayTests.csproj +++ b/CSharpBible/Libraries/ConsoleDisplayTests/ConsoleDisplayTests.csproj @@ -17,8 +17,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Libraries/ConsoleLib/ConsoleLib.csproj b/CSharpBible/Libraries/ConsoleLib/ConsoleLib.csproj index 35dbf2f99..52dc0b6f1 100644 --- a/CSharpBible/Libraries/ConsoleLib/ConsoleLib.csproj +++ b/CSharpBible/Libraries/ConsoleLib/ConsoleLib.csproj @@ -24,8 +24,8 @@ - - + + diff --git a/CSharpBible/Libraries/ConsoleLib/ConsoleLib_net.csproj b/CSharpBible/Libraries/ConsoleLib/ConsoleLib_net.csproj index e83d4067c..e92fb3487 100644 --- a/CSharpBible/Libraries/ConsoleLib/ConsoleLib_net.csproj +++ b/CSharpBible/Libraries/ConsoleLib/ConsoleLib_net.csproj @@ -19,7 +19,7 @@ - + diff --git a/CSharpBible/Libraries/ConsoleLibTests/ConsoleLibTests.csproj b/CSharpBible/Libraries/ConsoleLibTests/ConsoleLibTests.csproj index 5790a79ff..27bb48a54 100644 --- a/CSharpBible/Libraries/ConsoleLibTests/ConsoleLibTests.csproj +++ b/CSharpBible/Libraries/ConsoleLibTests/ConsoleLibTests.csproj @@ -14,8 +14,8 @@ - - + + \ No newline at end of file diff --git a/CSharpBible/Libraries/GenInterfaces/GenInterfaces.csproj b/CSharpBible/Libraries/GenInterfaces/GenInterfaces.csproj index b870297fd..b1e09abd2 100644 --- a/CSharpBible/Libraries/GenInterfaces/GenInterfaces.csproj +++ b/CSharpBible/Libraries/GenInterfaces/GenInterfaces.csproj @@ -13,6 +13,6 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/CSharpBible/Libraries/MVVM_BaseLib/MVVM_BaseLib.csproj b/CSharpBible/Libraries/MVVM_BaseLib/MVVM_BaseLib.csproj index c9b9d93fe..735ac2e43 100644 --- a/CSharpBible/Libraries/MVVM_BaseLib/MVVM_BaseLib.csproj +++ b/CSharpBible/Libraries/MVVM_BaseLib/MVVM_BaseLib.csproj @@ -31,8 +31,8 @@ - - + + diff --git a/CSharpBible/Libraries/MVVM_BaseLibTests/MVVM_BaseLibTests.csproj b/CSharpBible/Libraries/MVVM_BaseLibTests/MVVM_BaseLibTests.csproj index fa72cf2bf..1b1878e72 100644 --- a/CSharpBible/Libraries/MVVM_BaseLibTests/MVVM_BaseLibTests.csproj +++ b/CSharpBible/Libraries/MVVM_BaseLibTests/MVVM_BaseLibTests.csproj @@ -17,13 +17,13 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/CSharpBible/Libraries/MathLibraryTests/MathLibraryTests.csproj b/CSharpBible/Libraries/MathLibraryTests/MathLibraryTests.csproj index d8b93dba2..069fc5b3d 100644 --- a/CSharpBible/Libraries/MathLibraryTests/MathLibraryTests.csproj +++ b/CSharpBible/Libraries/MathLibraryTests/MathLibraryTests.csproj @@ -14,11 +14,11 @@ $(TargetFrameworks);net10.0 - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/CSharpBible/Libraries/WFSystem.Data/IValueConverter.cs b/CSharpBible/Libraries/WFSystem.Data/IValueConverter.cs index 13f8652f7..06476a917 100644 --- a/CSharpBible/Libraries/WFSystem.Data/IValueConverter.cs +++ b/CSharpBible/Libraries/WFSystem.Data/IValueConverter.cs @@ -15,7 +15,7 @@ namespace System.Windows.Data { - #if !NET6_0_OR_GREATER + #if !NET8_0_OR_GREATER // // Zusammenfassung: // Provides a way to apply custom logic to a binding. diff --git a/CSharpBible/Libraries/WFSystem.Data/WFSystem.Windows.Data.csproj b/CSharpBible/Libraries/WFSystem.Data/WFSystem.Windows.Data.csproj index 33624b1e2..d91b8bee4 100644 --- a/CSharpBible/Libraries/WFSystem.Data/WFSystem.Windows.Data.csproj +++ b/CSharpBible/Libraries/WFSystem.Data/WFSystem.Windows.Data.csproj @@ -2,14 +2,20 @@ Library - net481;net48;net472;net462;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows + net481;net48;net472;net462;net6.0-windows;net7.0-windows;net8.0-windows true True - + + $(TargetFrameworks);net9.0-windows + + + $(TargetFrameworks);net10.0-windows + + DEBUG;TRACE diff --git a/CSharpBible/MVVM_Tutorial/DemoLibraryTests/DemoLibraryTests.csproj b/CSharpBible/MVVM_Tutorial/DemoLibraryTests/DemoLibraryTests.csproj index c39723ade..53a0d6951 100644 --- a/CSharpBible/MVVM_Tutorial/DemoLibraryTests/DemoLibraryTests.csproj +++ b/CSharpBible/MVVM_Tutorial/DemoLibraryTests/DemoLibraryTests.csproj @@ -20,9 +20,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/ItemsControlTut3/ItemsControlTut3.csproj b/CSharpBible/MVVM_Tutorial/ItemsControlTut3/ItemsControlTut3.csproj index 63127f793..90580ce26 100644 --- a/CSharpBible/MVVM_Tutorial/ItemsControlTut3/ItemsControlTut3.csproj +++ b/CSharpBible/MVVM_Tutorial/ItemsControlTut3/ItemsControlTut3.csproj @@ -25,7 +25,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/ItemsControlTut3_netTests/ItemsControlTut3_netTests.csproj b/CSharpBible/MVVM_Tutorial/ItemsControlTut3_netTests/ItemsControlTut3_netTests.csproj index 6fc2a9c8c..8a961f260 100644 --- a/CSharpBible/MVVM_Tutorial/ItemsControlTut3_netTests/ItemsControlTut3_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/ItemsControlTut3_netTests/ItemsControlTut3_netTests.csproj @@ -21,9 +21,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/ItemsControlTut4/ItemsControlTut4.csproj b/CSharpBible/MVVM_Tutorial/ItemsControlTut4/ItemsControlTut4.csproj index 1db0df670..f17438ea4 100644 --- a/CSharpBible/MVVM_Tutorial/ItemsControlTut4/ItemsControlTut4.csproj +++ b/CSharpBible/MVVM_Tutorial/ItemsControlTut4/ItemsControlTut4.csproj @@ -1,5 +1,5 @@  - + WinExe net481;net48 @@ -25,7 +25,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/ItemsControlTut4_netTests/ItemsControlTut4_netTests.csproj b/CSharpBible/MVVM_Tutorial/ItemsControlTut4_netTests/ItemsControlTut4_netTests.csproj index 65b2ce0fe..acfdc656f 100644 --- a/CSharpBible/MVVM_Tutorial/ItemsControlTut4_netTests/ItemsControlTut4_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/ItemsControlTut4_netTests/ItemsControlTut4_netTests.csproj @@ -20,9 +20,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/ListBindingTests/ListBindingTests.csproj b/CSharpBible/MVVM_Tutorial/ListBindingTests/ListBindingTests.csproj index c1bde3495..581f06e4c 100644 --- a/CSharpBible/MVVM_Tutorial/ListBindingTests/ListBindingTests.csproj +++ b/CSharpBible/MVVM_Tutorial/ListBindingTests/ListBindingTests.csproj @@ -26,9 +26,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/ListBindingTests/ListBinding_netTests.csproj b/CSharpBible/MVVM_Tutorial/ListBindingTests/ListBinding_netTests.csproj index edc0b6fef..8fb63e63c 100644 --- a/CSharpBible/MVVM_Tutorial/ListBindingTests/ListBinding_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/ListBindingTests/ListBinding_netTests.csproj @@ -24,9 +24,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplate/MVVM_00_IoCTemplate.csproj b/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplate/MVVM_00_IoCTemplate.csproj index 3c7481f47..5e4467243 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplate/MVVM_00_IoCTemplate.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplate/MVVM_00_IoCTemplate.csproj @@ -8,7 +8,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplate/MVVM_00_IoCTemplate_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplate/MVVM_00_IoCTemplate_net.csproj index e66af3510..5256844ca 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplate/MVVM_00_IoCTemplate_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplate/MVVM_00_IoCTemplate_net.csproj @@ -14,7 +14,7 @@ $(TargetFrameworks);net10.0-windows - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplateTests/MVVM_00_IoCTemplateTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplateTests/MVVM_00_IoCTemplateTests.csproj index a422005a2..2a1b37dca 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplateTests/MVVM_00_IoCTemplateTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplateTests/MVVM_00_IoCTemplateTests.csproj @@ -12,9 +12,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplateTests/MVVM_00_IoCTemplate_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplateTests/MVVM_00_IoCTemplate_netTests.csproj index c3c583eb2..59f7913b9 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplateTests/MVVM_00_IoCTemplate_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_00_IoCTemplateTests/MVVM_00_IoCTemplate_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_00_TemplateTests/MVVM_00_TemplateTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_00_TemplateTests/MVVM_00_TemplateTests.csproj index 44b502663..29197f175 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_00_TemplateTests/MVVM_00_TemplateTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_00_TemplateTests/MVVM_00_TemplateTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_00_TemplateTests/MVVM_00_Template_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_00_TemplateTests/MVVM_00_Template_netTests.csproj index 940857e1f..8c8c06e44 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_00_TemplateTests/MVVM_00_Template_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_00_TemplateTests/MVVM_00_Template_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_00a_CTTemplateTests/MVVM_00a_CTTemplateTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_00a_CTTemplateTests/MVVM_00a_CTTemplateTests.csproj index 7e33304e8..9dd79fc16 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_00a_CTTemplateTests/MVVM_00a_CTTemplateTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_00a_CTTemplateTests/MVVM_00a_CTTemplateTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_00a_CTTemplateTests/MVVM_00a_CTTemplate_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_00a_CTTemplateTests/MVVM_00a_CTTemplate_netTests.csproj index 2ccc59cab..29a33a664 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_00a_CTTemplateTests/MVVM_00a_CTTemplate_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_00a_CTTemplateTests/MVVM_00a_CTTemplate_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_03_NotifyChangeTests/MVVM_03_NotifyChangeTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_03_NotifyChangeTests/MVVM_03_NotifyChangeTests.csproj index c037e16c3..ebf25484a 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_03_NotifyChangeTests/MVVM_03_NotifyChangeTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_03_NotifyChangeTests/MVVM_03_NotifyChangeTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_03_NotifyChangeTests/MVVM_03_NotifyChange_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_03_NotifyChangeTests/MVVM_03_NotifyChange_netTests.csproj index 220143877..7ff845267 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_03_NotifyChangeTests/MVVM_03_NotifyChange_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_03_NotifyChangeTests/MVVM_03_NotifyChange_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_03a_CTNotifyChangeTests/MVVM_03a_CTNotifyChangeTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_03a_CTNotifyChangeTests/MVVM_03a_CTNotifyChangeTests.csproj index e01d0c95c..0ba77f0fb 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_03a_CTNotifyChangeTests/MVVM_03a_CTNotifyChangeTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_03a_CTNotifyChangeTests/MVVM_03a_CTNotifyChangeTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_03a_CTNotifyChangeTests/MVVM_03a_CTNotifyChange_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_03a_CTNotifyChangeTests/MVVM_03a_CTNotifyChange_netTests.csproj index 935558209..53577cc5f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_03a_CTNotifyChangeTests/MVVM_03a_CTNotifyChange_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_03a_CTNotifyChangeTests/MVVM_03a_CTNotifyChange_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_04_DelegateCommandTests/MVVM_04_DelegateCommandTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_04_DelegateCommandTests/MVVM_04_DelegateCommandTests.csproj index 720a135d4..ff507a564 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_04_DelegateCommandTests/MVVM_04_DelegateCommandTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_04_DelegateCommandTests/MVVM_04_DelegateCommandTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_04_DelegateCommandTests/MVVM_04_DelegateCommand_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_04_DelegateCommandTests/MVVM_04_DelegateCommand_netTests.csproj index 966383f98..4e0e78d06 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_04_DelegateCommandTests/MVVM_04_DelegateCommand_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_04_DelegateCommandTests/MVVM_04_DelegateCommand_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_04a_CTRelayCommandTests/MVVM_04a_CTRelayCommandTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_04a_CTRelayCommandTests/MVVM_04a_CTRelayCommandTests.csproj index 4088eae1c..b6444a223 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_04a_CTRelayCommandTests/MVVM_04a_CTRelayCommandTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_04a_CTRelayCommandTests/MVVM_04a_CTRelayCommandTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_04a_CTRelayCommandTests/MVVM_04a_CTRelayCommand_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_04a_CTRelayCommandTests/MVVM_04a_CTRelayCommand_netTests.csproj index 9919974c4..a906fe4ea 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_04a_CTRelayCommandTests/MVVM_04a_CTRelayCommand_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_04a_CTRelayCommandTests/MVVM_04a_CTRelayCommand_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_05_CommandParCalculatorTests/MVVM_05_CommandParCalculatorTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_05_CommandParCalculatorTests/MVVM_05_CommandParCalculatorTests.csproj index ed128af49..0dd2d37ad 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_05_CommandParCalculatorTests/MVVM_05_CommandParCalculatorTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_05_CommandParCalculatorTests/MVVM_05_CommandParCalculatorTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_05_CommandParCalculatorTests/MVVM_05_CommandParCalculator_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_05_CommandParCalculatorTests/MVVM_05_CommandParCalculator_netTests.csproj index de8dda6de..fb39e7f95 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_05_CommandParCalculatorTests/MVVM_05_CommandParCalculator_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_05_CommandParCalculatorTests/MVVM_05_CommandParCalculator_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalc/MVVM_05a_CTCommandParCalc.csproj b/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalc/MVVM_05a_CTCommandParCalc.csproj index ba913da78..b51906bdd 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalc/MVVM_05a_CTCommandParCalc.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalc/MVVM_05a_CTCommandParCalc.csproj @@ -17,7 +17,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalc/MVVM_05a_CTCommandParCalc_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalc/MVVM_05a_CTCommandParCalc_net.csproj index c4b2c7eee..4d1a70be4 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalc/MVVM_05a_CTCommandParCalc_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalc/MVVM_05a_CTCommandParCalc_net.csproj @@ -26,7 +26,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalcTests/MVVM_05a_CTCommandParCalcTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalcTests/MVVM_05a_CTCommandParCalcTests.csproj index 59211048f..d1bf6e5db 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalcTests/MVVM_05a_CTCommandParCalcTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalcTests/MVVM_05a_CTCommandParCalcTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalcTests/MVVM_05a_CTCommandParCalc_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalcTests/MVVM_05a_CTCommandParCalc_netTests.csproj index 677ee716c..b51ca7009 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalcTests/MVVM_05a_CTCommandParCalc_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_05a_CTCommandParCalcTests/MVVM_05a_CTCommandParCalc_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_06_ConvertersTests/MVVM_06_ConvertersTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_06_ConvertersTests/MVVM_06_ConvertersTests.csproj index 6d4bb929d..547cc3677 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_06_ConvertersTests/MVVM_06_ConvertersTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_06_ConvertersTests/MVVM_06_ConvertersTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_3Tests/MVVM_06_Converters_3Tests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_3Tests/MVVM_06_Converters_3Tests.csproj index d9afd6726..e356ca91d 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_3Tests/MVVM_06_Converters_3Tests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_3Tests/MVVM_06_Converters_3Tests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_3Tests/MVVM_06_Converters_3_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_3Tests/MVVM_06_Converters_3_netTests.csproj index 1cd9529b8..9361e7ce9 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_3Tests/MVVM_06_Converters_3_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_3Tests/MVVM_06_Converters_3_netTests.csproj @@ -15,9 +15,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4/MVVM_06_Converters_4.csproj b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4/MVVM_06_Converters_4.csproj index 87dc57169..a9633be1c 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4/MVVM_06_Converters_4.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4/MVVM_06_Converters_4.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4/MVVM_06_Converters_4_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4/MVVM_06_Converters_4_net.csproj index cff294bf7..5524d6fa6 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4/MVVM_06_Converters_4_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4/MVVM_06_Converters_4_net.csproj @@ -20,8 +20,8 @@ - - + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4Tests/MVVM_06_Converters_4Tests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4Tests/MVVM_06_Converters_4Tests.csproj index 90df2d2de..cc47864eb 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4Tests/MVVM_06_Converters_4Tests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4Tests/MVVM_06_Converters_4Tests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4Tests/MVVM_06_Converters_4_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4Tests/MVVM_06_Converters_4_netTests.csproj index 340026026..58e734a50 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4Tests/MVVM_06_Converters_4_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_06_Converters_4Tests/MVVM_06_Converters_4_netTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_09_DialogBoxesTest/MVVM_09_DialogBoxesTest.csproj b/CSharpBible/MVVM_Tutorial/MVVM_09_DialogBoxesTest/MVVM_09_DialogBoxesTest.csproj index bebfef9d2..0575df29b 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_09_DialogBoxesTest/MVVM_09_DialogBoxesTest.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_09_DialogBoxesTest/MVVM_09_DialogBoxesTest.csproj @@ -10,9 +10,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_09_DialogBoxesTest/MVVM_09_DialogBoxes_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_09_DialogBoxesTest/MVVM_09_DialogBoxes_netTests.csproj index 502e239ee..a9cab3a3f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_09_DialogBoxesTest/MVVM_09_DialogBoxes_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_09_DialogBoxesTest/MVVM_09_DialogBoxes_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_09a_CTDialogBoxesTests/MVVM_09a_CTDialogBoxesTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_09a_CTDialogBoxesTests/MVVM_09a_CTDialogBoxesTests.csproj index b30706aa2..5a58db3de 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_09a_CTDialogBoxesTests/MVVM_09a_CTDialogBoxesTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_09a_CTDialogBoxesTests/MVVM_09a_CTDialogBoxesTests.csproj @@ -10,9 +10,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_09a_CTDialogBoxesTests/MVVM_09a_CTDialogBoxes_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_09a_CTDialogBoxesTests/MVVM_09a_CTDialogBoxes_netTests.csproj index 69672d00e..e41b2379b 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_09a_CTDialogBoxesTests/MVVM_09a_CTDialogBoxes_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_09a_CTDialogBoxesTests/MVVM_09a_CTDialogBoxes_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_16_UserControl1Tests/MVVM_16_UserControl1Tests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_16_UserControl1Tests/MVVM_16_UserControl1Tests.csproj index b23ad4ea9..48bb4ee75 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_16_UserControl1Tests/MVVM_16_UserControl1Tests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_16_UserControl1Tests/MVVM_16_UserControl1Tests.csproj @@ -11,9 +11,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_16_UserControl1Tests/MVVM_16_UserControl1_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_16_UserControl1Tests/MVVM_16_UserControl1_netTests.csproj index 59f54d24d..36df7f521 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_16_UserControl1Tests/MVVM_16_UserControl1_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_16_UserControl1Tests/MVVM_16_UserControl1_netTests.csproj @@ -17,9 +17,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_Laden/MVVM_17_1_CSV_Laden.csproj b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_Laden/MVVM_17_1_CSV_Laden.csproj index 9154da05e..2cfac3dd6 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_Laden/MVVM_17_1_CSV_Laden.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_Laden/MVVM_17_1_CSV_Laden.csproj @@ -16,7 +16,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_Laden/MVVM_17_1_CSV_Laden_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_Laden/MVVM_17_1_CSV_Laden_net.csproj index c17509939..21bdb2bda 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_Laden/MVVM_17_1_CSV_Laden_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_Laden/MVVM_17_1_CSV_Laden_net.csproj @@ -11,7 +11,7 @@ $(TargetFrameworks);net9.0-windows - $(TargetFrameworks);net10.0-Windows + $(TargetFrameworks);net10.0-windows @@ -22,7 +22,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/MVVM_17_1_CSV_LadenTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/MVVM_17_1_CSV_LadenTests.csproj index fea95fd4e..4a865e481 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/MVVM_17_1_CSV_LadenTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/MVVM_17_1_CSV_LadenTests.csproj @@ -22,9 +22,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/MVVM_17_1_CSV_Laden_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/MVVM_17_1_CSV_Laden_netTests.csproj index 5452ccf42..19d08efae 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/MVVM_17_1_CSV_Laden_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/MVVM_17_1_CSV_Laden_netTests.csproj @@ -24,9 +24,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/Views/Converter/WindowPortToGridLinesTests.cs b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/Views/Converter/WindowPortToGridLinesTests.cs index 323f2e8e4..779d00ae8 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/Views/Converter/WindowPortToGridLinesTests.cs +++ b/CSharpBible/MVVM_Tutorial/MVVM_17_1_CSV_LadenTests/Views/Converter/WindowPortToGridLinesTests.cs @@ -54,7 +54,8 @@ public void ConvertTest(object o) [TestMethod()] public void GetAdjustedRectTest() { - var r2 = testVC.GetAdjustedRect(wp); + if (!wp.HasValue) return; + var r2 = testVC.GetAdjustedRect(wp.Value); System.Drawing.RectangleF rExp = new(-20, -10, 40, 20); Assert.AreEqual(rExp, r2); } diff --git a/CSharpBible/MVVM_Tutorial/MVVM_18_MultiConvertersTests/MVVM_18_MultiConvertersTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_18_MultiConvertersTests/MVVM_18_MultiConvertersTests.csproj index 6451e73e0..4dfdd3e42 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_18_MultiConvertersTests/MVVM_18_MultiConvertersTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_18_MultiConvertersTests/MVVM_18_MultiConvertersTests.csproj @@ -23,9 +23,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_19_FilterListsTests/MVVM_19_FilterListsTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_19_FilterListsTests/MVVM_19_FilterListsTests.csproj index a3997c9a5..57a86e938 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_19_FilterListsTests/MVVM_19_FilterListsTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_19_FilterListsTests/MVVM_19_FilterListsTests.csproj @@ -26,9 +26,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_19_FilterListsTests/MVVM_19_FilterLists_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_19_FilterListsTests/MVVM_19_FilterLists_netTests.csproj index d2124e5f9..65ee32328 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_19_FilterListsTests/MVVM_19_FilterLists_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_19_FilterListsTests/MVVM_19_FilterLists_netTests.csproj @@ -24,9 +24,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_20_Sysdialogs/MVVM_20_Sysdialogs.csproj b/CSharpBible/MVVM_Tutorial/MVVM_20_Sysdialogs/MVVM_20_Sysdialogs.csproj index 32298ff22..464ecd262 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_20_Sysdialogs/MVVM_20_Sysdialogs.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_20_Sysdialogs/MVVM_20_Sysdialogs.csproj @@ -12,7 +12,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_20_Sysdialogs/MVVM_20_Sysdialogs_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_20_Sysdialogs/MVVM_20_Sysdialogs_net.csproj index efb92bd69..bc2e0dbc4 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_20_Sysdialogs/MVVM_20_Sysdialogs_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_20_Sysdialogs/MVVM_20_Sysdialogs_net.csproj @@ -17,7 +17,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_20_SysdialogsTests/MVVM_20_SysdialogsTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_20_SysdialogsTests/MVVM_20_SysdialogsTests.csproj index 3c372c74a..8c924a34f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_20_SysdialogsTests/MVVM_20_SysdialogsTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_20_SysdialogsTests/MVVM_20_SysdialogsTests.csproj @@ -14,9 +14,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_20_SysdialogsTests/MVVM_20_Sysdialogs_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_20_SysdialogsTests/MVVM_20_Sysdialogs_netTests.csproj index 0f040f3ea..c0d794a1f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_20_SysdialogsTests/MVVM_20_Sysdialogs_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_20_SysdialogsTests/MVVM_20_Sysdialogs_netTests.csproj @@ -19,9 +19,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs.csproj b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs.csproj index db84932c4..55de3d43f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs.csproj @@ -12,7 +12,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs_net.csproj index 628288b03..30aea3a4c 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs_net.csproj @@ -16,7 +16,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs_net_2lop3rvq_wpftmp.csproj b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs_net_2lop3rvq_wpftmp.csproj new file mode 100644 index 000000000..58476169d --- /dev/null +++ b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogs/MVVM_20a_CTSysdialogs_net_2lop3rvq_wpftmp.csproj @@ -0,0 +1,270 @@ + + + MVVM_20a_CTSysdialogs_net + ..\..\..\obj.net\MVVM_20a_CTSysdialogs_net\Debug\ + ..\..\..\obj.net\MVVM_20a_CTSysdialogs_net\ + C:\Projekte\CSharp\CSharpBible\MVVM_Tutorial\MVVM_20a_CTSysdialogs\..\..\..\obj.net\MVVM_20a_CTSysdialogs_net\ + <_TargetAssemblyProjectName>MVVM_20a_CTSysdialogs_net + MVVM_20a_CTSysdialogs + + + + WinExe + net8.0-windows; + true + + + + + $(TargetFrameworks);net9.0-windows + + + $(TargetFrameworks);net10.0-windows + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogsTests/MVVM_20a_CTSysdialogsTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogsTests/MVVM_20a_CTSysdialogsTests.csproj index 9819b5909..7e12f7251 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogsTests/MVVM_20a_CTSysdialogsTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogsTests/MVVM_20a_CTSysdialogsTests.csproj @@ -14,9 +14,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogsTests/MVVM_20a_CTSysdialogs_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogsTests/MVVM_20a_CTSysdialogs_netTests.csproj index 056390923..936a8d244 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogsTests/MVVM_20a_CTSysdialogs_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_20a_CTSysdialogsTests/MVVM_20a_CTSysdialogs_netTests.csproj @@ -19,9 +19,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCap/MVVM_22_CTWpfCap.csproj b/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCap/MVVM_22_CTWpfCap.csproj index 0852e972e..a8dc53ebf 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCap/MVVM_22_CTWpfCap.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCap/MVVM_22_CTWpfCap.csproj @@ -22,7 +22,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCap/MVVM_22_CTWpfCap_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCap/MVVM_22_CTWpfCap_net.csproj index f16067fff..b21d1dd89 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCap/MVVM_22_CTWpfCap_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCap/MVVM_22_CTWpfCap_net.csproj @@ -24,7 +24,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCapTests/MVVM_22_CTWpfCapTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCapTests/MVVM_22_CTWpfCapTests.csproj index 1ea1d3192..bb1ca4d86 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCapTests/MVVM_22_CTWpfCapTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCapTests/MVVM_22_CTWpfCapTests.csproj @@ -21,9 +21,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCapTests/MVVM_22_CTWpfCap_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCapTests/MVVM_22_CTWpfCap_netTests.csproj index 1242bb10a..d8c560eee 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCapTests/MVVM_22_CTWpfCap_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_22_CTWpfCapTests/MVVM_22_CTWpfCap_netTests.csproj @@ -27,14 +27,14 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCap/MVVM_22_WpfCap.csproj b/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCap/MVVM_22_WpfCap.csproj index f308cad58..bcc9aa3b9 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCap/MVVM_22_WpfCap.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCap/MVVM_22_WpfCap.csproj @@ -22,7 +22,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCap/MVVM_22_WpfCap_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCap/MVVM_22_WpfCap_net.csproj index 143a4dcd1..6f73cae6c 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCap/MVVM_22_WpfCap_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCap/MVVM_22_WpfCap_net.csproj @@ -25,7 +25,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCapTests/MVVM_22_WpfCapTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCapTests/MVVM_22_WpfCapTests.csproj index 4159f7ccc..35af775db 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCapTests/MVVM_22_WpfCapTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCapTests/MVVM_22_WpfCapTests.csproj @@ -21,9 +21,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCapTests/MVVM_22_WpfCap_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCapTests/MVVM_22_WpfCap_netTests.csproj index d77c137ff..37c3f42d0 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCapTests/MVVM_22_WpfCap_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_22_WpfCapTests/MVVM_22_WpfCap_netTests.csproj @@ -27,9 +27,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_24_UserControlTests/MVVM_24_UserControlTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_24_UserControlTests/MVVM_24_UserControlTests.csproj index 12f2d7ccc..48ab4f8fa 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_24_UserControlTests/MVVM_24_UserControlTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_24_UserControlTests/MVVM_24_UserControlTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_24_UserControlTests/MVVM_24_UserControl_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_24_UserControlTests/MVVM_24_UserControl_netTests.csproj index a94e55177..991782059 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_24_UserControlTests/MVVM_24_UserControl_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_24_UserControlTests/MVVM_24_UserControl_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_24a_CTUserControlTests/MVVM_24a_CTUserControlTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_24a_CTUserControlTests/MVVM_24a_CTUserControlTests.csproj index 2139c8849..21cbd56d3 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_24a_CTUserControlTests/MVVM_24a_CTUserControlTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_24a_CTUserControlTests/MVVM_24a_CTUserControlTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_24a_CTUserControlTests/MVVM_24a_CTUserControl_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_24a_CTUserControlTests/MVVM_24a_CTUserControl_netTests.csproj index 2177c45f4..95dd0e628 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_24a_CTUserControlTests/MVVM_24a_CTUserControl_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_24a_CTUserControlTests/MVVM_24a_CTUserControl_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_24b_UserControlTests/MVVM_24b_UserControlTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_24b_UserControlTests/MVVM_24b_UserControlTests.csproj index f12811255..3d5c67284 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_24b_UserControlTests/MVVM_24b_UserControlTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_24b_UserControlTests/MVVM_24b_UserControlTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_24b_UserControlTests/MVVM_24b_UserControl_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_24b_UserControlTests/MVVM_24b_UserControl_netTests.csproj index 6cc6de93c..9e341687b 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_24b_UserControlTests/MVVM_24b_UserControl_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_24b_UserControlTests/MVVM_24b_UserControl_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_24c_CTUserControlTests/MVVM_24c_CTUserControlTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_24c_CTUserControlTests/MVVM_24c_CTUserControlTests.csproj index a3c178ade..af908d4e1 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_24c_CTUserControlTests/MVVM_24c_CTUserControlTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_24c_CTUserControlTests/MVVM_24c_CTUserControlTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_24c_CTUserControlTests/MVVM_24c_CTUserControl_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_24c_CTUserControlTests/MVVM_24c_CTUserControl_netTests.csproj index 848923e47..f6598c4bb 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_24c_CTUserControlTests/MVVM_24c_CTUserControl_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_24c_CTUserControlTests/MVVM_24c_CTUserControl_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEdit/MVVM_25_RichTextEdit.csproj b/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEdit/MVVM_25_RichTextEdit.csproj index b2c0b7487..e836383c5 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEdit/MVVM_25_RichTextEdit.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEdit/MVVM_25_RichTextEdit.csproj @@ -12,7 +12,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEdit/MVVM_25_RichTextEdit_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEdit/MVVM_25_RichTextEdit_net.csproj index 6fe640c92..2ab5d2c5b 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEdit/MVVM_25_RichTextEdit_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEdit/MVVM_25_RichTextEdit_net.csproj @@ -17,7 +17,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEditTests/MVVM_25_RichTextEditTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEditTests/MVVM_25_RichTextEditTests.csproj index 95577d21b..359adc09d 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEditTests/MVVM_25_RichTextEditTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEditTests/MVVM_25_RichTextEditTests.csproj @@ -12,9 +12,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEditTests/MVVM_25_RichTextEdit_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEditTests/MVVM_25_RichTextEdit_netTests.csproj index 097444a75..a3531ab17 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEditTests/MVVM_25_RichTextEdit_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_25_RichTextEditTests/MVVM_25_RichTextEdit_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_27_DataGridTests/MVVM_27_DataGridTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_27_DataGridTests/MVVM_27_DataGridTests.csproj index 7168c8160..4ccea3be3 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_27_DataGridTests/MVVM_27_DataGridTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_27_DataGridTests/MVVM_27_DataGridTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_27_DataGridTests/MVVM_27_DataGrid_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_27_DataGridTests/MVVM_27_DataGrid_netTests.csproj index a7c31ba43..c8e78398f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_27_DataGridTests/MVVM_27_DataGrid_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_27_DataGridTests/MVVM_27_DataGrid_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExt/MVVM_28_1_CTDataGridExt.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExt/MVVM_28_1_CTDataGridExt.csproj index 6b99adaed..18ea995a8 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExt/MVVM_28_1_CTDataGridExt.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExt/MVVM_28_1_CTDataGridExt.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExt/MVVM_28_1_CTDataGridExt_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExt/MVVM_28_1_CTDataGridExt_net.csproj index 88ec7f6f1..05a39703f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExt/MVVM_28_1_CTDataGridExt_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExt/MVVM_28_1_CTDataGridExt_net.csproj @@ -14,8 +14,8 @@ $(TargetFrameworks);net10.0-windows - - + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExtTests/MVVM_28_1_CTDataGridExtTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExtTests/MVVM_28_1_CTDataGridExtTests.csproj index ba30b0d73..773b705a5 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExtTests/MVVM_28_1_CTDataGridExtTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExtTests/MVVM_28_1_CTDataGridExtTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExtTests/MVVM_28_1_CTDataGridExt_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExtTests/MVVM_28_1_CTDataGridExt_netTests.csproj index 4c76b4eb5..11fe0ae4f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExtTests/MVVM_28_1_CTDataGridExt_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_1_CTDataGridExtTests/MVVM_28_1_CTDataGridExt_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExt/MVVM_28_1_DataGridExt.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExt/MVVM_28_1_DataGridExt.csproj index 1f93b44d6..da7dd2fcc 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExt/MVVM_28_1_DataGridExt.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExt/MVVM_28_1_DataGridExt.csproj @@ -8,7 +8,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExt/MVVM_28_1_DataGridExt_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExt/MVVM_28_1_DataGridExt_net.csproj index 58ab144d0..31171e799 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExt/MVVM_28_1_DataGridExt_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExt/MVVM_28_1_DataGridExt_net.csproj @@ -14,7 +14,7 @@ $(TargetFrameworks);net10.0-windows - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExtTests/MVVM_28_1_DataGridExtTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExtTests/MVVM_28_1_DataGridExtTests.csproj index 1dc603e3d..6553b86aa 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExtTests/MVVM_28_1_DataGridExtTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExtTests/MVVM_28_1_DataGridExtTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExtTests/MVVM_28_1_DataGridExt_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExtTests/MVVM_28_1_DataGridExt_netTests.csproj index 640a185be..cf5b8647e 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExtTests/MVVM_28_1_DataGridExt_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_1_DataGridExtTests/MVVM_28_1_DataGridExt_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_DataGridTests/MVVM_28_DataGridTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_DataGridTests/MVVM_28_DataGridTests.csproj index 0edc15686..8812629b6 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_DataGridTests/MVVM_28_DataGridTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_DataGridTests/MVVM_28_DataGridTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_28_DataGridTests/MVVM_28_DataGrid_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_28_DataGridTests/MVVM_28_DataGrid_netTests.csproj index 4e714a0cb..50e2f6024 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_28_DataGridTests/MVVM_28_DataGrid_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_28_DataGridTests/MVVM_28_DataGrid_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31_Validation1Tests/MVVM_31_Validation1Tests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31_Validation1Tests/MVVM_31_Validation1Tests.csproj index 424a3e532..68082acd7 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31_Validation1Tests/MVVM_31_Validation1Tests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31_Validation1Tests/MVVM_31_Validation1Tests.csproj @@ -7,9 +7,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31_Validation1Tests/MVVM_31_Validation1_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31_Validation1Tests/MVVM_31_Validation1_netTests.csproj index 7d3ae5bb6..4785ab214 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31_Validation1Tests/MVVM_31_Validation1_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31_Validation1Tests/MVVM_31_Validation1_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31_Validation2Tests/MVVM_31_Validation2Tests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31_Validation2Tests/MVVM_31_Validation2Tests.csproj index 25a553ff0..8f9de4130 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31_Validation2Tests/MVVM_31_Validation2Tests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31_Validation2Tests/MVVM_31_Validation2Tests.csproj @@ -7,9 +7,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31_Validation2Tests/MVVM_31_Validation2_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31_Validation2Tests/MVVM_31_Validation2_netTests.csproj index 71969662c..7c21a1218 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31_Validation2Tests/MVVM_31_Validation2_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31_Validation2Tests/MVVM_31_Validation2_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation1Tests/MVVM_31a_CTValidation1Tests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation1Tests/MVVM_31a_CTValidation1Tests.csproj index 47c86cdef..0a549b66a 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation1Tests/MVVM_31a_CTValidation1Tests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation1Tests/MVVM_31a_CTValidation1Tests.csproj @@ -7,9 +7,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation1Tests/MVVM_31a_CTValidation1_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation1Tests/MVVM_31a_CTValidation1_netTests.csproj index 9e9e198a1..aebb0b923 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation1Tests/MVVM_31a_CTValidation1_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation1Tests/MVVM_31a_CTValidation1_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation2Tests/MVVM_31a_CTValidation2Tests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation2Tests/MVVM_31a_CTValidation2Tests.csproj index b6db9d3e4..f9ea6de1f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation2Tests/MVVM_31a_CTValidation2Tests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation2Tests/MVVM_31a_CTValidation2Tests.csproj @@ -7,9 +7,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation2Tests/MVVM_31a_CTValidation2_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation2Tests/MVVM_31a_CTValidation2_netTests.csproj index 9a2f318c5..d851a61b7 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation2Tests/MVVM_31a_CTValidation2_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation2Tests/MVVM_31a_CTValidation2_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation3Tests/MVVM_31a_CTValidation3Tests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation3Tests/MVVM_31a_CTValidation3Tests.csproj index 71253b930..94bdce556 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation3Tests/MVVM_31a_CTValidation3Tests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation3Tests/MVVM_31a_CTValidation3Tests.csproj @@ -7,9 +7,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation3Tests/MVVM_31a_CTValidation3_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation3Tests/MVVM_31a_CTValidation3_netTests.csproj index 220bee23a..25b763c27 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation3Tests/MVVM_31a_CTValidation3_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_31a_CTValidation3Tests/MVVM_31a_CTValidation3_netTests.csproj @@ -13,9 +13,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_Commands/MVVM_33_Events_to_Commands.csproj b/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_Commands/MVVM_33_Events_to_Commands.csproj index 7b52773c4..6c407ea7f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_Commands/MVVM_33_Events_to_Commands.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_Commands/MVVM_33_Events_to_Commands.csproj @@ -11,7 +11,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_Commands/MVVM_33_Events_to_Commands_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_Commands/MVVM_33_Events_to_Commands_net.csproj index 86a86da84..cc5ea2ceb 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_Commands/MVVM_33_Events_to_Commands_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_Commands/MVVM_33_Events_to_Commands_net.csproj @@ -17,7 +17,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_CommandsTests/MVVM_33_Events_to_CommandsTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_CommandsTests/MVVM_33_Events_to_CommandsTests.csproj index 24d08561d..1e5bd2d9e 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_CommandsTests/MVVM_33_Events_to_CommandsTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_CommandsTests/MVVM_33_Events_to_CommandsTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_CommandsTests/MVVM_33_Events_to_Commands_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_CommandsTests/MVVM_33_Events_to_Commands_netTests.csproj index 27a55d3ff..9ce5ef1f4 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_CommandsTests/MVVM_33_Events_to_Commands_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_33_Events_to_CommandsTests/MVVM_33_Events_to_Commands_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_Commands/MVVM_33a_CTEvents_To_Commands.csproj b/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_Commands/MVVM_33a_CTEvents_To_Commands.csproj index b9688b88b..5511da36b 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_Commands/MVVM_33a_CTEvents_To_Commands.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_Commands/MVVM_33a_CTEvents_To_Commands.csproj @@ -11,7 +11,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_Commands/MVVM_33a_CTEvents_To_Commands_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_Commands/MVVM_33a_CTEvents_To_Commands_net.csproj index f2565aa41..5ef4f9875 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_Commands/MVVM_33a_CTEvents_To_Commands_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_Commands/MVVM_33a_CTEvents_To_Commands_net.csproj @@ -17,7 +17,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_CommandsTests/MVVM_33a_CTEvents_To_CommandsTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_CommandsTests/MVVM_33a_CTEvents_To_CommandsTests.csproj index eb685f48a..4a51157b2 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_CommandsTests/MVVM_33a_CTEvents_To_CommandsTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_CommandsTests/MVVM_33a_CTEvents_To_CommandsTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_CommandsTests/MVVM_33a_CTEvents_To_Commands_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_CommandsTests/MVVM_33a_CTEvents_To_Commands_netTests.csproj index a0508bfe1..15a4aa2e6 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_CommandsTests/MVVM_33a_CTEvents_To_Commands_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_33a_CTEvents_To_CommandsTests/MVVM_33a_CTEvents_To_Commands_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgs/MVVM_34_BindingEventArgs.csproj b/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgs/MVVM_34_BindingEventArgs.csproj index 7b52773c4..6c407ea7f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgs/MVVM_34_BindingEventArgs.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgs/MVVM_34_BindingEventArgs.csproj @@ -11,7 +11,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgs/MVVM_34_BindingEventArgs_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgs/MVVM_34_BindingEventArgs_net.csproj index 4d5b98bdf..9ae6f72fb 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgs/MVVM_34_BindingEventArgs_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgs/MVVM_34_BindingEventArgs_net.csproj @@ -17,7 +17,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgsTests/MVVM_34_BindingEventArgsTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgsTests/MVVM_34_BindingEventArgsTests.csproj index 62c2e2cd3..94907d6f1 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgsTests/MVVM_34_BindingEventArgsTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgsTests/MVVM_34_BindingEventArgsTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgsTests/MVVM_34_BindingEventArgs_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgsTests/MVVM_34_BindingEventArgs_netTests.csproj index df2e4ccd3..ad29cb97f 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgsTests/MVVM_34_BindingEventArgs_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_34_BindingEventArgsTests/MVVM_34_BindingEventArgs_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgs/MVVM_34a_CTBindingEventArgs.csproj b/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgs/MVVM_34a_CTBindingEventArgs.csproj index b9688b88b..5511da36b 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgs/MVVM_34a_CTBindingEventArgs.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgs/MVVM_34a_CTBindingEventArgs.csproj @@ -11,7 +11,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgs/MVVM_34a_CTBindingEventArgs_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgs/MVVM_34a_CTBindingEventArgs_net.csproj index f2565aa41..5ef4f9875 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgs/MVVM_34a_CTBindingEventArgs_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgs/MVVM_34a_CTBindingEventArgs_net.csproj @@ -17,7 +17,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgsTests/MVVM_34a_CTBindingEventArgsTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgsTests/MVVM_34a_CTBindingEventArgsTests.csproj index 9691804ce..993514e27 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgsTests/MVVM_34a_CTBindingEventArgsTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgsTests/MVVM_34a_CTBindingEventArgsTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgsTests/MVVM_34a_CTBindingEventArgs_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgsTests/MVVM_34a_CTBindingEventArgs_netTests.csproj index add9dfeac..1b818a002 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgsTests/MVVM_34a_CTBindingEventArgs_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_34a_CTBindingEventArgsTests/MVVM_34a_CTBindingEventArgs_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkit/MVVM_35_CommunityToolkit_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkit/MVVM_35_CommunityToolkit_net.csproj index 00543db25..e99d90ebf 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkit/MVVM_35_CommunityToolkit_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkit/MVVM_35_CommunityToolkit_net.csproj @@ -14,7 +14,7 @@ $(TargetFrameworks);net10.0-windows - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkitTests/MVVM_35_CommunityToolkitTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkitTests/MVVM_35_CommunityToolkitTests.csproj index 2dd4473d8..c43eb6aa1 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkitTests/MVVM_35_CommunityToolkitTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkitTests/MVVM_35_CommunityToolkitTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkitTests/MVVM_35_CommunityToolkit_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkitTests/MVVM_35_CommunityToolkit_netTests.csproj index 110a6259a..5a89e15eb 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkitTests/MVVM_35_CommunityToolkit_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_35_CommunityToolkitTests/MVVM_35_CommunityToolkit_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWork/MVVM_36_ComToolKtSavesWork.csproj b/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWork/MVVM_36_ComToolKtSavesWork.csproj index 2e913048f..d53bc43db 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWork/MVVM_36_ComToolKtSavesWork.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWork/MVVM_36_ComToolKtSavesWork.csproj @@ -8,7 +8,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWork/MVVM_36_ComToolKtSavesWork_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWork/MVVM_36_ComToolKtSavesWork_net.csproj index a72f56fd8..005243115 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWork/MVVM_36_ComToolKtSavesWork_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWork/MVVM_36_ComToolKtSavesWork_net.csproj @@ -14,7 +14,7 @@ $(TargetFrameworks);net10.0-windows - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWorkTests/MVVM_36_ComToolKtSavesWorkTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWorkTests/MVVM_36_ComToolKtSavesWorkTests.csproj index f5fa918b2..46f57db6b 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWorkTests/MVVM_36_ComToolKtSavesWorkTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWorkTests/MVVM_36_ComToolKtSavesWorkTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWorkTests/MVVM_36_ComToolKtSavesWork_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWorkTests/MVVM_36_ComToolKtSavesWork_netTests.csproj index 0e749f566..18f6a9cdc 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWorkTests/MVVM_36_ComToolKtSavesWork_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_36_ComToolKtSavesWorkTests/MVVM_36_ComToolKtSavesWork_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_37_TreeView/MVVM_37_TreeView.csproj b/CSharpBible/MVVM_Tutorial/MVVM_37_TreeView/MVVM_37_TreeView.csproj index 6869499f0..2a8eca84a 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_37_TreeView/MVVM_37_TreeView.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_37_TreeView/MVVM_37_TreeView.csproj @@ -12,8 +12,8 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_37_TreeView/MVVM_37_TreeView_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_37_TreeView/MVVM_37_TreeView_net.csproj index d15636a3d..fc49dd2a0 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_37_TreeView/MVVM_37_TreeView_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_37_TreeView/MVVM_37_TreeView_net.csproj @@ -14,8 +14,8 @@ $(TargetFrameworks);net10.0-windows - - + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_37_TreeViewTests/MVVM_37_TreeViewTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_37_TreeViewTests/MVVM_37_TreeViewTests.csproj index 55693ff25..5bc71e553 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_37_TreeViewTests/MVVM_37_TreeViewTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_37_TreeViewTests/MVVM_37_TreeViewTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_37_TreeViewTests/MVVM_37_TreeView_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_37_TreeViewTests/MVVM_37_TreeView_netTests.csproj index 17943e71e..905c79d62 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_37_TreeViewTests/MVVM_37_TreeView_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_37_TreeViewTests/MVVM_37_TreeView_netTests.csproj @@ -14,9 +14,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjection/MVVM_38_CTDependencyInjection.csproj b/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjection/MVVM_38_CTDependencyInjection.csproj index 3c7481f47..5e4467243 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjection/MVVM_38_CTDependencyInjection.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjection/MVVM_38_CTDependencyInjection.csproj @@ -8,7 +8,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjection/MVVM_38_CTDependencyInjection_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjection/MVVM_38_CTDependencyInjection_net.csproj index e9f634db4..1cc071f2c 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjection/MVVM_38_CTDependencyInjection_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjection/MVVM_38_CTDependencyInjection_net.csproj @@ -14,7 +14,7 @@ $(TargetFrameworks);net10.0-windows - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjectionTests/MVVM_38_CTDependencyInjectionTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjectionTests/MVVM_38_CTDependencyInjectionTests.csproj index 8362eebe9..edcf9ccdc 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjectionTests/MVVM_38_CTDependencyInjectionTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjectionTests/MVVM_38_CTDependencyInjectionTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjectionTests/MVVM_38_CTDependencyInjection_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjectionTests/MVVM_38_CTDependencyInjection_netTests.csproj index 119b941e9..a379bac56 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjectionTests/MVVM_38_CTDependencyInjection_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_38_CTDependencyInjectionTests/MVVM_38_CTDependencyInjection_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTest/MVVM_39_MultiModelTest.csproj b/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTest/MVVM_39_MultiModelTest.csproj index de94dd1e8..bcf1b6e63 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTest/MVVM_39_MultiModelTest.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTest/MVVM_39_MultiModelTest.csproj @@ -8,7 +8,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTest/MVVM_39_MultiModelTest_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTest/MVVM_39_MultiModelTest_net.csproj index 6f1de9401..04dd5ee11 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTest/MVVM_39_MultiModelTest_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTest/MVVM_39_MultiModelTest_net.csproj @@ -14,7 +14,7 @@ $(TargetFrameworks);net10.0-windows - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTestTests/MVVM_39_MultiModelTestTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTestTests/MVVM_39_MultiModelTestTests.csproj index 2c95ba9a5..947224dfe 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTestTests/MVVM_39_MultiModelTestTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTestTests/MVVM_39_MultiModelTestTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTestTests/MVVM_39_MultiModelTest_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTestTests/MVVM_39_MultiModelTest_netTests.csproj index fae8b29e7..b2c947c22 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTestTests/MVVM_39_MultiModelTest_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_39_MultiModelTestTests/MVVM_39_MultiModelTest_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_40_Wizzard/MVVM_40_Wizzard.csproj b/CSharpBible/MVVM_Tutorial/MVVM_40_Wizzard/MVVM_40_Wizzard.csproj index 23d428f83..d359905dd 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_40_Wizzard/MVVM_40_Wizzard.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_40_Wizzard/MVVM_40_Wizzard.csproj @@ -20,7 +20,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_40_Wizzard/MVVM_40_Wizzard_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_40_Wizzard/MVVM_40_Wizzard_net.csproj index 853708582..14944939e 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_40_Wizzard/MVVM_40_Wizzard_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_40_Wizzard/MVVM_40_Wizzard_net.csproj @@ -22,7 +22,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/MVVM_40_WizzardTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/MVVM_40_WizzardTests.csproj index b9303a2d6..970204376 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/MVVM_40_WizzardTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/MVVM_40_WizzardTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/MVVM_40_Wizzard_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/MVVM_40_Wizzard_netTests.csproj index ea014dc80..e9a14a578 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/MVVM_40_Wizzard_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/MVVM_40_Wizzard_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/ViewModels/Page1ViewModelTests.cs b/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/ViewModels/Page1ViewModelTests.cs index e143a84cd..ff1856d14 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/ViewModels/Page1ViewModelTests.cs +++ b/CSharpBible/MVVM_Tutorial/MVVM_40_WizzardTests/ViewModels/Page1ViewModelTests.cs @@ -24,6 +24,7 @@ using MVVM_40_Wizzard.Models.Interfaces; using static BaseLib.Helper.TestHelper; using System.Globalization; +using CommunityToolkit.Mvvm.Messaging; /// /// The Tests namespace. @@ -40,6 +41,7 @@ public class Page1ViewModelTests:BaseTestViewModel { private const string csMainSel = "MainSelection{0}"; private IWizzardModel? _model; + private IMessenger? _messenger; #pragma warning disable CS8618 // Ein Non-Nullable-Feld muss beim Beenden des Konstruktors einen Wert ungleich NULL enthalten. Erwägen Sie die Deklaration als Nullable. private CultureInfo _cc; #pragma warning restore CS8618 // Ein Non-Nullable-Feld muss beim Beenden des Konstruktors einen Wert ungleich NULL enthalten. Erwägen Sie die Deklaration als Nullable. @@ -54,6 +56,7 @@ public override void Init() IoC.GetReqSrv=(t)=>t switch { Type _t when _t == typeof(IWizzardModel) => _model ??= Substitute.For(), + Type _t when _t == typeof(IMessenger) => _messenger ??= Substitute.For(), _ => throw new NotImplementedException($"No setup for type {t} in IoC") }; base.Init(); diff --git a/CSharpBible/MVVM_Tutorial/MVVM_41_Sudoku/MVVM_41_Sudoku.csproj b/CSharpBible/MVVM_Tutorial/MVVM_41_Sudoku/MVVM_41_Sudoku.csproj index ba8ab394c..e5088fdde 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_41_Sudoku/MVVM_41_Sudoku.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_41_Sudoku/MVVM_41_Sudoku.csproj @@ -11,7 +11,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_41_Sudoku/MVVM_41_Sudoku_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_41_Sudoku/MVVM_41_Sudoku_net.csproj index 64e1992e8..abcbd9dcb 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_41_Sudoku/MVVM_41_Sudoku_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_41_Sudoku/MVVM_41_Sudoku_net.csproj @@ -19,7 +19,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_41_SudokuTests/MVVM_41_SudokuTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_41_SudokuTests/MVVM_41_SudokuTests.csproj index 29135105e..1ec679375 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_41_SudokuTests/MVVM_41_SudokuTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_41_SudokuTests/MVVM_41_SudokuTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_41_SudokuTests/MVVM_41_Sudoku_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_41_SudokuTests/MVVM_41_Sudoku_netTests.csproj index e1c6519cb..be49c2ab0 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_41_SudokuTests/MVVM_41_Sudoku_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_41_SudokuTests/MVVM_41_Sudoku_netTests.csproj @@ -16,9 +16,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_42_3DView.sln b/CSharpBible/MVVM_Tutorial/MVVM_42_3DView.sln new file mode 100644 index 000000000..4e6b76195 --- /dev/null +++ b/CSharpBible/MVVM_Tutorial/MVVM_42_3DView.sln @@ -0,0 +1,82 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 18 +VisualStudioVersion = 18.2.11415.280 d18.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Projektmappenelemente", "Projektmappenelemente", "{658BD492-33FF-4995-AAE7-4F6894E92F0C}" + ProjectSection(SolutionItems) = preProject + MVVM_Tutorial.props = MVVM_Tutorial.props + MVVM_Tutorial_net.props = MVVM_Tutorial_net.props + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MVVM_BaseLib", "..\Libraries\MVVM_BaseLib\MVVM_BaseLib.csproj", "{890CF504-3814-443B-9EE6-E8BCACF68203}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{AF041458-CF94-4D6D-BB0F-8BC50F4F099C}" + ProjectSection(SolutionItems) = preProject + ..\Libraries\Libraries_net.props = ..\Libraries\Libraries_net.props + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MVVM_BaseLibTests", "..\Libraries\MVVM_BaseLibTests\MVVM_BaseLibTests.csproj", "{66EB60F2-523D-47C8-95EA-C7E10759E239}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVM_42_3DView", "MVVM_42_3DView\MVVM_42_3DView.csproj", "{03610EB8-51A0-BFAB-D8A6-DE2339E8425D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVM_42_3DView _net", "MVVM_42_3DView\MVVM_42_3DView _net.csproj", "{61994990-80FA-86EC-4AA8-F81C6DAA30CD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVM_42a_3DView", "MVVM_42a_3DView\MVVM_42a_3DView.csproj", "{7D0E4FF3-478E-D8E5-DDC6-D118D3DB0C49}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVM_42a_3DView_net", "MVVM_42a_3DView\MVVM_42a_3DView_net.csproj", "{E082775F-8D6B-CF9C-350E-C8FE3A49C519}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVM_42b_3DView", "MVVM_42b_3DView\MVVM_42b_3DView.csproj", "{AD151734-FEE4-8025-BDD0-31A0495F2C4A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVM_42b_3DView_net", "MVVM_42b_3DView\MVVM_42b_3DView_net.csproj", "{86B0CDD6-2DEE-3323-839A-C3907CEB2596}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {890CF504-3814-443B-9EE6-E8BCACF68203}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {890CF504-3814-443B-9EE6-E8BCACF68203}.Debug|Any CPU.Build.0 = Debug|Any CPU + {890CF504-3814-443B-9EE6-E8BCACF68203}.Release|Any CPU.ActiveCfg = Release|Any CPU + {890CF504-3814-443B-9EE6-E8BCACF68203}.Release|Any CPU.Build.0 = Release|Any CPU + {66EB60F2-523D-47C8-95EA-C7E10759E239}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {66EB60F2-523D-47C8-95EA-C7E10759E239}.Debug|Any CPU.Build.0 = Debug|Any CPU + {66EB60F2-523D-47C8-95EA-C7E10759E239}.Release|Any CPU.ActiveCfg = Release|Any CPU + {66EB60F2-523D-47C8-95EA-C7E10759E239}.Release|Any CPU.Build.0 = Release|Any CPU + {03610EB8-51A0-BFAB-D8A6-DE2339E8425D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03610EB8-51A0-BFAB-D8A6-DE2339E8425D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03610EB8-51A0-BFAB-D8A6-DE2339E8425D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03610EB8-51A0-BFAB-D8A6-DE2339E8425D}.Release|Any CPU.Build.0 = Release|Any CPU + {61994990-80FA-86EC-4AA8-F81C6DAA30CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61994990-80FA-86EC-4AA8-F81C6DAA30CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61994990-80FA-86EC-4AA8-F81C6DAA30CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {61994990-80FA-86EC-4AA8-F81C6DAA30CD}.Release|Any CPU.Build.0 = Release|Any CPU + {7D0E4FF3-478E-D8E5-DDC6-D118D3DB0C49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7D0E4FF3-478E-D8E5-DDC6-D118D3DB0C49}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7D0E4FF3-478E-D8E5-DDC6-D118D3DB0C49}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7D0E4FF3-478E-D8E5-DDC6-D118D3DB0C49}.Release|Any CPU.Build.0 = Release|Any CPU + {E082775F-8D6B-CF9C-350E-C8FE3A49C519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E082775F-8D6B-CF9C-350E-C8FE3A49C519}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E082775F-8D6B-CF9C-350E-C8FE3A49C519}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E082775F-8D6B-CF9C-350E-C8FE3A49C519}.Release|Any CPU.Build.0 = Release|Any CPU + {AD151734-FEE4-8025-BDD0-31A0495F2C4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AD151734-FEE4-8025-BDD0-31A0495F2C4A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AD151734-FEE4-8025-BDD0-31A0495F2C4A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AD151734-FEE4-8025-BDD0-31A0495F2C4A}.Release|Any CPU.Build.0 = Release|Any CPU + {86B0CDD6-2DEE-3323-839A-C3907CEB2596}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {86B0CDD6-2DEE-3323-839A-C3907CEB2596}.Debug|Any CPU.Build.0 = Debug|Any CPU + {86B0CDD6-2DEE-3323-839A-C3907CEB2596}.Release|Any CPU.ActiveCfg = Release|Any CPU + {86B0CDD6-2DEE-3323-839A-C3907CEB2596}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {890CF504-3814-443B-9EE6-E8BCACF68203} = {AF041458-CF94-4D6D-BB0F-8BC50F4F099C} + {66EB60F2-523D-47C8-95EA-C7E10759E239} = {AF041458-CF94-4D6D-BB0F-8BC50F4F099C} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FDFAA7DD-8D69-4264-A5D4-C3AEBBD82D25} + EndGlobalSection +EndGlobal diff --git a/CSharpBible/MVVM_Tutorial/MVVM_42_3DView/MVVM_42_3DView _net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_42_3DView/MVVM_42_3DView _net.csproj index 7f700a0e9..85d98095a 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_42_3DView/MVVM_42_3DView _net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_42_3DView/MVVM_42_3DView _net.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_42_3DView/MVVM_42_3DView.csproj b/CSharpBible/MVVM_Tutorial/MVVM_42_3DView/MVVM_42_3DView.csproj index a5f7107a4..400139901 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_42_3DView/MVVM_42_3DView.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_42_3DView/MVVM_42_3DView.csproj @@ -8,9 +8,9 @@ - - - + + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_42a_3DView/MVVM_42a_3DView.csproj b/CSharpBible/MVVM_Tutorial/MVVM_42a_3DView/MVVM_42a_3DView.csproj index a5f7107a4..400139901 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_42a_3DView/MVVM_42a_3DView.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_42a_3DView/MVVM_42a_3DView.csproj @@ -8,9 +8,9 @@ - - - + + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_42a_3DView/MVVM_42a_3DView_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_42a_3DView/MVVM_42a_3DView_net.csproj index e68c33b6f..b269cff1a 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_42a_3DView/MVVM_42a_3DView_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_42a_3DView/MVVM_42a_3DView_net.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/App.xaml b/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/App.xaml index bb5022d3a..d19011109 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/App.xaml +++ b/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/App.xaml @@ -1,9 +1,8 @@ - - - - + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/MVVM_42b_3DView.csproj b/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/MVVM_42b_3DView.csproj index a5f7107a4..400139901 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/MVVM_42b_3DView.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/MVVM_42b_3DView.csproj @@ -8,9 +8,9 @@ - - - + + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/MVVM_42b_3DView_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/MVVM_42b_3DView_net.csproj index 07a9491ec..90a52f569 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/MVVM_42b_3DView_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_42b_3DView/MVVM_42b_3DView_net.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssue/MVVM_99_SomeIssue.csproj b/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssue/MVVM_99_SomeIssue.csproj index 3c7481f47..5e4467243 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssue/MVVM_99_SomeIssue.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssue/MVVM_99_SomeIssue.csproj @@ -8,7 +8,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssue/MVVM_99_SomeIssue_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssue/MVVM_99_SomeIssue_net.csproj index e66af3510..5256844ca 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssue/MVVM_99_SomeIssue_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssue/MVVM_99_SomeIssue_net.csproj @@ -14,7 +14,7 @@ $(TargetFrameworks);net10.0-windows - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssueTests/MVVM_99_SomeIssueTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssueTests/MVVM_99_SomeIssueTests.csproj index 2b1525f20..4d264360a 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssueTests/MVVM_99_SomeIssueTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssueTests/MVVM_99_SomeIssueTests.csproj @@ -12,9 +12,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssueTests/MVVM_99_SomeIssue_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssueTests/MVVM_99_SomeIssue_netTests.csproj index c5898dac7..11bbecaaa 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssueTests/MVVM_99_SomeIssue_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_99_SomeIssueTests/MVVM_99_SomeIssue_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_AllExamples/MVVM_AllExamples.csproj b/CSharpBible/MVVM_Tutorial/MVVM_AllExamples/MVVM_AllExamples.csproj index 997f50261..906f26911 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_AllExamples/MVVM_AllExamples.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_AllExamples/MVVM_AllExamples.csproj @@ -8,7 +8,7 @@ - + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_AllExamples/MVVM_AllExamples_net.csproj b/CSharpBible/MVVM_Tutorial/MVVM_AllExamples/MVVM_AllExamples_net.csproj index 04e564294..630ecf517 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_AllExamples/MVVM_AllExamples_net.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_AllExamples/MVVM_AllExamples_net.csproj @@ -14,8 +14,8 @@ $(TargetFrameworks);net10.0-windows - - + + diff --git a/CSharpBible/MVVM_Tutorial/MVVM_AllExamplesTests/MVVM_AllExamplesTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_AllExamplesTests/MVVM_AllExamplesTests.csproj index 559fa4764..4cab9d4ab 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_AllExamplesTests/MVVM_AllExamplesTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_AllExamplesTests/MVVM_AllExamplesTests.csproj @@ -9,9 +9,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/MVVM_AllExamplesTests/MVVM_AllExamples_netTests.csproj b/CSharpBible/MVVM_Tutorial/MVVM_AllExamplesTests/MVVM_AllExamples_netTests.csproj index f0aaf08d8..c2ea54644 100644 --- a/CSharpBible/MVVM_Tutorial/MVVM_AllExamplesTests/MVVM_AllExamples_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/MVVM_AllExamplesTests/MVVM_AllExamples_netTests.csproj @@ -15,9 +15,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/WpfAppTests/WpfAppTests.csproj b/CSharpBible/MVVM_Tutorial/WpfAppTests/WpfAppTests.csproj index 1ff84c892..5992556ae 100644 --- a/CSharpBible/MVVM_Tutorial/WpfAppTests/WpfAppTests.csproj +++ b/CSharpBible/MVVM_Tutorial/WpfAppTests/WpfAppTests.csproj @@ -8,9 +8,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/MVVM_Tutorial/WpfAppTests/WpfApp_netTests.csproj b/CSharpBible/MVVM_Tutorial/WpfAppTests/WpfApp_netTests.csproj index ccda57ad7..1096b0747 100644 --- a/CSharpBible/MVVM_Tutorial/WpfAppTests/WpfApp_netTests.csproj +++ b/CSharpBible/MVVM_Tutorial/WpfAppTests/WpfApp_netTests.csproj @@ -14,9 +14,9 @@ $(TargetFrameworks);net10.0-windows - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Patterns_Tutorial/Pattern_00_Template/Pattern_00_Template.csproj b/CSharpBible/Patterns_Tutorial/Pattern_00_Template/Pattern_00_Template.csproj index 120d8328d..4612eb91c 100644 --- a/CSharpBible/Patterns_Tutorial/Pattern_00_Template/Pattern_00_Template.csproj +++ b/CSharpBible/Patterns_Tutorial/Pattern_00_Template/Pattern_00_Template.csproj @@ -15,7 +15,7 @@ - + diff --git a/CSharpBible/Patterns_Tutorial/Pattern_00_TemplateTests/Pattern_00_TemplateTests.csproj b/CSharpBible/Patterns_Tutorial/Pattern_00_TemplateTests/Pattern_00_TemplateTests.csproj index 77c7ceebf..a2cb71ff5 100644 --- a/CSharpBible/Patterns_Tutorial/Pattern_00_TemplateTests/Pattern_00_TemplateTests.csproj +++ b/CSharpBible/Patterns_Tutorial/Pattern_00_TemplateTests/Pattern_00_TemplateTests.csproj @@ -13,9 +13,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Patterns_Tutorial/Pattern_01_SingletonTests/Pattern_01_SingletonTests.csproj b/CSharpBible/Patterns_Tutorial/Pattern_01_SingletonTests/Pattern_01_SingletonTests.csproj index 44a4bad63..75b1c4af6 100644 --- a/CSharpBible/Patterns_Tutorial/Pattern_01_SingletonTests/Pattern_01_SingletonTests.csproj +++ b/CSharpBible/Patterns_Tutorial/Pattern_01_SingletonTests/Pattern_01_SingletonTests.csproj @@ -13,9 +13,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Patterns_Tutorial/Pattern_02_ObserverTests/Pattern_02_ObserverTests.csproj b/CSharpBible/Patterns_Tutorial/Pattern_02_ObserverTests/Pattern_02_ObserverTests.csproj index a09f1c069..ba6b83e4e 100644 --- a/CSharpBible/Patterns_Tutorial/Pattern_02_ObserverTests/Pattern_02_ObserverTests.csproj +++ b/CSharpBible/Patterns_Tutorial/Pattern_02_ObserverTests/Pattern_02_ObserverTests.csproj @@ -13,9 +13,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/SomeThing/QuineTest/QuineTest.csproj b/CSharpBible/SomeThing/QuineTest/QuineTest.csproj index 58a7d48e8..3048d1f55 100644 --- a/CSharpBible/SomeThing/QuineTest/QuineTest.csproj +++ b/CSharpBible/SomeThing/QuineTest/QuineTest.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/CSharpBible/SomeThing/SomeThing2Tests/SomeThing2Tests.csproj b/CSharpBible/SomeThing/SomeThing2Tests/SomeThing2Tests.csproj index 487db2ebb..5320e54d1 100644 --- a/CSharpBible/SomeThing/SomeThing2Tests/SomeThing2Tests.csproj +++ b/CSharpBible/SomeThing/SomeThing2Tests/SomeThing2Tests.csproj @@ -10,9 +10,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/SomeThing/SomeThing2aTests/SomeThing2aTests.csproj b/CSharpBible/SomeThing/SomeThing2aTests/SomeThing2aTests.csproj index 9ebb563f9..de42129fe 100644 --- a/CSharpBible/SomeThing/SomeThing2aTests/SomeThing2aTests.csproj +++ b/CSharpBible/SomeThing/SomeThing2aTests/SomeThing2aTests.csproj @@ -10,9 +10,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/Tests/Test.csproj b/CSharpBible/Tests/Test.csproj index ca267f37d..c6338e43d 100644 --- a/CSharpBible/Tests/Test.csproj +++ b/CSharpBible/Tests/Test.csproj @@ -11,9 +11,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CSharpBible/WPFSamples_2/Styles_and_Templates/WPF_ContentControlStyle/WPF_ContentControlStyle.csproj b/CSharpBible/WPFSamples_2/Styles_and_Templates/WPF_ContentControlStyle/WPF_ContentControlStyle.csproj index ba2681dc1..c8bf461c4 100644 --- a/CSharpBible/WPFSamples_2/Styles_and_Templates/WPF_ContentControlStyle/WPF_ContentControlStyle.csproj +++ b/CSharpBible/WPFSamples_2/Styles_and_Templates/WPF_ContentControlStyle/WPF_ContentControlStyle.csproj @@ -55,9 +55,10 @@ - - - + + + + diff --git a/GenFreeWin/MdbBrowser/MdbBrowser.csproj b/GenFreeWin/MdbBrowser/MdbBrowser.csproj index 0bfa4376e..69be7b54f 100644 --- a/GenFreeWin/MdbBrowser/MdbBrowser.csproj +++ b/GenFreeWin/MdbBrowser/MdbBrowser.csproj @@ -20,10 +20,10 @@ - - - - + + + + diff --git a/GenFreeWin/MdbBrowserTests/MdbBrowserTests.csproj b/GenFreeWin/MdbBrowserTests/MdbBrowserTests.csproj index d71abd1bc..8b2e8dca0 100644 --- a/GenFreeWin/MdbBrowserTests/MdbBrowserTests.csproj +++ b/GenFreeWin/MdbBrowserTests/MdbBrowserTests.csproj @@ -18,9 +18,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/GenFreeWin/PlaceAuthorityConsoleDemo/PlaceAuthorityConsoleDemo.csproj b/GenFreeWin/PlaceAuthorityConsoleDemo/PlaceAuthorityConsoleDemo.csproj index c0797af5a..7f7333367 100644 --- a/GenFreeWin/PlaceAuthorityConsoleDemo/PlaceAuthorityConsoleDemo.csproj +++ b/GenFreeWin/PlaceAuthorityConsoleDemo/PlaceAuthorityConsoleDemo.csproj @@ -11,7 +11,7 @@ - - + + diff --git a/GenFreeWin/VBUnObfusicator/VBUnObfusicator.csproj b/GenFreeWin/VBUnObfusicator/VBUnObfusicator.csproj index 04841d50f..c8e9bab89 100644 --- a/GenFreeWin/VBUnObfusicator/VBUnObfusicator.csproj +++ b/GenFreeWin/VBUnObfusicator/VBUnObfusicator.csproj @@ -22,9 +22,9 @@ - - - + + + diff --git a/GenFreeWin/VBUnObfusicatorTests/VBUnObfusicatorTests.csproj b/GenFreeWin/VBUnObfusicatorTests/VBUnObfusicatorTests.csproj index 4568962c6..99034f930 100644 --- a/GenFreeWin/VBUnObfusicatorTests/VBUnObfusicatorTests.csproj +++ b/GenFreeWin/VBUnObfusicatorTests/VBUnObfusicatorTests.csproj @@ -23,14 +23,14 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/TestStatements/AppWithPlugin/AppWithPlugin.csproj b/TestStatements/AppWithPlugin/AppWithPlugin.csproj index c968f411e..fbdcc3d35 100644 --- a/TestStatements/AppWithPlugin/AppWithPlugin.csproj +++ b/TestStatements/AppWithPlugin/AppWithPlugin.csproj @@ -18,10 +18,10 @@ - - - - + + + + diff --git a/TestStatements/AppWithPluginTest/AppWithPluginTest.csproj b/TestStatements/AppWithPluginTest/AppWithPluginTest.csproj index a0e26dc06..3cddb82ae 100644 --- a/TestStatements/AppWithPluginTest/AppWithPluginTest.csproj +++ b/TestStatements/AppWithPluginTest/AppWithPluginTest.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/TestStatements/AppWithPluginWpf/AppWithPluginWpf.csproj b/TestStatements/AppWithPluginWpf/AppWithPluginWpf.csproj index b8396bfe1..089452110 100644 --- a/TestStatements/AppWithPluginWpf/AppWithPluginWpf.csproj +++ b/TestStatements/AppWithPluginWpf/AppWithPluginWpf.csproj @@ -16,11 +16,11 @@ $(DefineConstants);SIGNED_BUILD - - - - - + + + + + diff --git a/TestStatements/ConsoleDI.Example/ConsoleDI.Example.csproj b/TestStatements/ConsoleDI.Example/ConsoleDI.Example.csproj index 8cd6fd19f..2b7a94fb6 100644 --- a/TestStatements/ConsoleDI.Example/ConsoleDI.Example.csproj +++ b/TestStatements/ConsoleDI.Example/ConsoleDI.Example.csproj @@ -11,8 +11,8 @@ - - + + diff --git a/TestStatements/HelloPlugin/HelloPlugin.csproj b/TestStatements/HelloPlugin/HelloPlugin.csproj index 3ae5e9e9d..6125cf79c 100644 --- a/TestStatements/HelloPlugin/HelloPlugin.csproj +++ b/TestStatements/HelloPlugin/HelloPlugin.csproj @@ -19,7 +19,7 @@ - + diff --git a/TestStatements/HelloPluginTest/HelloPluginTest.csproj b/TestStatements/HelloPluginTest/HelloPluginTest.csproj index 254a4b7c5..817ddbdf9 100644 --- a/TestStatements/HelloPluginTest/HelloPluginTest.csproj +++ b/TestStatements/HelloPluginTest/HelloPluginTest.csproj @@ -11,10 +11,10 @@ - - - - + + + + diff --git a/TestStatements/OtherPlugin/OtherPlugin.csproj b/TestStatements/OtherPlugin/OtherPlugin.csproj index 4fb38ca7e..de5455086 100644 --- a/TestStatements/OtherPlugin/OtherPlugin.csproj +++ b/TestStatements/OtherPlugin/OtherPlugin.csproj @@ -15,7 +15,7 @@ ..\snKey.snk - + diff --git a/TestStatements/PluginBase/PluginBase.csproj b/TestStatements/PluginBase/PluginBase.csproj index e504a89f5..76c4d01d1 100644 --- a/TestStatements/PluginBase/PluginBase.csproj +++ b/TestStatements/PluginBase/PluginBase.csproj @@ -20,6 +20,6 @@ - + \ No newline at end of file diff --git a/TestStatements/TestGJKAlgTest/TestGJKAlgTest.csproj b/TestStatements/TestGJKAlgTest/TestGJKAlgTest.csproj index 1d9cd6f6a..0e08213c1 100644 --- a/TestStatements/TestGJKAlgTest/TestGJKAlgTest.csproj +++ b/TestStatements/TestGJKAlgTest/TestGJKAlgTest.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/TestStatements/TestStatements/TestStatements.csproj b/TestStatements/TestStatements/TestStatements.csproj index b49ecc389..3557228da 100644 --- a/TestStatements/TestStatements/TestStatements.csproj +++ b/TestStatements/TestStatements/TestStatements.csproj @@ -56,10 +56,10 @@ - + - - + + diff --git a/TestStatements/TestStatements/TestStatements_net.csproj b/TestStatements/TestStatements/TestStatements_net.csproj index d894e4942..7685cf79c 100644 --- a/TestStatements/TestStatements/TestStatements_net.csproj +++ b/TestStatements/TestStatements/TestStatements_net.csproj @@ -56,9 +56,9 @@ - - - + + + diff --git a/TestStatements/TestStatementsTest/TestStatementsTest.csproj b/TestStatements/TestStatementsTest/TestStatementsTest.csproj index e38d8ee09..a7c4458c0 100644 --- a/TestStatements/TestStatementsTest/TestStatementsTest.csproj +++ b/TestStatements/TestStatementsTest/TestStatementsTest.csproj @@ -31,9 +31,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/TestStatements/TestStatementsTest/TestStatements_netTest.csproj b/TestStatements/TestStatementsTest/TestStatements_netTest.csproj index 016171162..e489d2227 100644 --- a/TestStatements/TestStatementsTest/TestStatements_netTest.csproj +++ b/TestStatements/TestStatementsTest/TestStatements_netTest.csproj @@ -32,9 +32,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Transpiler_pp/Analyzer1/Analyzer1.CodeFixes/Analyzer1.CodeFixes.csproj b/Transpiler_pp/Analyzer1/Analyzer1.CodeFixes/Analyzer1.CodeFixes.csproj index 23ffa980a..78a71e17d 100644 --- a/Transpiler_pp/Analyzer1/Analyzer1.CodeFixes/Analyzer1.CodeFixes.csproj +++ b/Transpiler_pp/Analyzer1/Analyzer1.CodeFixes/Analyzer1.CodeFixes.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -7,7 +7,7 @@ - + diff --git a/Transpiler_pp/Analyzer1/Analyzer1.Test/Analyzer1.Test.csproj b/Transpiler_pp/Analyzer1/Analyzer1.Test/Analyzer1.Test.csproj index 1a164cbc5..4a3382906 100644 --- a/Transpiler_pp/Analyzer1/Analyzer1.Test/Analyzer1.Test.csproj +++ b/Transpiler_pp/Analyzer1/Analyzer1.Test/Analyzer1.Test.csproj @@ -8,16 +8,16 @@ - - - + + + - + diff --git a/Transpiler_pp/Analyzer1/Analyzer1/Analyzer1.csproj b/Transpiler_pp/Analyzer1/Analyzer1/Analyzer1.csproj index f57f4112d..98f833629 100644 --- a/Transpiler_pp/Analyzer1/Analyzer1/Analyzer1.csproj +++ b/Transpiler_pp/Analyzer1/Analyzer1/Analyzer1.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -11,11 +11,11 @@ true - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Transpiler_pp/TranspilerLib.CSharp.Tests/TranspilerLib.CSharp.Tests.csproj b/Transpiler_pp/TranspilerLib.CSharp.Tests/TranspilerLib.CSharp.Tests.csproj index fd126c1bc..5718b8ebc 100644 --- a/Transpiler_pp/TranspilerLib.CSharp.Tests/TranspilerLib.CSharp.Tests.csproj +++ b/Transpiler_pp/TranspilerLib.CSharp.Tests/TranspilerLib.CSharp.Tests.csproj @@ -20,12 +20,12 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/Transpiler_pp/TranspilerLib.DriveBASIC.Tests/Models/DriveCompilerTests.cs b/Transpiler_pp/TranspilerLib.DriveBASIC.Tests/Models/DriveCompilerTests.cs index f231fcf9c..17f0e5a74 100644 --- a/Transpiler_pp/TranspilerLib.DriveBASIC.Tests/Models/DriveCompilerTests.cs +++ b/Transpiler_pp/TranspilerLib.DriveBASIC.Tests/Models/DriveCompilerTests.cs @@ -661,7 +661,9 @@ private string InvokeBuildCommand(object? parseTree, IList tokenB var method = typeof(DriveBasic).GetMethod("BuildCommand", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public) ?? throw new InvalidOperationException("BuildCommand method not found."); - var arguments = new object?[] { parseTree, tokenBuffer, level, pc, string.Empty }; + var treeArg = parseTree is string ? new List>() : parseTree; + + var arguments = new object?[] { treeArg, tokenBuffer, level, pc, string.Empty }; var result = method.Invoke(FCompiler, arguments); errorText = arguments[4] as string ?? string.Empty; return result?.ToString() ?? string.Empty; diff --git a/Transpiler_pp/TranspilerLib.DriveBASIC.Tests/TranspilerLib.DriveBASIC.Tests.csproj b/Transpiler_pp/TranspilerLib.DriveBASIC.Tests/TranspilerLib.DriveBASIC.Tests.csproj index 2d467471a..58b56ead6 100644 --- a/Transpiler_pp/TranspilerLib.DriveBASIC.Tests/TranspilerLib.DriveBASIC.Tests.csproj +++ b/Transpiler_pp/TranspilerLib.DriveBASIC.Tests/TranspilerLib.DriveBASIC.Tests.csproj @@ -20,12 +20,12 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/Transpiler_pp/TranspilerLib.DriveBASIC/Models/DriveCompiler.Compile.cs b/Transpiler_pp/TranspilerLib.DriveBASIC/Models/DriveCompiler.Compile.cs index e0e0aeeb2..800f9ea47 100644 --- a/Transpiler_pp/TranspilerLib.DriveBASIC/Models/DriveCompiler.Compile.cs +++ b/Transpiler_pp/TranspilerLib.DriveBASIC/Models/DriveCompiler.Compile.cs @@ -16,6 +16,7 @@ public partial class Compiler private readonly Dictionary _variablesByName = new(StringComparer.OrdinalIgnoreCase); private readonly Dictionary _labelsByName = new(StringComparer.OrdinalIgnoreCase); private readonly Dictionary _messageNumbers = new(StringComparer.OrdinalIgnoreCase); + private readonly List _messagesList = new(); private readonly Dictionary _varMax = new(); private int _maxMessage; @@ -43,6 +44,7 @@ private void ResetStateForCompile() _variablesByName.Clear(); _labelsByName.Clear(); _messageNumbers.Clear(); + _messagesList.Clear(); foreach (EVarType type in Enum.GetValues(typeof(EVarType))) { _varMax[type] = 0; @@ -66,28 +68,16 @@ public bool Compile() if (_parent.Labels == null) { AppendLog(-1, StrLeeresLabelArray); - _parent.Labels = new List(); - } - else - { - _parent.Labels.Clear(); } if (_parent.Messages == null) { AppendLog(-1, StrLeeresMessageArray); - _parent.Messages = new List(); - } - else - { - //?? - _parent.Messages.Clear(); } if (_parent.Variables == null) { AppendLog(-1, StrKeinSystemVariab); - _parent.Variables = new List(); } ResetStateForCompile(); @@ -140,6 +130,14 @@ public bool Compile() } } + _parent.Labels = [.. _labelsByName.Values]; + + var vars = new List(_variablesByName.Values); + vars.Sort((a, b) => a.Index.CompareTo(b.Index)); + _parent.Variables = vars; + + _parent.Messages = [.. _messagesList]; + return true; } } diff --git a/Transpiler_pp/TranspilerLib.DriveBASIC/Models/DriveCompiler.Emit.cs b/Transpiler_pp/TranspilerLib.DriveBASIC/Models/DriveCompiler.Emit.cs index ee59586ae..4a7ee0f52 100644 --- a/Transpiler_pp/TranspilerLib.DriveBASIC/Models/DriveCompiler.Emit.cs +++ b/Transpiler_pp/TranspilerLib.DriveBASIC/Models/DriveCompiler.Emit.cs @@ -208,7 +208,14 @@ private BCErr HandleSystemPlaceholder(int placeholderIndex, object? rawValue, Co builder.Param1 = labelIndex >= 0 ? labelIndex : ushort.MaxValue; return BCErr.BC_OK; case 1: - builder.Param1 = GetMessageNumber(text); + if (builder.Token == EDriveToken.tt_Nop && builder.SubToken == 3) + { + GetMessageNumber(text, builder.Param1); + } + else + { + builder.Param1 = GetMessageNumber(text); + } return BCErr.BC_OK; case 2: builder.Param1 = GetVariableNumber(text); @@ -270,7 +277,6 @@ private CompilerLabel EnsureLabel(string labelName) { label = new CompilerLabel { Name = normalized }; _labelsByName[normalized] = label; - _parent.Labels.Add(label); } return label; } @@ -293,16 +299,19 @@ private int GetLabelIndex(string labelName, int destinationPc) return label.Index; } - private int GetMessageNumber(string text) + private int GetMessageNumber(string text, int? forcedId = null) { if (string.IsNullOrWhiteSpace(text)) return 0; var normalized = NormalizeIdentifier(text); if (!_messageNumbers.TryGetValue(normalized, out var number)) { - number = ++_maxMessage; + number = forcedId ?? ++_maxMessage; + if (forcedId.HasValue && forcedId.Value > _maxMessage) + _maxMessage = forcedId.Value; + _messageNumbers[normalized] = number; - _parent.Messages.Add(text.Trim()); + _messagesList.Add(text.Trim()); } return number; } @@ -344,22 +353,10 @@ private CompilerVariable EnsureVariableEntry(string displayName, EVarType type) Index = AllocateVarNo(type) }; _variablesByName[normalized] = variable; - InsertVariable(variable); } return variable; } - private void InsertVariable(CompilerVariable variable) - { - var list = _parent.Variables ??= new List(); - var insertIndex = 0; - while (insertIndex < list.Count && list[insertIndex].Index <= variable.Index) - { - insertIndex++; - } - list.Insert(insertIndex, variable); - } - private int AllocateVarNo(EVarType type) { var key = type switch diff --git a/Transpiler_pp/TranspilerLib.IEC.Tests/TranspilerLib.IEC.Tests.csproj b/Transpiler_pp/TranspilerLib.IEC.Tests/TranspilerLib.IEC.Tests.csproj index fb306da85..c2f9b939b 100644 --- a/Transpiler_pp/TranspilerLib.IEC.Tests/TranspilerLib.IEC.Tests.csproj +++ b/Transpiler_pp/TranspilerLib.IEC.Tests/TranspilerLib.IEC.Tests.csproj @@ -20,12 +20,12 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/Transpiler_pp/TranspilerLib.Pascal.Tests/TranspilerLib.Pascal.Tests.csproj b/Transpiler_pp/TranspilerLib.Pascal.Tests/TranspilerLib.Pascal.Tests.csproj index 6e787cf0a..3af65ca10 100644 --- a/Transpiler_pp/TranspilerLib.Pascal.Tests/TranspilerLib.Pascal.Tests.csproj +++ b/Transpiler_pp/TranspilerLib.Pascal.Tests/TranspilerLib.Pascal.Tests.csproj @@ -20,12 +20,12 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/Transpiler_pp/TranspilerLibTests/TranspilerLibTests.csproj b/Transpiler_pp/TranspilerLibTests/TranspilerLibTests.csproj index cdf270149..6a261503c 100644 --- a/Transpiler_pp/TranspilerLibTests/TranspilerLibTests.csproj +++ b/Transpiler_pp/TranspilerLibTests/TranspilerLibTests.csproj @@ -32,13 +32,13 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + diff --git a/Transpiler_pp/Trnsp.Show.Lfm.Tests/Trnsp.Show.Lfm.Tests.csproj b/Transpiler_pp/Trnsp.Show.Lfm.Tests/Trnsp.Show.Lfm.Tests.csproj index f9c66ef3a..471bc8d3f 100644 --- a/Transpiler_pp/Trnsp.Show.Lfm.Tests/Trnsp.Show.Lfm.Tests.csproj +++ b/Transpiler_pp/Trnsp.Show.Lfm.Tests/Trnsp.Show.Lfm.Tests.csproj @@ -15,8 +15,8 @@ $(TargetFrameworks);net10.0-windows - - + + diff --git a/Transpiler_pp/Trnsp.Show.Lfm/Trnsp.Show.Lfm.csproj b/Transpiler_pp/Trnsp.Show.Lfm/Trnsp.Show.Lfm.csproj index dec7162b7..7943bbfb2 100644 --- a/Transpiler_pp/Trnsp.Show.Lfm/Trnsp.Show.Lfm.csproj +++ b/Transpiler_pp/Trnsp.Show.Lfm/Trnsp.Show.Lfm.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/Transpiler_pp/Trnsp.Show.Pas.Tests/Trnsp.Show.Pas.Tests.csproj b/Transpiler_pp/Trnsp.Show.Pas.Tests/Trnsp.Show.Pas.Tests.csproj index 2e28becb1..ab421e875 100644 --- a/Transpiler_pp/Trnsp.Show.Pas.Tests/Trnsp.Show.Pas.Tests.csproj +++ b/Transpiler_pp/Trnsp.Show.Pas.Tests/Trnsp.Show.Pas.Tests.csproj @@ -15,8 +15,8 @@ $(TargetFrameworks);net10.0-windows - - + + diff --git a/Transpiler_pp/Trnsp.Show.Pas/Trnsp.Show.Pas.csproj b/Transpiler_pp/Trnsp.Show.Pas/Trnsp.Show.Pas.csproj index 03014a16c..aa01410f6 100644 --- a/Transpiler_pp/Trnsp.Show.Pas/Trnsp.Show.Pas.csproj +++ b/Transpiler_pp/Trnsp.Show.Pas/Trnsp.Show.Pas.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/WinAhnenNew/BaseGenClasses/BaseGenClasses.csproj b/WinAhnenNew/BaseGenClasses/BaseGenClasses.csproj index 186cdd85d..dae8221c2 100644 --- a/WinAhnenNew/BaseGenClasses/BaseGenClasses.csproj +++ b/WinAhnenNew/BaseGenClasses/BaseGenClasses.csproj @@ -18,7 +18,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/WinAhnenNew/BaseGenClassesTests/BaseGenClassesTests.csproj b/WinAhnenNew/BaseGenClassesTests/BaseGenClassesTests.csproj index 2058f2f20..93dafacf2 100644 --- a/WinAhnenNew/BaseGenClassesTests/BaseGenClassesTests.csproj +++ b/WinAhnenNew/BaseGenClassesTests/BaseGenClassesTests.csproj @@ -15,7 +15,7 @@ $(TargetFrameworks);net10.0 - + all diff --git a/WinAhnenNew/WinAhnenClsTests/WinAhnenClsTests.csproj b/WinAhnenNew/WinAhnenClsTests/WinAhnenClsTests.csproj index c248ae67f..a126a6571 100644 --- a/WinAhnenNew/WinAhnenClsTests/WinAhnenClsTests.csproj +++ b/WinAhnenNew/WinAhnenClsTests/WinAhnenClsTests.csproj @@ -17,13 +17,13 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - +