/// <summary> /// Initialize Registry with needed data /// </summary> /// <param name="bundleName">Name of bundle to load</param> /// <param name="keyword">UNIQUE keyword of your mod</param> /// <param name="requireBundle">Do you need to load asset bundles</param> /// <param name="requireVerta">Do you need to load verta files</param> public static void Init(string bundleName, string keyword, bool requireBundle, bool requireVerta) { LogSource = Logger.CreateLogSource("Registry-" + keyword); keyWord = keyword; //get location of the plugin string pluginfolder = Path.GetDirectoryName(Assembly.GetAssembly(typeof(Registry)).Location); int MainTex = Shader.PropertyToID("_MainTex"); int NormalTex = Shader.PropertyToID("_NormalTex"); int MSTex = Shader.PropertyToID("_MS_Tex"); int EmissionTex = Shader.PropertyToID("_EmissionTex"); textureNames = new[] { MainTex, NormalTex, MSTex, EmissionTex }; FileInfo folder = new FileInfo($"{pluginfolder}/Verta/"); FileInfo folder1 = new FileInfo($"{pluginfolder}/plugins/"); if (Directory.Exists(folder.Directory?.FullName)) { vertaFolder = pluginfolder; } else if (Directory.Exists(folder1.Directory?.FullName)) { vertaFolder = $"{pluginfolder}/plugins"; } else if (requireVerta) { vertaFolder = ""; LogSource.LogError("Cannot find folder with verta files. Mod WILL not work!"); return; } if (requireBundle) { //load assetbundle then load the prefab bundle = AssetBundle.LoadFromFile($"{pluginfolder}/{bundleName}"); } LDBTool.PostAddDataAction += onPostAdd; LDBTool.EditDataAction += EditProto; Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly()); }
public RichPresence(IntPtr intPtr) : base(intPtr) { log = Logger.CreateLogSource("Discord Rich Presence"); _discord = new Discord.Discord(764433332330037249L, 0UL); _activityManager = _discord.GetActivityManager(); // TODO: ? _activityManager.RegisterCommand("gtfo://run"); _activityManager.RegisterSteam(493520); _currentTime = _currentTime.AddSeconds(10); _activityManager.OnActivityJoin += Events.OnActivityJoin; log.LogMessage("RichPresence created."); Activity activity = new Activity() { State = "Playing GTFO", Details = "Selecting an expedition." }; SetActivity(activity); }
private static void ReplayPreloaderLogs(ICollection <LogEventArgs> preloaderLogEvents) { if (preloaderLogEvents == null) { return; } var unityLogger = new UnityLogListener(); Logger.Listeners.Add(unityLogger); // Temporarily disable the console log listener (if there is one from preloader) as we replay the preloader logs var logListener = Logger.Listeners.FirstOrDefault(logger => logger is ConsoleLogListener); if (logListener != null) { Logger.Listeners.Remove(logListener); } // Write preloader log events if there are any, including the original log source name var preloaderLogSource = Logger.CreateLogSource("Preloader"); foreach (var preloaderLogEvent in preloaderLogEvents) { Logger.InternalLogEvent(preloaderLogSource, preloaderLogEvent); } Logger.Sources.Remove(preloaderLogSource); Logger.Listeners.Remove(unityLogger); if (logListener != null) { Logger.Listeners.Add(logListener); } }
/// <summary> /// Initializes BepInEx to be able to start the chainloader. /// </summary> public static void Initialize(string gameExePath, bool startConsole = true, ICollection <LogEventArgs> preloaderLogEvents = null) { if (_initialized) { return; } ThreadingHelper.Initialize(); // Set vitals if (gameExePath != null) { // Checking for null allows a more advanced initialization workflow, where the Paths class has been initialized before calling Chainloader.Initialize // This is used by Preloader to use environment variables, for example Paths.SetExecutablePath(gameExePath); } // Start logging if (ConsoleManager.ConfigConsoleEnabled.Value && startConsole) { ConsoleManager.CreateConsole(); Logger.Listeners.Add(new ConsoleLogListener()); } // Fix for standard output getting overwritten by UnityLogger if (ConsoleManager.ConsoleActive) { ConsoleManager.SetConsoleStreams(); ConsoleManager.SetConsoleEncoding(); } Logger.InitializeInternalLoggers(); Logger.Listeners.Add(new UnityLogListener()); if (ConfigDiskLogging.Value) { Logger.Listeners.Add(new DiskLogListener("LogOutput.log", ConfigDiskConsoleDisplayedLevel.Value, ConfigDiskAppend.Value, ConfigDiskWriteUnityLog.Value)); } if (!TraceLogSource.IsListening) { Logger.Sources.Add(TraceLogSource.CreateSource()); } if (ConfigUnityLogging.Value) { Logger.Sources.Add(new UnityLogSource()); } // Temporarily disable the console log listener as we replay the preloader logs var logListener = Logger.Listeners.FirstOrDefault(logger => logger is ConsoleLogListener); if (logListener != null) { Logger.Listeners.Remove(logListener); } // Write preloader log events if there are any, including the original log source name if (preloaderLogEvents != null) { var preloaderLogSource = Logger.CreateLogSource("Preloader"); foreach (var preloaderLogEvent in preloaderLogEvents) { Logger.InternalLogEvent(preloaderLogSource, preloaderLogEvent); } Logger.Sources.Remove(preloaderLogSource); } if (logListener != null) { Logger.Listeners.Add(logListener); } if (Utility.CurrentOs == Platform.Linux) { Logger.LogInfo($"Detected Unity version: v{Application.unityVersion}"); } Logger.LogMessage("Chainloader ready"); _initialized = true; }
/// <summary> /// Initializes BepInEx to be able to start the chainloader. /// </summary> public static void Initialize(string gameExePath, bool startConsole = true, ICollection <LogEventArgs> preloaderLogEvents = null) { if (_initialized) { return; } ThreadingHelper.Initialize(); // Set vitals if (gameExePath != null) { // Checking for null allows a more advanced initialization workflow, where the Paths class has been initialized before calling Chainloader.Initialize // This is used by Preloader to use environment variables, for example Paths.SetExecutablePath(gameExePath); } // Start logging if (ConsoleWindow.ConfigConsoleEnabled.Value && startConsole) { ConsoleWindow.Attach(); Logger.Listeners.Add(new ConsoleLogListener()); } // Fix for standard output getting overwritten by UnityLogger if (ConsoleWindow.StandardOut != null) { Console.SetOut(ConsoleWindow.StandardOut); var encoding = ConsoleWindow.ConfigConsoleShiftJis.Value ? 932 : (uint)Encoding.UTF8.CodePage; ConsoleEncoding.ConsoleCodePage = encoding; Console.OutputEncoding = ConsoleEncoding.GetEncoding(encoding); } Logger.Listeners.Add(new UnityLogListener()); if (ConfigDiskLogging.Value) { Logger.Listeners.Add(new DiskLogListener("LogOutput.log", ConfigDiskConsoleDisplayedLevel.Value, ConfigDiskAppend.Value, ConfigDiskWriteUnityLog.Value)); } if (!TraceLogSource.IsListening) { Logger.Sources.Add(TraceLogSource.CreateSource()); } if (ConfigUnityLogging.Value) { Logger.Sources.Add(new UnityLogSource()); } // Temporarily disable the console log listener as we replay the preloader logs var logListener = Logger.Listeners.FirstOrDefault(logger => logger is ConsoleLogListener); if (logListener != null) { Logger.Listeners.Remove(logListener); } var preloaderLogSource = Logger.CreateLogSource("Preloader"); foreach (var preloaderLogEvent in preloaderLogEvents) { preloaderLogSource.Log(preloaderLogEvent.Level, preloaderLogEvent.Data); } Logger.Sources.Remove(preloaderLogSource); if (logListener != null) { Logger.Listeners.Add(logListener); } Logger.LogMessage("Chainloader ready"); _initialized = true; }