Ejemplo n.º 1
0
 /// <summary>
 /// Initialises Oxide
 /// </summary>
 public static void Initialise()
 {
     // Create if not already created
     if (oxide == null)
     {
         oxide = new OxideMod();
         oxide.Load();
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes Oxide
 /// </summary>
 public static void Initialize()
 {
     // Create if not already created
     if (Oxide == null)
     {
         Oxide = new OxideMod(DebugCallback);
         Oxide.Load();
     }
 }
Ejemplo n.º 3
0
 public static void Initialize()
 {
     if (Interface.Oxide != null)
     {
         return;
     }
     Interface.Oxide = new OxideMod(Interface.DebugCallback);
     Interface.Oxide.Load();
 }
Ejemplo n.º 4
0
        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;
            }
            }
        }
Ejemplo n.º 5
0
        public static object CallHook(string hook, object[] args)
        {
            OxideMod oxide = Interface.Oxide;

            if (oxide == null)
            {
                return(null);
            }
            return(oxide.CallHook(hook, args));
        }
Ejemplo n.º 6
0
        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);
            }
        }