From b4e9b403da75470fc25c830a8665b5566951f3fb Mon Sep 17 00:00:00 2001 From: NGnius Date: Sun, 26 Jan 2020 15:26:48 -0500 Subject: [PATCH] Add basic analytics disabler (experimental) --- .../Tests/GamecraftModdingAPIPluginTest.cs | 16 +++++--- .../Utility/AnalyticsDisablerPatch.cs | 38 +++++++++++++++++++ 2 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 GamecraftModdingAPI/Utility/AnalyticsDisablerPatch.cs diff --git a/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs b/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs index b354ec9..5a62e12 100644 --- a/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs +++ b/GamecraftModdingAPI/Tests/GamecraftModdingAPIPluginTest.cs @@ -42,11 +42,13 @@ namespace GamecraftModdingAPI.Tests public void OnApplicationStart() { GamecraftModdingAPI.Main.Init(); - // in case Steam is not installed/running - // this will crash the game slightly later during startup - //SteamInitPatch.ForcePassSteamCheck = true; - // in case running in a VM - //MinimumSpecsCheckPatch.ForcePassMinimumSpecCheck = true; + // in case Steam is not installed/running + // this will crash the game slightly later during startup + //SteamInitPatch.ForcePassSteamCheck = true; + // in case running in a VM + //MinimumSpecsCheckPatch.ForcePassMinimumSpecCheck = true; + // disable some Gamecraft analytics + //AnalyticsDisablerPatch.DisableAnalytics = true; // disable background music AudioTools.SetVolume(0.0f, "Music"); @@ -90,6 +92,10 @@ namespace GamecraftModdingAPI.Tests CommandManager.AddCommand(new SimpleCustomCommandEngine( (x,y,z) => { Blocks.Placement.PlaceBlock(Blocks.BlockIDs.AluminiumCube, new Unity.Mathematics.float3(x, y, z)); }, "PlaceAluminium", "Place a block of aluminium at the given coordinates")); + Analytics.DeltaDNAHelper.PlayerLifetimeParameters plp = new Analytics.DeltaDNAHelper.PlayerLifetimeParameters(); + CommandManager.AddCommand(new SimpleCustomCommandEngine( + (s) => { Analytics.DeltaDNAHelper.SendActionCompletedEvent(in plp, s.Replace(", ", " ")); }, + "SendAnalyticsAction", "Send an analytics action")); } public void OnFixedUpdate() { } diff --git a/GamecraftModdingAPI/Utility/AnalyticsDisablerPatch.cs b/GamecraftModdingAPI/Utility/AnalyticsDisablerPatch.cs new file mode 100644 index 0000000..b18304a --- /dev/null +++ b/GamecraftModdingAPI/Utility/AnalyticsDisablerPatch.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Reflection; + +using Analytics; +using Harmony; +using RobocraftX.Common; +using Svelto.ECS; + +namespace GamecraftModdingAPI.Utility +{ + /// + /// Patch of Analytics.AnalyticsCompositionRoot.Compose(...) + /// This stops some analytics collection built into Gamecraft. + /// DO NOT USE! (This will likely crash your game on shutdown) + /// + [HarmonyPatch] + class AnalyticsDisablerPatch + { + /// + /// Don't activate gameplay analytics? + /// + public static bool DisableAnalytics = false; + + public static bool Prefix(object contextHolder, EnginesRoot enginesRoot, RCXMode rcxMode) + { + return !DisableAnalytics; + } + + public static MethodBase TargetMethod(HarmonyInstance instance) + { + return typeof(Analytics.AnalyticsCompositionRoot).GetMethod("Compose").MakeGenericMethod(typeof(object)); + } + } +}