示例#1
0
 public static void InitFilesystem( )
 {
     Cmd.AddCommand("path", new Anonymousxcommand_t());
     Cmd.AddCommand("link", new Anonymousxcommand_t1());
     Cmd.AddCommand("dir", new Anonymousxcommand_t2());
     fs_userdir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/.jake2";
     FS.CreatePath(fs_userdir + "/");
     FS.AddGameDirectory(fs_userdir);
     fs_basedir = Cvar.Get("basedir", ".", CVAR_NOSET);
     SetCDDir();
     AddGameDirectory(fs_basedir.string_renamed + '/' + Globals.BASEDIRNAME);
     MarkBaseSearchPaths();
     fs_gamedirvar = Cvar.Get("game", "", CVAR_LATCH | CVAR_SERVERINFO);
     if (fs_gamedirvar.string_renamed.Length > 0)
     {
         SetGamedir(fs_gamedirvar.string_renamed);
     }
 }
示例#2
0
        public static void GetLatchedVars( )
        {
            cvar_t var;

            for (var = Globals.cvar_vars; var != null; var = var.next)
            {
                if (var.latched_string == null || var.latched_string.Length == 0)
                {
                    continue;
                }
                var.string_renamed = var.latched_string;
                var.latched_string = null;
                var.value          = Lib.Atof(var.string_renamed);
                if (var.name.Equals("game"))
                {
                    FS.SetGamedir(var.string_renamed);
                    FS.ExecAutoexec();
                }
            }
        }
示例#3
0
 public static void Main(String[] args)
 {
     Com.DPrintf("hello!\\n");
     FS.InitFilesystem();
     CM.CM_LoadMap("maps/base1.bsp", true, new int { 0 });
 }
示例#4
0
        public static void Printf(String fmt, params Object[] parameters)
        {
            var msg = Sprintf(_debugContext + fmt, parameters);

            if (rd_target != 0)
            {
                if ((msg.Length + rd_buffer.Length) > (rd_buffersize - 1))
                {
                    rd_flusher.Rd_flush(rd_target, rd_buffer);
                    rd_buffer.Length = 0;
                }

                rd_buffer.Append(msg);
                return;
            }

            System.Console.Write(msg);
            CoreSys.ConsoleOutput(msg);
            if (Globals.logfile_active != null && Globals.logfile_active.value != 0)
            {
                String name;
                if (Globals.logfile == null)
                {
                    name = FS.Gamedir() + "/qconsole.log";
                    if (Globals.logfile_active.value > 2)
                    {
                        try
                        {
                            Globals.logfile = new QuakeFile(name, FileAccess.ReadWrite);
                            Globals.logfile.Seek(Globals.logfile.Length);
                        }
                        catch (Exception e)
                        {
                            e.PrintStackTrace();
                        }
                    }
                    else
                    {
                        try
                        {
                            Globals.logfile = new QuakeFile(name, FileAccess.ReadWrite);
                        }
                        catch (FileNotFoundException e1)
                        {
                            e1.PrintStackTrace();
                        }
                    }
                }

                if (Globals.logfile != null)
                {
                    try
                    {
                        Globals.logfile.Write(msg);
                    }
                    catch (IOException e)
                    {
                        e.PrintStackTrace();
                    }
                }
            }
        }
