/// <summary> /// Initialises Oxide /// </summary> public static void Initialise() { // Create if not already created if (oxide == null) { oxide = new OxideMod(); oxide.Load(); } }
/// <summary> /// Initializes Oxide /// </summary> public static void Initialize() { // Create if not already created if (Oxide == null) { Oxide = new OxideMod(DebugCallback); Oxide.Load(); } }
public static void Initialize() { if (Interface.Oxide != null) { return; } Interface.Oxide = new OxideMod(Interface.DebugCallback); Interface.Oxide.Load(); }
private static void RegisterLibrarySearchPath(string path) { char pathSeparator; string str; string str1; switch (Environment.OSVersion.Platform) { case PlatformID.Win32S: case PlatformID.Win32Windows: case PlatformID.Win32NT: { string environmentVariable = Environment.GetEnvironmentVariable("PATH") ?? string.Empty; if (string.IsNullOrEmpty(environmentVariable)) { str = path; } else { pathSeparator = Path.PathSeparator; str = string.Concat(environmentVariable, pathSeparator.ToString(), path); } Environment.SetEnvironmentVariable("PATH", str); OxideMod.SetDllDirectory(path); return; } case PlatformID.WinCE: case PlatformID.Xbox: { return; } case PlatformID.Unix: case PlatformID.MacOSX: { string environmentVariable1 = Environment.GetEnvironmentVariable("LD_LIBRARY_PATH") ?? string.Empty; if (string.IsNullOrEmpty(environmentVariable1)) { str1 = path; } else { pathSeparator = Path.PathSeparator; str1 = string.Concat(environmentVariable1, pathSeparator.ToString(), path); } Environment.SetEnvironmentVariable("LD_LIBRARY_PATH", str1); return; } default: { return; } } }
public static object CallHook(string hook, object[] args) { OxideMod oxide = Interface.Oxide; if (oxide == null) { return(null); } return(oxide.CallHook(hook, args)); }
public void Load() { string str; string str1; this.RootDirectory = Environment.CurrentDirectory; if (this.RootDirectory.StartsWith(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))) { this.RootDirectory = AppDomain.CurrentDomain.BaseDirectory; } if (this.RootDirectory == null) { throw new Exception("RootDirectory is null"); } this.InstanceDirectory = Path.Combine(this.RootDirectory, "oxide"); Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; JsonConvert.DefaultSettings = () => new JsonSerializerSettings() { Culture = CultureInfo.InvariantCulture }; this.CommandLine = new Oxide.Core.CommandLine(Environment.GetCommandLineArgs()); if (this.CommandLine.HasVariable("oxide.directory")) { this.CommandLine.GetArgument("oxide.directory", out str, out str1); if (string.IsNullOrEmpty(str) || this.CommandLine.HasVariable(str)) { this.InstanceDirectory = Path.Combine(this.RootDirectory, Utility.CleanPath(string.Format(str1, this.CommandLine.GetVariable(str)))); } } this.ExtensionDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); if (this.ExtensionDirectory == null || !Directory.Exists(this.ExtensionDirectory)) { throw new Exception("Could not identify extension directory"); } if (!Directory.Exists(this.InstanceDirectory)) { Directory.CreateDirectory(this.InstanceDirectory); } this.ConfigDirectory = Path.Combine(this.InstanceDirectory, Utility.CleanPath("config")); if (!Directory.Exists(this.ConfigDirectory)) { Directory.CreateDirectory(this.ConfigDirectory); } this.DataDirectory = Path.Combine(this.InstanceDirectory, Utility.CleanPath("data")); if (!Directory.Exists(this.DataDirectory)) { Directory.CreateDirectory(this.DataDirectory); } this.LangDirectory = Path.Combine(this.InstanceDirectory, Utility.CleanPath("lang")); if (!Directory.Exists(this.LangDirectory)) { Directory.CreateDirectory(this.LangDirectory); } this.LogDirectory = Path.Combine(this.InstanceDirectory, Utility.CleanPath("logs")); if (!Directory.Exists(this.LogDirectory)) { Directory.CreateDirectory(this.LogDirectory); } this.PluginDirectory = Path.Combine(this.InstanceDirectory, Utility.CleanPath("plugins")); if (!Directory.Exists(this.PluginDirectory)) { Directory.CreateDirectory(this.PluginDirectory); } OxideMod.RegisterLibrarySearchPath(Path.Combine(this.ExtensionDirectory, (IntPtr.Size == 8 ? "x64" : "x86"))); string str2 = Path.Combine(this.InstanceDirectory, "oxide.config.json"); if (!File.Exists(str2)) { this.Config = new OxideConfig(str2); this.Config.Save(null); } else { this.Config = ConfigFile.Load <OxideConfig>(str2); } if (this.CommandLine.HasVariable("nolog")) { this.LogWarning("Usage of the 'nolog' variable will prevent logging", Array.Empty <object>()); } if (this.CommandLine.HasVariable("rcon.port")) { this.Config.Rcon.Port = Utility.GetNumbers(this.CommandLine.GetVariable("rcon.port")); } if (this.CommandLine.HasVariable("rcon.password")) { this.Config.Rcon.Password = this.CommandLine.GetVariable("rcon.password"); } this.RootLogger = new CompoundLogger(); this.RootLogger.AddLogger(new RotatingFileLogger() { Directory = this.LogDirectory }); if (this.debugCallback != null) { this.RootLogger.AddLogger(new CallbackLogger(this.debugCallback)); } this.LogInfo("Loading Oxide Core v{0}...", new object[] { OxideMod.Version }); this.RootPluginManager = new PluginManager(this.RootLogger) { ConfigPath = this.ConfigDirectory }; this.extensionManager = new ExtensionManager(this.RootLogger); this.DataFileSystem = new Oxide.Core.DataFileSystem(this.DataDirectory); ExtensionManager extensionManager = this.extensionManager; Covalence covalence = new Covalence(); Covalence covalence1 = covalence; this.covalence = covalence; extensionManager.RegisterLibrary("Covalence", covalence1); this.extensionManager.RegisterLibrary("Global", new Global()); this.extensionManager.RegisterLibrary("Lang", new Lang()); ExtensionManager extensionManager1 = this.extensionManager; Permission permission = new Permission(); Permission permission1 = permission; this.libperm = permission; extensionManager1.RegisterLibrary("Permission", permission1); this.extensionManager.RegisterLibrary("Plugins", new Oxide.Core.Libraries.Plugins(this.RootPluginManager)); this.extensionManager.RegisterLibrary("Time", new Time()); ExtensionManager extensionManager2 = this.extensionManager; Oxide.Core.Libraries.Timer timer = new Oxide.Core.Libraries.Timer(); Oxide.Core.Libraries.Timer timer1 = timer; this.libtimer = timer; extensionManager2.RegisterLibrary("Timer", timer1); this.extensionManager.RegisterLibrary("WebRequests", new WebRequests()); this.LogInfo("Loading extensions...", Array.Empty <object>()); this.extensionManager.LoadAllExtensions(this.ExtensionDirectory); Cleanup.Run(); this.covalence.Initialize(); this.RemoteConsole = new Oxide.Core.RemoteConsole.RemoteConsole(); Oxide.Core.RemoteConsole.RemoteConsole remoteConsole = this.RemoteConsole; if (remoteConsole != null) { remoteConsole.Initalize(); } else { } if (this.getTimeSinceStartup == null) { this.timer = new Stopwatch(); this.timer.Start(); this.getTimeSinceStartup = () => (float)this.timer.Elapsed.TotalSeconds; this.LogWarning("A reliable clock is not available, falling back to a clock which may be unreliable on certain hardware", Array.Empty <object>()); } foreach (Extension allExtension in this.extensionManager.GetAllExtensions()) { allExtension.LoadPluginWatchers(this.PluginDirectory); } this.LogInfo("Loading plugins...", Array.Empty <object>()); this.LoadAllPlugins(true); foreach (PluginChangeWatcher pluginChangeWatcher in this.extensionManager.GetPluginChangeWatchers()) { pluginChangeWatcher.OnPluginSourceChanged += new PluginChangeEvent(this.watcher_OnPluginSourceChanged); pluginChangeWatcher.OnPluginAdded += new PluginAddEvent(this.watcher_OnPluginAdded); pluginChangeWatcher.OnPluginRemoved += new PluginRemoveEvent(this.watcher_OnPluginRemoved); } }