diff --git a/StoneRed.LogicSimulator.Api/Attributes/LogicGateDescriptionAttribute.cs b/StoneRed.LogicSimulator.Api/Attributes/LogicGateDescriptionAttribute.cs new file mode 100644 index 0000000..a65301d --- /dev/null +++ b/StoneRed.LogicSimulator.Api/Attributes/LogicGateDescriptionAttribute.cs @@ -0,0 +1,12 @@ +namespace StoneRed.LogicSimulator.Api.Attributes; + +[AttributeUsage(AttributeTargets.Class)] +public class LogicGateDescriptionAttribute : Attribute +{ + public string Description { get; } + + public LogicGateDescriptionAttribute(string description) + { + Description = description; + } +} \ No newline at end of file diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Attributes/LogicGateNameAttribute.cs b/StoneRed.LogicSimulator.Api/Attributes/LogicGateNameAttribute.cs similarity index 53% rename from StoneRed.LogicSimulator/Simulation/LogicGates/Attributes/LogicGateNameAttribute.cs rename to StoneRed.LogicSimulator.Api/Attributes/LogicGateNameAttribute.cs index b1c20bb..7b6710c 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Attributes/LogicGateNameAttribute.cs +++ b/StoneRed.LogicSimulator.Api/Attributes/LogicGateNameAttribute.cs @@ -1,9 +1,7 @@ -using System; - -namespace StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; +namespace StoneRed.LogicSimulator.Api.Attributes; [AttributeUsage(AttributeTargets.Class)] -internal class LogicGateNameAttribute : Attribute +public class LogicGateNameAttribute : Attribute { public string Name { get; } diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/IColorable.cs b/StoneRed.LogicSimulator.Api/Interfaces/IColorable.cs similarity index 59% rename from StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/IColorable.cs rename to StoneRed.LogicSimulator.Api/Interfaces/IColorable.cs index 82a5d34..8d412ae 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/IColorable.cs +++ b/StoneRed.LogicSimulator.Api/Interfaces/IColorable.cs @@ -1,6 +1,6 @@ using Microsoft.Xna.Framework; -namespace StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +namespace StoneRed.LogicSimulator.Api.Interfaces; internal interface IColorable { diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/IDrawable.cs b/StoneRed.LogicSimulator.Api/Interfaces/IDrawable.cs similarity index 61% rename from StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/IDrawable.cs rename to StoneRed.LogicSimulator.Api/Interfaces/IDrawable.cs index d5f4129..4257570 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/IDrawable.cs +++ b/StoneRed.LogicSimulator.Api/Interfaces/IDrawable.cs @@ -1,6 +1,6 @@ using Microsoft.Xna.Framework.Graphics; -namespace StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +namespace StoneRed.LogicSimulator.Api.Interfaces; internal interface IDrawable { diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/IInteractable.cs b/StoneRed.LogicSimulator.Api/Interfaces/IInteractable.cs similarity index 78% rename from StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/IInteractable.cs rename to StoneRed.LogicSimulator.Api/Interfaces/IInteractable.cs index c60ca95..3d5c084 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/IInteractable.cs +++ b/StoneRed.LogicSimulator.Api/Interfaces/IInteractable.cs @@ -1,6 +1,6 @@ using MonoGame.Extended.Input; -namespace StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +namespace StoneRed.LogicSimulator.Api.Interfaces; internal interface IInteractable { diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/LogicGate.cs b/StoneRed.LogicSimulator.Api/Interfaces/LogicGate.cs similarity index 96% rename from StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/LogicGate.cs rename to StoneRed.LogicSimulator.Api/Interfaces/LogicGate.cs index 5d0f261..0fd4ec9 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Interfaces/LogicGate.cs +++ b/StoneRed.LogicSimulator.Api/Interfaces/LogicGate.cs @@ -1,11 +1,8 @@ using Microsoft.Xna.Framework.Graphics; -using StoneRed.LogicSimulator.Utilities; +using StoneRed.LogicSimulator.Api.Utilities; -using System; -using System.Collections.Generic; - -namespace StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +namespace StoneRed.LogicSimulator.Api.Interfaces; #pragma warning disable S112 // General exceptions should never be thrown internal abstract class LogicGate diff --git a/StoneRed.LogicSimulator.Api/StoneRed.LogicSimulator.Api.csproj b/StoneRed.LogicSimulator.Api/StoneRed.LogicSimulator.Api.csproj new file mode 100644 index 0000000..d37b560 --- /dev/null +++ b/StoneRed.LogicSimulator.Api/StoneRed.LogicSimulator.Api.csproj @@ -0,0 +1,17 @@ + + + + net6.0 + enable + enable + + + + + + + + + + + diff --git a/StoneRed.LogicSimulator/Utilities/BitHelper.cs b/StoneRed.LogicSimulator.Api/Utilities/BitHelper.cs similarity index 91% rename from StoneRed.LogicSimulator/Utilities/BitHelper.cs rename to StoneRed.LogicSimulator.Api/Utilities/BitHelper.cs index 09e1df2..dc2bdc6 100644 --- a/StoneRed.LogicSimulator/Utilities/BitHelper.cs +++ b/StoneRed.LogicSimulator.Api/Utilities/BitHelper.cs @@ -1,6 +1,4 @@ -using System; - -namespace StoneRed.LogicSimulator.Utilities; +namespace StoneRed.LogicSimulator.Api.Utilities; #pragma warning disable S112 // General exceptions should never be thrown diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/LogicGateWorldData.cs b/StoneRed.LogicSimulator.Api/Utilities/LogicGateWorldData.cs similarity index 80% rename from StoneRed.LogicSimulator/Simulation/LogicGates/LogicGateWorldData.cs rename to StoneRed.LogicSimulator.Api/Utilities/LogicGateWorldData.cs index 369b4a7..60fd4d6 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/LogicGateWorldData.cs +++ b/StoneRed.LogicSimulator.Api/Utilities/LogicGateWorldData.cs @@ -1,6 +1,6 @@ using Microsoft.Xna.Framework; -namespace StoneRed.LogicSimulator.Simulation.LogicGates; +namespace StoneRed.LogicSimulator.Api.Utilities; internal record LogicGateWorldData { diff --git a/StoneRed.LogicSimulator.sln b/StoneRed.LogicSimulator.sln index 75354b2..9330d31 100644 --- a/StoneRed.LogicSimulator.sln +++ b/StoneRed.LogicSimulator.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.6.33815.320 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StoneRed.LogicSimulator", "StoneRed.LogicSimulator\StoneRed.LogicSimulator.csproj", "{7B259CCA-2947-4DF8-8252-7CF75FE39B8E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StoneRed.LogicSimulator", "StoneRed.LogicSimulator\StoneRed.LogicSimulator.csproj", "{7B259CCA-2947-4DF8-8252-7CF75FE39B8E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StoneRed.LogicSimulator.Api", "StoneRed.LogicSimulator.Api\StoneRed.LogicSimulator.Api.csproj", "{CD9C3C4D-4AF1-4A31-BDED-34CB91503B4C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,6 +17,10 @@ Global {7B259CCA-2947-4DF8-8252-7CF75FE39B8E}.Debug|Any CPU.Build.0 = Debug|Any CPU {7B259CCA-2947-4DF8-8252-7CF75FE39B8E}.Release|Any CPU.ActiveCfg = Release|Any CPU {7B259CCA-2947-4DF8-8252-7CF75FE39B8E}.Release|Any CPU.Build.0 = Release|Any CPU + {CD9C3C4D-4AF1-4A31-BDED-34CB91503B4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD9C3C4D-4AF1-4A31-BDED-34CB91503B4C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD9C3C4D-4AF1-4A31-BDED-34CB91503B4C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD9C3C4D-4AF1-4A31-BDED-34CB91503B4C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/StoneRed.LogicSimulator/Icon.bmp b/StoneRed.LogicSimulator/Icon.bmp index 76c228b..18feec8 100644 Binary files a/StoneRed.LogicSimulator/Icon.bmp and b/StoneRed.LogicSimulator/Icon.bmp differ diff --git a/StoneRed.LogicSimulator/Icon.ico b/StoneRed.LogicSimulator/Icon.ico index 5ad7016..79b6065 100644 Binary files a/StoneRed.LogicSimulator/Icon.ico and b/StoneRed.LogicSimulator/Icon.ico differ diff --git a/StoneRed.LogicSimulator/Simulation/LogicGateSimulator.cs b/StoneRed.LogicSimulator/Simulation/LogicGateSimulator.cs index ea34e65..2461a76 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGateSimulator.cs +++ b/StoneRed.LogicSimulator/Simulation/LogicGateSimulator.cs @@ -1,4 +1,4 @@ -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Interfaces; using System; using System.Collections.Concurrent; diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Attributes/LogicGateDescriptionAttribute.cs b/StoneRed.LogicSimulator/Simulation/LogicGates/Attributes/LogicGateDescriptionAttribute.cs deleted file mode 100644 index d614360..0000000 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Attributes/LogicGateDescriptionAttribute.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; - -namespace StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; - -[AttributeUsage(AttributeTargets.All)] -internal class LogicGateDescriptionAttribute : Attribute -{ - public string Description { get; } - - public LogicGateDescriptionAttribute(string description) - { - Description = description; - } -} \ No newline at end of file diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Button.cs b/StoneRed.LogicSimulator/Simulation/LogicGates/Button.cs index e531b9f..a7bd624 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Button.cs +++ b/StoneRed.LogicSimulator/Simulation/LogicGates/Button.cs @@ -2,8 +2,8 @@ using MonoGame.Extended.Input; -using StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Attributes; +using StoneRed.LogicSimulator.Api.Interfaces; namespace StoneRed.LogicSimulator.Simulation.LogicGates; diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Clock.cs b/StoneRed.LogicSimulator/Simulation/LogicGates/Clock.cs index 6b54b88..7e2fd67 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Clock.cs +++ b/StoneRed.LogicSimulator/Simulation/LogicGates/Clock.cs @@ -1,7 +1,7 @@ using MonoGame.Extended.Input; -using StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Attributes; +using StoneRed.LogicSimulator.Api.Interfaces; using System; diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Lamp.cs b/StoneRed.LogicSimulator/Simulation/LogicGates/Lamp.cs index ccbf2b4..236aadb 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Lamp.cs +++ b/StoneRed.LogicSimulator/Simulation/LogicGates/Lamp.cs @@ -1,7 +1,7 @@ using Microsoft.Xna.Framework; -using StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Attributes; +using StoneRed.LogicSimulator.Api.Interfaces; namespace StoneRed.LogicSimulator.Simulation.LogicGates; diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/NotGate.cs b/StoneRed.LogicSimulator/Simulation/LogicGates/NotGate.cs index b068e18..297611a 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/NotGate.cs +++ b/StoneRed.LogicSimulator/Simulation/LogicGates/NotGate.cs @@ -1,5 +1,5 @@ -using StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Attributes; +using StoneRed.LogicSimulator.Api.Interfaces; namespace StoneRed.LogicSimulator.Simulation.LogicGates; diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Pin.cs b/StoneRed.LogicSimulator/Simulation/LogicGates/Pin.cs index 5b7b1fb..073d778 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Pin.cs +++ b/StoneRed.LogicSimulator/Simulation/LogicGates/Pin.cs @@ -1,5 +1,5 @@ -using StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Attributes; +using StoneRed.LogicSimulator.Api.Interfaces; namespace StoneRed.LogicSimulator.Simulation.LogicGates; diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/Switch.cs b/StoneRed.LogicSimulator/Simulation/LogicGates/Switch.cs index e84aa91..3579f4f 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/Switch.cs +++ b/StoneRed.LogicSimulator/Simulation/LogicGates/Switch.cs @@ -2,8 +2,8 @@ using MonoGame.Extended.Input; -using StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Attributes; +using StoneRed.LogicSimulator.Api.Interfaces; namespace StoneRed.LogicSimulator.Simulation.LogicGates; diff --git a/StoneRed.LogicSimulator/Simulation/LogicGates/TestLogicGate.cs b/StoneRed.LogicSimulator/Simulation/LogicGates/TestLogicGate.cs index 71dd436..c8533a0 100644 --- a/StoneRed.LogicSimulator/Simulation/LogicGates/TestLogicGate.cs +++ b/StoneRed.LogicSimulator/Simulation/LogicGates/TestLogicGate.cs @@ -1,15 +1,15 @@ -using Microsoft.Xna.Framework; +#if DEBUG + +using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; -using StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Attributes; +using StoneRed.LogicSimulator.Api.Interfaces; namespace StoneRed.LogicSimulator.Simulation.LogicGates; -#if DEBUG - [LogicGateName("Test")] -internal class TestLogicGate : LogicGate, Interfaces.IDrawable +internal class TestLogicGate : LogicGate, Api.Interfaces.IDrawable { private readonly Color[] colors = new Color[9]; private Texture2D texture = null!; diff --git a/StoneRed.LogicSimulator/StoneRed.LogicSimulator.csproj b/StoneRed.LogicSimulator/StoneRed.LogicSimulator.csproj index ef64f89..39aa621 100644 --- a/StoneRed.LogicSimulator/StoneRed.LogicSimulator.csproj +++ b/StoneRed.LogicSimulator/StoneRed.LogicSimulator.csproj @@ -33,6 +33,9 @@ + + + Never diff --git a/StoneRed.LogicSimulator/UserInterface/Screens/WorldScreen.cs b/StoneRed.LogicSimulator/UserInterface/Screens/WorldScreen.cs index c894d3d..1dd6fce 100644 --- a/StoneRed.LogicSimulator/UserInterface/Screens/WorldScreen.cs +++ b/StoneRed.LogicSimulator/UserInterface/Screens/WorldScreen.cs @@ -9,8 +9,8 @@ using MonoGame.Extended.Input; using Myra.Graphics2D.UI; +using StoneRed.LogicSimulator.Api.Interfaces; using StoneRed.LogicSimulator.Simulation; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; using StoneRed.LogicSimulator.UserInterface.Windows; using StoneRed.LogicSimulator.Utilities; using StoneRed.LogicSimulator.WorldSaveSystem; @@ -18,7 +18,7 @@ using StoneRed.LogicSimulator.WorldSaveSystem; using System; using System.Linq; -using IColorable = StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces.IColorable; +using IColorable = StoneRed.LogicSimulator.Api.Interfaces.IColorable; namespace StoneRed.LogicSimulator.UserInterface.Screens; @@ -119,7 +119,7 @@ internal class WorldScreen : SrlsScreen } // Draw logic gate - if (logicGate is Simulation.LogicGates.Interfaces.IDrawable drawable) + if (logicGate is Api.Interfaces.IDrawable drawable) { Rectangle rectangle = new Rectangle((logicGate.WorldData.Position * srls.Scale).ToPoint(), (logicGateSize * srls.Scale).ToPoint()); srls.SpriteBatch.Draw(drawable.Texture, rectangle, null, color, 0, Vector2.Zero, SpriteEffects.None, 0.2f); diff --git a/StoneRed.LogicSimulator/Utilities/LogicGatesManager.cs b/StoneRed.LogicSimulator/Utilities/LogicGatesManager.cs index f8fa2ba..43564de 100644 --- a/StoneRed.LogicSimulator/Utilities/LogicGatesManager.cs +++ b/StoneRed.LogicSimulator/Utilities/LogicGatesManager.cs @@ -1,7 +1,7 @@ using Microsoft.Xna.Framework.Graphics; -using StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Attributes; +using StoneRed.LogicSimulator.Api.Interfaces; using System; using System.Collections.Generic; @@ -41,7 +41,7 @@ internal class LogicGatesManager public void LoadLogicGates() { - IEnumerable logicGateTypes = typeof(LogicGate) + IEnumerable logicGateTypes = GetType() .Assembly.GetTypes() .Where(t => t.IsSubclassOf(typeof(LogicGate)) && !t.IsAbstract); diff --git a/StoneRed.LogicSimulator/WorldSaveSystem/WorldData.cs b/StoneRed.LogicSimulator/WorldSaveSystem/WorldData.cs index fb90946..8b996c8 100644 --- a/StoneRed.LogicSimulator/WorldSaveSystem/WorldData.cs +++ b/StoneRed.LogicSimulator/WorldSaveSystem/WorldData.cs @@ -1,4 +1,4 @@ -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; +using StoneRed.LogicSimulator.Api.Interfaces; using System.Collections.Generic; diff --git a/StoneRed.LogicSimulator/WorldSaveSystem/WorldReaders/WorldReaderV1.cs b/StoneRed.LogicSimulator/WorldSaveSystem/WorldReaders/WorldReaderV1.cs index 2a04977..332ee53 100644 --- a/StoneRed.LogicSimulator/WorldSaveSystem/WorldReaders/WorldReaderV1.cs +++ b/StoneRed.LogicSimulator/WorldSaveSystem/WorldReaders/WorldReaderV1.cs @@ -1,7 +1,7 @@ using FluentResults; +using StoneRed.LogicSimulator.Api.Interfaces; using StoneRed.LogicSimulator.Misc; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; using System; using System.Collections.Generic; diff --git a/StoneRed.LogicSimulator/WorldSaveSystem/WorldWriters/WorldWriterV1.cs b/StoneRed.LogicSimulator/WorldSaveSystem/WorldWriters/WorldWriterV1.cs index fa521be..d56cc99 100644 --- a/StoneRed.LogicSimulator/WorldSaveSystem/WorldWriters/WorldWriterV1.cs +++ b/StoneRed.LogicSimulator/WorldSaveSystem/WorldWriters/WorldWriterV1.cs @@ -1,8 +1,8 @@ using FluentResults; +using StoneRed.LogicSimulator.Api.Attributes; +using StoneRed.LogicSimulator.Api.Interfaces; using StoneRed.LogicSimulator.Misc; -using StoneRed.LogicSimulator.Simulation.LogicGates.Attributes; -using StoneRed.LogicSimulator.Simulation.LogicGates.Interfaces; using StoneRed.LogicSimulator.Utilities; using System;