示例#5
0
        static cvar_t Set2(String var_name, String value, Boolean force)
        {
            cvar_t var = Cvar.FindVar(var_name);

            if (var == null)
            {
                return(Cvar.Get(var_name, value, 0));
            }

            if ((var.flags & (CVAR_USERINFO | CVAR_SERVERINFO)) != 0)
            {
                if (!InfoValidate(value))
                {
                    Com.Printf("invalid info cvar value\\n");
                    return(var);
                }
            }

            if (!force)
            {
                if ((var.flags & CVAR_NOSET) != 0)
                {
                    Com.Printf(var_name + " is write protected.\\n");
                    return(var);
                }

                if ((var.flags & CVAR_LATCH) != 0)
                {
                    if (var.latched_string != null)
                    {
                        if (value.Equals(var.latched_string))
                        {
                            return(var);
                        }
                        var.latched_string = null;
                    }
                    else
                    {
                        if (value.Equals(var.string_renamed))
                        {
                            return(var);
                        }
                    }

                    if (Globals.server_state != 0)
                    {
                        Com.Printf(var_name + " will be changed for next game.\\n");
                        var.latched_string = value;
                    }
                    else
                    {
                        var.string_renamed = value;
                        var.value          = Lib.Atof(var.string_renamed);
                        if (var.name.Equals("game"))
                        {
                            FS.SetGamedir(var.string_renamed);
                            FS.ExecAutoexec();
                        }
                    }

                    return(var);
                }
            }
            else
            {
                if (var.latched_string != null)
                {
                    var.latched_string = null;
                }
            }

            if (value.Equals(var.string_renamed))
            {
                return(var);
            }
            var.modified = true;
            if ((var.flags & CVAR_USERINFO) != 0)
            {
                Globals.userinfo_modified = true;
            }
            var.string_renamed = value;
            try
            {
                var.value = Single.Parse(var.string_renamed);
            }
            catch (Exception e)
            {
                var.value = 0F;
            }

            return(var);
        }
示例#6
0
        public static void Init(String[] args)
        {
            try
            {
                Com.InitArgv(args);
                Cbuf.Init();
                Cmd.Init();
                Cvar.Init();
                Key.Init();
                Cbuf.AddEarlyCommands(false);
                Cbuf.Execute();
                if (Globals.dedicated.value != 1F)
                {
                    Program.Q2Dialog.SetStatus("initializing filesystem...");
                }
                FS.InitFilesystem();
                if (Globals.dedicated.value != 1F)
                {
                    Program.Q2Dialog.SetStatus("loading config...");
                }
                Reconfigure(false);
                FS.SetCDDir();
                FS.MarkBaseSearchPaths();
                if (Globals.dedicated.value != 1F)
                {
                    Program.Q2Dialog.TestQ2Data();
                }
                Reconfigure(true);
                Cmd.AddCommand("error", Com.Error_f);
                Globals.host_speeds    = Cvar.Get("host_speeds", "0", 0);
                Globals.log_stats      = Cvar.Get("log_stats", "0", 0);
                Globals.developer      = Cvar.Get("developer", "0", CVAR_ARCHIVE);
                Globals.timescale      = Cvar.Get("timescale", "0", 0);
                Globals.fixedtime      = Cvar.Get("fixedtime", "0", 0);
                Globals.logfile_active = Cvar.Get("logfile", "0", 0);
                Globals.showtrace      = Cvar.Get("showtrace", "0", 0);
                Globals.dedicated      = Cvar.Get("dedicated", "0", CVAR_NOSET);
                var s = Com.Sprintf("%4.2f %s %s %s", Globals.VERSION, CPUSTRING, Globals.__DATE__, BUILDSTRING);
                Cvar.Get("version", s, CVAR_SERVERINFO | CVAR_NOSET);
                if (Globals.dedicated.value != 1F)
                {
                    Program.Q2Dialog.SetStatus("initializing network subsystem...");
                }
                NET.Init();
                Netchan.Netchan_Init();
                if (Globals.dedicated.value != 1F)
                {
                    Program.Q2Dialog.SetStatus("initializing server subsystem...");
                }
                SV_MAIN.SV_Init();
                if (Globals.dedicated.value != 1F)
                {
                    Program.Q2Dialog.SetStatus("initializing client subsystem...");
                }
                CL.Init();
                if (!Cbuf.AddLateCommands())
                {
                    if (Globals.dedicated.value == 0)
                    {
                        Cbuf.AddText("d1\\n");
                    }
                    else
                    {
                        Cbuf.AddText("dedicated_start\\n");
                    }
                    Cbuf.Execute();
                }
                else
                {
                    SCR.EndLoadingPlaque();
                }

                Com.Printf("====== Quake2 Initialized ======\\n\\n");
                CL.WriteConfiguration();
                if (Globals.dedicated.value != 1F)
                {
                    Program.Q2Dialog.Dispose();
                }
            }
            catch (longjmpException e)
            {
                CoreSys.Error("Error during initialization");
            }
        }