#if Standalone using HarmonyLib; using Newtonsoft.Json; using SRMultiplayer.Networking; using System.IO; using System.Reflection; using UnityCoreMod; using UnityEngine; namespace SRMultiplayer { // /// Handles mod being loaded from directly without the mod loader /// public class MainSaty : IUnityMod { private static GameObject m_GameObject; public void Load() { if (m_GameObject != null) return; SRMP.Log("Loading SRMP Standalone Version"); //create the mod directory in the install folder if needed if (!Directory.Exists(SRMP.ModDataPath)) { Directory.CreateDirectory(SRMP.ModDataPath); } //create the user data file if not created yet if (!File.Exists(Path.Combine(SRMP.ModDataPath, "userdata.json"))) { Globals.UserData = new UserData() { UUID = System.Guid.NewGuid(), CheckDLC = true, IgnoredMods = new System.Collections.Generic.List() }; File.WriteAllText(Path.Combine(SRMP.ModDataPath, "userdata.json"), JsonConvert.SerializeObject(Globals.UserData)); SRMP.Log("Created userdata with UUID " + Globals.UserData.UUID); } else //if alreayd created load in the data { Globals.UserData = JsonConvert.DeserializeObject(File.ReadAllText(Path.Combine(SRMP.ModDataPath, "userdata.json"))); if(Globals.UserData.IgnoredMods == null) { Globals.UserData.IgnoredMods = new System.Collections.Generic.List(); } SRMP.Log("Loaded userdata with UUID " + Globals.UserData.UUID); } //create the mods main game objects and start connecting everything string[] args = System.Environment.GetCommandLineArgs(); m_GameObject = new GameObject("SRMP"); m_GameObject.AddComponent(); m_GameObject.AddComponent(); m_GameObject.AddComponent(); m_GameObject.AddComponent(); m_GameObject.AddComponent(); m_GameObject.AddComponent(); m_GameObject.AddComponent(); //mark all mod objects and do not destroy GameObject.DontDestroyOnLoad(m_GameObject); //get current mod version Globals.Version = Assembly.GetExecutingAssembly().GetName().Version.Revision; //initialize harmony and init the patches var harmony = new Harmony("saty.mod.srmp"); harmony.PatchAll(Assembly.GetExecutingAssembly()); //mark the mod as a background task Application.runInBackground = true; } public void Unload() { } } } #endif