diff --git a/.gitignore b/.gitignore index 6db9ba9..a1dff74 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -# ---> VisualStudio ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## @@ -21,6 +20,8 @@ [Rr]eleases/ x64/ x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ @@ -210,7 +211,7 @@ _pkginfo.txt # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache -!*.[Cc]ache/ +!?*.[Cc]ache/ # Others ClientBin/ @@ -254,6 +255,7 @@ ServiceFabricBackup/ *.bim.layout *.bim_*.settings *.rptproj.rsuser +*- Backup*.rdl # Microsoft Fakes FakesAssemblies/ @@ -334,3 +336,13 @@ ASALocalRun/ # Local History for Visual Studio .localhistory/ +# BeatPulse healthcheck temp database +healthchecksdb + +# references +ref + +# doxygen docs +doxygen/** +**.bak +dox.log diff --git a/Leadercraft.sln b/Leadercraft.sln new file mode 100644 index 0000000..31d126a --- /dev/null +++ b/Leadercraft.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29609.76 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Leadercraft", "Leadercraft\Leadercraft.csproj", "{E0EEA15D-AB3C-4C73-A000-C49B5AE9EA66}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E0EEA15D-AB3C-4C73-A000-C49B5AE9EA66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E0EEA15D-AB3C-4C73-A000-C49B5AE9EA66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E0EEA15D-AB3C-4C73-A000-C49B5AE9EA66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E0EEA15D-AB3C-4C73-A000-C49B5AE9EA66}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {588EB8B7-9ADA-4723-BAC9-04B676A88771} + EndGlobalSection +EndGlobal diff --git a/Leadercraft/Leadercraft.csproj b/Leadercraft/Leadercraft.csproj new file mode 100644 index 0000000..d49ded7 --- /dev/null +++ b/Leadercraft/Leadercraft.csproj @@ -0,0 +1,732 @@ + + + + net472 + true + 0.0.1 + Me + MIT + https://git.exmods.org/modtainers/HelloModdingWorld + en-CA + + + + + + + + + + + + ..\ref\Plugins\GamecraftModdingAPI.dll +..\..\ref\Plugins\GamecraftModdingAPI.dll + + + ..\ref\Gamecraft_Data\Managed\IllusionInjector.dll +..\..\ref\Gamecraft_Data\Managed\IllusionInjector.dll + + + ..\ref\Gamecraft_Data\Managed\IllusionPlugin.dll +..\..\ref\Gamecraft_Data\Managed\IllusionPlugin.dll + + + ..\ref\Gamecraft_Data\Managed\Analytics.dll +..\..\ref\Gamecraft_Data\Managed\Analytics.dll + + + ..\ref\Gamecraft_Data\Managed\Assembly-CSharp-firstpass.dll +..\..\ref\Gamecraft_Data\Managed\Assembly-CSharp-firstpass.dll + + + ..\ref\Gamecraft_Data\Managed\Assembly-CSharp.dll +..\..\ref\Gamecraft_Data\Managed\Assembly-CSharp.dll + + + ..\ref\Gamecraft_Data\Managed\Authentication.dll +..\..\ref\Gamecraft_Data\Managed\Authentication.dll + + + ..\ref\Gamecraft_Data\Managed\BlockEntityFactory.dll +..\..\ref\Gamecraft_Data\Managed\BlockEntityFactory.dll + + + ..\ref\Gamecraft_Data\Managed\CommandLine.dll +..\..\ref\Gamecraft_Data\Managed\CommandLine.dll + + + ..\ref\Gamecraft_Data\Managed\DataLoader.dll +..\..\ref\Gamecraft_Data\Managed\DataLoader.dll + + + ..\ref\Gamecraft_Data\Managed\DDNA.dll +..\..\ref\Gamecraft_Data\Managed\DDNA.dll + + + ..\ref\Gamecraft_Data\Managed\Facepunch.Steamworks.Win64.dll +..\..\ref\Gamecraft_Data\Managed\Facepunch.Steamworks.Win64.dll + + + ..\ref\Gamecraft_Data\Managed\FMOD.dll +..\..\ref\Gamecraft_Data\Managed\FMOD.dll + + + ..\ref\Gamecraft_Data\Managed\FullGame.dll +..\..\ref\Gamecraft_Data\Managed\FullGame.dll + + + ..\ref\Gamecraft_Data\Managed\Gamecraft.Blocks.ConsoleBlock.dll +..\..\ref\Gamecraft_Data\Managed\Gamecraft.Blocks.ConsoleBlock.dll + + + ..\ref\Gamecraft_Data\Managed\Gamecraft.Effects.dll +..\..\ref\Gamecraft_Data\Managed\Gamecraft.Effects.dll + + + ..\ref\Gamecraft_Data\Managed\Gamecraft.GUI.GraphicsScreen.dll +..\..\ref\Gamecraft_Data\Managed\Gamecraft.GUI.GraphicsScreen.dll + + + ..\ref\Gamecraft_Data\Managed\Gamecraft.GUI.Tweaks.dll +..\..\ref\Gamecraft_Data\Managed\Gamecraft.GUI.Tweaks.dll + + + ..\ref\Gamecraft_Data\Managed\Gamecraft.GUI.Wires.dll +..\..\ref\Gamecraft_Data\Managed\Gamecraft.GUI.Wires.dll + + + ..\ref\Gamecraft_Data\Managed\Gamecraft.Tweaks.dll +..\..\ref\Gamecraft_Data\Managed\Gamecraft.Tweaks.dll + + + ..\ref\Gamecraft_Data\Managed\Gamecraft.Wires.dll +..\..\ref\Gamecraft_Data\Managed\Gamecraft.Wires.dll + + + ..\ref\Gamecraft_Data\Managed\Gamecraft.Wires.Input.dll +..\..\ref\Gamecraft_Data\Managed\Gamecraft.Wires.Input.dll + + + ..\ref\Gamecraft_Data\Managed\GameState.dll +..\..\ref\Gamecraft_Data\Managed\GameState.dll + + + ..\ref\Gamecraft_Data\Managed\GPUInstancer.dll +..\..\ref\Gamecraft_Data\Managed\GPUInstancer.dll + + + ..\ref\Gamecraft_Data\Managed\Havok.Physics.dll +..\..\ref\Gamecraft_Data\Managed\Havok.Physics.dll + + + ..\ref\Gamecraft_Data\Managed\Havok.Physics.Hybrid.dll +..\..\ref\Gamecraft_Data\Managed\Havok.Physics.Hybrid.dll + + + ..\ref\Gamecraft_Data\Managed\HdgRemoteDebugRuntime.dll +..\..\ref\Gamecraft_Data\Managed\HdgRemoteDebugRuntime.dll + + + ..\ref\Gamecraft_Data\Managed\IllusionInjector.dll +..\..\ref\Gamecraft_Data\Managed\IllusionInjector.dll + + + ..\ref\Gamecraft_Data\Managed\IllusionPlugin.dll +..\..\ref\Gamecraft_Data\Managed\IllusionPlugin.dll + + + ..\ref\Gamecraft_Data\Managed\JWT.dll +..\..\ref\Gamecraft_Data\Managed\JWT.dll + + + ..\ref\Gamecraft_Data\Managed\LZ4.dll +..\..\ref\Gamecraft_Data\Managed\LZ4.dll + + + ..\ref\Gamecraft_Data\Managed\MultiplayerNetworking.dll +..\..\ref\Gamecraft_Data\Managed\MultiplayerNetworking.dll + + + ..\ref\Gamecraft_Data\Managed\MultiplayerTest.dll +..\..\ref\Gamecraft_Data\Managed\MultiplayerTest.dll + + + ..\ref\Gamecraft_Data\Managed\Newtonsoft.Json.dll +..\..\ref\Gamecraft_Data\Managed\Newtonsoft.Json.dll + + + ..\ref\Gamecraft_Data\Managed\RCX.ScreenshotTaker.dll +..\..\ref\Gamecraft_Data\Managed\RCX.ScreenshotTaker.dll + + + ..\ref\Gamecraft_Data\Managed\Rewired_Core.dll +..\..\ref\Gamecraft_Data\Managed\Rewired_Core.dll + + + ..\ref\Gamecraft_Data\Managed\Rewired_Windows.dll +..\..\ref\Gamecraft_Data\Managed\Rewired_Windows.dll + + + ..\ref\Gamecraft_Data\Managed\Robocraft.MainGame.AutoEnterSimulation.dll +..\..\ref\Gamecraft_Data\Managed\Robocraft.MainGame.AutoEnterSimulation.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.AccountPreferences.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.AccountPreferences.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Blocks.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Blocks.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Blocks.Ghost.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Blocks.Ghost.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Blocks.Triggers.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Blocks.Triggers.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Character.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Character.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Common.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Common.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.ControlsScreen.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.ControlsScreen.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Crosshair.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Crosshair.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.EntityStreamUtility.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.EntityStreamUtility.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.FrontEnd.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.FrontEnd.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.GameSignalHandling.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.GameSignalHandling.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.DebugDisplay.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.DebugDisplay.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.RemoveBlock.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.RemoveBlock.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.ScaleGhost.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.ScaleGhost.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.SignalLabel.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.SignalLabel.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.GUIs.WorkshopPrefabs.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.GUIs.WorkshopPrefabs.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Input.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Input.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Inventory.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Inventory.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.MachineEditor.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.MachineEditor.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.MainGame.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.MainGame.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.MainSimulation.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.MainSimulation.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Multiplayer.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Multiplayer.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Multiplayer.NetworkEntityStream.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Multiplayer.NetworkEntityStream.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.MultiplayerInput.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.MultiplayerInput.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Party.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Party.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.PartyGui.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.PartyGui.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Physics.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Physics.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.PilotSeat.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.PilotSeat.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Player.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Player.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Priority.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Priority.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Rendering.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Rendering.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Rendering.Mock.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Rendering.Mock.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.SaveAndLoad.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.SaveAndLoad.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.SaveGameDialog.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.SaveGameDialog.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Serializers.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Serializers.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.Services.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.Services.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.SignalHandling.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.SignalHandling.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX.StateSync.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX.StateSync.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX_SpawnPoints.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX_SpawnPoints.dll + + + ..\ref\Gamecraft_Data\Managed\RobocraftX_TextBlock.dll +..\..\ref\Gamecraft_Data\Managed\RobocraftX_TextBlock.dll + + + ..\ref\Gamecraft_Data\Managed\RobocratX.SimulationCompositionRoot.dll +..\..\ref\Gamecraft_Data\Managed\RobocratX.SimulationCompositionRoot.dll + + + ..\ref\Gamecraft_Data\Managed\StringFormatter.dll +..\..\ref\Gamecraft_Data\Managed\StringFormatter.dll + + + ..\ref\Gamecraft_Data\Managed\Svelto.Common.dll +..\..\ref\Gamecraft_Data\Managed\Svelto.Common.dll + + + ..\ref\Gamecraft_Data\Managed\Svelto.ECS.Debugger.dll +..\..\ref\Gamecraft_Data\Managed\Svelto.ECS.Debugger.dll + + + ..\ref\Gamecraft_Data\Managed\Svelto.ECS.dll +..\..\ref\Gamecraft_Data\Managed\Svelto.ECS.dll + + + ..\ref\Gamecraft_Data\Managed\Svelto.Services.dll +..\..\ref\Gamecraft_Data\Managed\Svelto.Services.dll + + + ..\ref\Gamecraft_Data\Managed\Svelto.Tasks.dll +..\..\ref\Gamecraft_Data\Managed\Svelto.Tasks.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Addressables.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Addressables.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Burst.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Burst.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Burst.Unsafe.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Burst.Unsafe.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Collections.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Collections.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Entities.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Entities.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Entities.Hybrid.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Entities.Hybrid.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Entities.Properties.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Entities.Properties.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Entities.StaticTypeRegistry.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Entities.StaticTypeRegistry.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Jobs.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Jobs.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Mathematics.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Mathematics.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Mathematics.Extensions.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Mathematics.Extensions.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Mathematics.Extensions.Hybrid.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Mathematics.Extensions.Hybrid.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Physics.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Physics.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Physics.Hybrid.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Physics.Hybrid.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Postprocessing.Runtime.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Postprocessing.Runtime.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Properties.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Properties.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.RenderPipelines.Core.Runtime.dll +..\..\ref\Gamecraft_Data\Managed\Unity.RenderPipelines.Core.Runtime.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.RenderPipelines.Core.ShaderLibrary.dll +..\..\ref\Gamecraft_Data\Managed\Unity.RenderPipelines.Core.ShaderLibrary.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.RenderPipelines.Lightweight.Runtime.dll +..\..\ref\Gamecraft_Data\Managed\Unity.RenderPipelines.Lightweight.Runtime.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll +..\..\ref\Gamecraft_Data\Managed\Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.ResourceManager.dll +..\..\ref\Gamecraft_Data\Managed\Unity.ResourceManager.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Scenes.Hybrid.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Scenes.Hybrid.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.ScriptableBuildPipeline.dll +..\..\ref\Gamecraft_Data\Managed\Unity.ScriptableBuildPipeline.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.TextMeshPro.dll +..\..\ref\Gamecraft_Data\Managed\Unity.TextMeshPro.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Timeline.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Timeline.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Transforms.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Transforms.dll + + + ..\ref\Gamecraft_Data\Managed\Unity.Transforms.Hybrid.dll +..\..\ref\Gamecraft_Data\Managed\Unity.Transforms.Hybrid.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.AccessibilityModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.AccessibilityModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.AIModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.AIModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.AndroidJNIModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.AndroidJNIModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.AnimationModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.AnimationModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.ARModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.ARModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.AssetBundleModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.AssetBundleModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.AudioModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.AudioModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.ClothModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.ClothModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.ClusterInputModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.ClusterInputModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.ClusterRendererModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.ClusterRendererModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.CoreModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.CoreModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.CrashReportingModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.CrashReportingModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.DirectorModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.DirectorModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.DSPGraphModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.DSPGraphModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.FileSystemHttpModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.FileSystemHttpModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.GameCenterModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.GameCenterModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.GridModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.GridModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.HotReloadModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.HotReloadModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.ImageConversionModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.ImageConversionModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.IMGUIModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.IMGUIModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.InputLegacyModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.InputLegacyModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.InputModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.InputModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.JSONSerializeModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.JSONSerializeModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.LocalizationModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.LocalizationModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.ParticleSystemModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.ParticleSystemModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.PerformanceReportingModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.PerformanceReportingModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.Physics2DModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.Physics2DModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.PhysicsModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.PhysicsModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.ProfilerModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.ProfilerModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.ScreenCaptureModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.ScreenCaptureModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.SharedInternalsModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.SharedInternalsModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.SpriteMaskModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.SpriteMaskModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.SpriteShapeModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.SpriteShapeModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.StreamingModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.StreamingModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.SubstanceModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.SubstanceModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.TerrainModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.TerrainModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.TerrainPhysicsModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.TerrainPhysicsModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.TextCoreModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.TextCoreModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.TextRenderingModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.TextRenderingModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.TilemapModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.TilemapModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.TLSModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.TLSModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UI.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UI.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UIElementsModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UIElementsModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UIModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UIModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UmbraModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UmbraModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UNETModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UNETModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UnityAnalyticsModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UnityAnalyticsModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UnityConnectModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UnityConnectModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UnityTestProtocolModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UnityTestProtocolModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestAssetBundleModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestAssetBundleModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestAudioModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestAudioModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestTextureModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestTextureModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestWWWModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.UnityWebRequestWWWModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.VehiclesModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.VehiclesModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.VFXModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.VFXModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.VideoModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.VideoModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.VRModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.VRModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.WindModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.WindModule.dll + + + ..\ref\Gamecraft_Data\Managed\UnityEngine.XRModule.dll +..\..\ref\Gamecraft_Data\Managed\UnityEngine.XRModule.dll + + + ..\ref\Gamecraft_Data\Managed\uREPL.dll +..\..\ref\Gamecraft_Data\Managed\uREPL.dll + + + ..\ref\Gamecraft_Data\Managed\VisualProfiler.dll +..\..\ref\Gamecraft_Data\Managed\VisualProfiler.dll + + + + + + + + + diff --git a/Leadercraft/LeadercraftPlugin.cs b/Leadercraft/LeadercraftPlugin.cs new file mode 100644 index 0000000..43f991e --- /dev/null +++ b/Leadercraft/LeadercraftPlugin.cs @@ -0,0 +1,46 @@ +using System.Reflection; + +using IllusionPlugin; +using GamecraftModdingAPI; + +namespace Leadercraft +{ + public class LeadercraftPlugin : IPlugin // the Illusion Plugin Architecture (IPA) will ignore classes that don't implement IPlugin' + { + public string Name { get; } = Assembly.GetExecutingAssembly().GetName().Name; // mod name + + public string Version { get; } = Assembly.GetExecutingAssembly().GetName().Version.ToString(); // mod & assembly version + + // called when Gamecraft shuts down + public void OnApplicationQuit() + { + // Shutdown this mod + GamecraftModdingAPI.Utility.Logging.LogDebug($"{Name} has shutdown"); + + // Shutdown the Gamecraft modding API last + GamecraftModdingAPI.Main.Shutdown(); + } + + // called when Gamecraft starts up + public void OnApplicationStart() + { + // Initialize the Gamecraft modding API first + GamecraftModdingAPI.Main.Init(); + // check out the modding API docs here: https://mod.exmods.org/ + + // Initialize this mod + + GamecraftModdingAPI.Utility.Logging.LogDebug($"{Name} has started up"); + } + + // unused methods + + public void OnFixedUpdate() { } // called once per physics update + + public void OnLevelWasInitialized(int level) { } // called after a level is initialized + + public void OnLevelWasLoaded(int level) { } // called after a level is loaded + + public void OnUpdate() { } // called once per rendered frame (frame update) + } +} \ No newline at end of file diff --git a/Leadercraft/Server/CriteriaStruct.cs b/Leadercraft/Server/CriteriaStruct.cs new file mode 100644 index 0000000..730b3c7 --- /dev/null +++ b/Leadercraft/Server/CriteriaStruct.cs @@ -0,0 +1,16 @@ +using System; +namespace Leadercraft.Server +{ + internal struct CriteriaStruct + { + public float[][] Location; // 2 x (x,y,z) vector (min and then max) + + public int Time; // time since start of game (seconds) + + public int GameID; + + public int PlayerID; + + public bool Complete; + } +} diff --git a/Leadercraft/Server/KeyStruct.cs b/Leadercraft/Server/KeyStruct.cs new file mode 100644 index 0000000..94a897a --- /dev/null +++ b/Leadercraft/Server/KeyStruct.cs @@ -0,0 +1,10 @@ +using System; +namespace Leadercraft.Server +{ + internal struct KeyStruct + { + public string Token; + + public int PlayerID; + } +} diff --git a/Leadercraft/Server/LeadercraftApi.cs b/Leadercraft/Server/LeadercraftApi.cs new file mode 100644 index 0000000..f094d8e --- /dev/null +++ b/Leadercraft/Server/LeadercraftApi.cs @@ -0,0 +1,66 @@ +using System; +using System.Net; +using System.Text; +using System.IO; +using Newtonsoft.Json; +namespace Leadercraft.Server +{ + internal class LeadercraftApi + { + private readonly uint _userId; + + private readonly string _tokenUrl; + + private readonly string _criteriaUrl; + + public LeadercraftApi(uint userId, string tokenUrl, string criteriaUrl) + { + this._userId = userId; + this._tokenUrl = tokenUrl; + this._criteriaUrl = criteriaUrl; + } + + public LeadercraftResult RequestPOSTToken() + { + NewKeyStruct reqBodyObj = new NewKeyStruct{ PlayerID = _userId }; + byte[] reqBodyBytes = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(reqBodyObj)); + // Request + WebRequest request = WebRequest.Create(_tokenUrl); + request.Method = "POST"; + request.ContentLength = reqBodyBytes.Length; + request.ContentType = "application/json"; + Stream body = request.GetRequestStream(); + body.Write(reqBodyBytes, 0, reqBodyBytes.Length); + body.Close(); + // Response + HttpWebResponse response = (HttpWebResponse)request.GetResponse(); + body = response.GetResponseStream(); + byte[] respBodyBytes = new byte[int.Parse(response.GetResponseHeader("Content-Length"))]; + body.Read(respBodyBytes, 0, int.Parse(response.GetResponseHeader("Content-Length"))); + response.Close(); + return new LeadercraftResult(respBodyBytes, (int)response.StatusCode); + } + + public LeadercraftResult RequestPOSTCriteria(CriteriaStruct criteria, string token) + { + criteria.PlayerID = (int)_userId; + byte[] reqBodyBytes = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(criteria)); + // Request + WebRequest request = WebRequest.Create(_criteriaUrl); + request.Method = "POST"; + request.ContentLength = reqBodyBytes.Length; + request.ContentType = "application/json"; + request.Headers.Add(HttpRequestHeader.Authorization, "leadercraft "+token); + Stream body = request.GetRequestStream(); + body.Write(reqBodyBytes, 0, reqBodyBytes.Length); + body.Close(); + // Response + HttpWebResponse response = (HttpWebResponse)request.GetResponse(); + body = response.GetResponseStream(); + byte[] respBodyBytes = new byte[int.Parse(response.GetResponseHeader("Content-Length"))]; + body.Read(respBodyBytes, 0, int.Parse(response.GetResponseHeader("Content-Length"))); + response.Close(); + return new LeadercraftResult(respBodyBytes, (int)response.StatusCode); + } + } +} diff --git a/Leadercraft/Server/LeadercraftResult.cs b/Leadercraft/Server/LeadercraftResult.cs new file mode 100644 index 0000000..96e9008 --- /dev/null +++ b/Leadercraft/Server/LeadercraftResult.cs @@ -0,0 +1,36 @@ +using System; +using System.Text; +using Newtonsoft.Json; +namespace Leadercraft.Server +{ + internal class LeadercraftResult + { + private string _responseJson; + + public readonly int StatusCode; + + public bool IsError { get => StatusCode < 200 || StatusCode > 299; } + + public ResultStruct ParseResult() + { + return JsonConvert.DeserializeObject>(_responseJson); + } + + public ResultStruct ParseError() + { + return JsonConvert.DeserializeObject>(_responseJson); + } + + public LeadercraftResult(string response, int status = 200) + { + this._responseJson = response; + this.StatusCode = status; + } + + public LeadercraftResult(byte[] response, int status = 200) + { + this._responseJson = Encoding.ASCII.GetString(response); + this.StatusCode = status; + } + } +} diff --git a/Leadercraft/Server/NewKeyStruct.cs b/Leadercraft/Server/NewKeyStruct.cs new file mode 100644 index 0000000..7f483f9 --- /dev/null +++ b/Leadercraft/Server/NewKeyStruct.cs @@ -0,0 +1,8 @@ +using System; +namespace Leadercraft.Server +{ + internal struct NewKeyStruct + { + public uint PlayerID; + } +} diff --git a/Leadercraft/Server/ResultStruct.cs b/Leadercraft/Server/ResultStruct.cs new file mode 100644 index 0000000..d5a1c2d --- /dev/null +++ b/Leadercraft/Server/ResultStruct.cs @@ -0,0 +1,18 @@ +using System; +namespace Leadercraft.Server +{ + internal struct ResultStruct + { + public int StatusCode; // HTTP Response status code + + public T[] Items; // Result items + + public int Elapsed; // Time (ns) + + public string Query; // pseudo query language + + public string URL; // request URL + + public string Start; // start time + } +} diff --git a/Leadercraft/Server/Tests.cs b/Leadercraft/Server/Tests.cs new file mode 100644 index 0000000..c9dc3cb --- /dev/null +++ b/Leadercraft/Server/Tests.cs @@ -0,0 +1,48 @@ +using System; +using NUnit.Framework; +namespace Leadercraft.Server +{ + [TestFixture] + public class Tests + { + private static readonly string tokenUrl = "http://192.168.122.229:1337/token"; + + private static readonly string criteriaUrl = "http://192.168.122.229:7048/criteria"; + + private LeadercraftApi api; + + [SetUp] + public void SetUp() + { + api = new LeadercraftApi(13, tokenUrl, criteriaUrl); + } + + [Test] + public void TokenIntegrationTest() + { + LeadercraftResult result = api.RequestPOSTToken(); + Assert.AreEqual(200, result.StatusCode, "Expected HTTP 200 Ok StatusCode"); + ResultStruct resultStruct = result.ParseResult(); + Assert.Greater(resultStruct.Items.Length, 0, "Expected a non-zero item count"); + Assert.AreEqual(1, resultStruct.Items.Length, "Expected one result item"); + Assert.IsNotEmpty(resultStruct.Items[0].Token, "Expected a non-empty token string"); + } + + [Test] + public void CriteriaIntegrationTest() + { + CriteriaStruct criteria = new CriteriaStruct + { + Location = new float[][] { new float[] { 1, 1, 0 }, new float[] { 1, 1, 0 } }, + Time = 42, + GameID = 2, + PlayerID = 333, + Complete = true + }; + // this may fail when TokenIntegrationTest also fails + string token = api.RequestPOSTToken().ParseResult().Items[0].Token; + LeadercraftResult result = api.RequestPOSTCriteria(criteria, token); + Assert.AreEqual(200, result.StatusCode, "Expected HTTP 200 Ok StatusCode"); + } + } +} diff --git a/Leadercraft/Server/Tools.cs b/Leadercraft/Server/Tools.cs new file mode 100644 index 0000000..11eb597 --- /dev/null +++ b/Leadercraft/Server/Tools.cs @@ -0,0 +1,17 @@ +using System; +using Steamworks; +namespace Leadercraft.Server +{ + public static class Tools + { + public static bool IsSteamAvailable + { + get => SteamClient.IsValid; + } + + public static uint UserId + { + get => SteamClient.SteamId.AccountId; + } + } +} diff --git a/README.md b/README.md index 7f41e0e..a30379b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,35 @@ -# leadercraft +# Leadercraft -Follow the leader \ No newline at end of file +Shell project for Gamecraft mods. +Use this as a quick-start project structure for your own mods, or to learn how modding works. + +## Installation + +First, install the [Gamecraft Modding API](https://git.exmods.org/modtainers/GamecraftModdingAPI) ([direct link to install guide](https://www.exmods.org/guides/install.html)). +To install the Leadercraft mod, copy the latest release's `Leadercraft.dll` and `0Harmony.dll` files into the `Plugins` folder in Gamecraft's main folder or follow the [install guide](https://www.exmods.org/guides/install.html) again for Leadercraft. + +## Development + +### Setup + +This project requires most of Gamecraft's `.dll` files to function correctly. +Most, but not all, of these files are stored in Gamecraft's `Gamecraft_Data\Managed` folder. +The project is pre-configured to look in a folder called ref in the solution's main directory or one level up from that. + +You can make sure Leadercraft can find all of `.dll` files it needs by copying your Gamecraft folder here and renaming it to `ref`, but you'll have to re-copy it after every Gamecraft update. +You can also create a symbolic link (look it up) to your Gamecraft install folder named `ref` in this folder to avoid having to re-copy files. + +For any mod to work, you will have to patch your game with [GCIPA](https://git.exmods.org/modtainers/GCIPA). +[Direct link to install guide](https://git.exmods.org/modtainers/GCIPA/src/branch/master/README.md#how-to-install). +!!Download a release from git.exmods.org not github.com!! + +This project also requires the [GamecraftModdingAPI](https://git.exmods.org/modtainers/GamecraftModdingAPI) library to be installed (in `ref/Plugins/GamecraftModdingAPI.dll`). +[Direct link to install guide](https://www.exmods.org/guides/install.html). + +### Building + +After you've completed the setup, open the solution file `Leadercraft.sln` in your prefered C# .NET/Mono development environment. +I'd recommend Visual Studio Community Edition or JetBrains Rider for Windows and Monodevelop for Linux. + +If you've successfully completed setup, you should be able to build the Leadercraft project without errors. +If it doesn't work and you can't figure out why, ask for help on the [Gamecraft Modding Discord server](https://discord.gg/xjnFxQV). \ No newline at end of file