Example #1
0
        /// <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());
        }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }
Example #4
0
        /// <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;
        }
Example #5
0
        /// <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;
        }