Example #1
0
 public static void Init()
 {
     Globals.in_mouse    = Cvar.Get("in_mouse", "1", Defines.CVAR_ARCHIVE);
     Globals.in_joystick = Cvar.Get("in_joystick", "0", Defines.CVAR_ARCHIVE);
 }
Example #2
0
 public static void Init( )
 {
     in_mouse    = Cvar.Get("in_mouse", "1", CVAR_ARCHIVE);
     in_joystick = Cvar.Get("in_joystick", "0", CVAR_ARCHIVE);
 }
Example #3
0
        public static void SV_Map(Boolean attractloop, String levelstring, Boolean loadgame)
        {
            Int32  l;
            String level, ch, spawnpoint;
            var    pos = 0;

            sv.loadgame    = loadgame;
            sv.attractloop = attractloop;
            if (sv.state == Defines.ss_dead && !sv.loadgame)
            {
                SV_InitGame();
            }
            level = levelstring;
            var c = level.IndexOf('+');

            if (c != -1)
            {
                Cvar.Set("nextserver", "gamemap \\\"" + level.Substring(c + 1) + "\\\"");
                level = level.Substring(0, c);
            }
            else
            {
                Cvar.Set("nextserver", "");
            }

            if (firstmap.Length == 0)
            {
                if (!levelstring.EndsWith(".cin") && !levelstring.EndsWith(".pcx") && !levelstring.EndsWith(".dm2"))
                {
                    pos      = levelstring.IndexOf('+');
                    firstmap = levelstring.Substring(pos + 1);
                }
            }

            if (Cvar.VariableValue("coop") != 0 && level.Equals("victory.pcx"))
            {
                Cvar.Set("nextserver", "gamemap \\\"*" + firstmap + "\\\"");
            }
            pos = level.IndexOf('$');
            if (pos != -1)
            {
                spawnpoint = level.Substring(pos + 1);
                level      = level.Substring(0, pos);
            }
            else
            {
                spawnpoint = "";
            }
            if (level[0] == '*')
            {
                level = level.Substring(1);
            }
            l = level.Length;
            if (l > 4 && level.EndsWith(".cin"))
            {
                SCR.BeginLoadingPlaque();
                SV_SEND.SV_BroadcastCommand("changing\\n");
                SV_SpawnServer(level, spawnpoint, Defines.ss_cinematic, attractloop, loadgame);
            }
            else if (l > 4 && level.EndsWith(".dm2"))
            {
                SCR.BeginLoadingPlaque();
                SV_SEND.SV_BroadcastCommand("changing\\n");
                SV_SpawnServer(level, spawnpoint, Defines.ss_demo, attractloop, loadgame);
            }
            else if (l > 4 && level.EndsWith(".pcx"))
            {
                SCR.BeginLoadingPlaque();
                SV_SEND.SV_BroadcastCommand("changing\\n");
                SV_SpawnServer(level, spawnpoint, Defines.ss_pic, attractloop, loadgame);
            }
            else
            {
                SCR.BeginLoadingPlaque();
                SV_SEND.SV_BroadcastCommand("changing\\n");
                SV_SEND.SV_SendClientMessages();
                SV_SpawnServer(level, spawnpoint, Defines.ss_game, attractloop, loadgame);
                Cbuf.CopyToDefer();
            }

            SV_SEND.SV_BroadcastCommand("reconnect\\n");
        }
Example #4
0
    public static void Key_Console(int key)
    {
        if (key == q_shared.K_ENTER)
        {
            string line = new String(key_lines[edit_line]).TrimEnd('\0', ' ');
            string cmd  = line.Substring(1);
            Cbuf_AddText(cmd);  // skip the >
            Cbuf_AddText("\n");
            Con_Printf("{0}\n", line);
            edit_line               = (edit_line + 1) & 31;
            history_line            = edit_line;
            key_lines[edit_line][0] = ']';
            key_linepos             = 1;
            if (cls.state == cactive_t.ca_disconnected)
            {
                SCR_UpdateScreen();     // force an update, because the command
            }
            // may take some time
            return;
        }

        if (key == q_shared.K_TAB)
        {
            // command completion
            string   txt   = new String(key_lines[edit_line], 1, q_shared.MAXCMDLINE - 1).TrimEnd('\0', ' ');
            string[] cmds  = Cmd_CompleteCommand(txt);
            string[] vars  = Cvar.Cvar_CompleteVariable(txt);
            string   match = null;
            if (cmds != null)
            {
                if (cmds.Length > 1 || vars != null)
                {
                    Con_Printf("\nCommands:\n");
                    foreach (string s in cmds)
                    {
                        Con_Printf("  {0}\n", s);
                    }
                }
                else
                {
                    match = cmds[0];
                }
            }
            if (vars != null)
            {
                if (vars.Length > 1 || cmds != null)
                {
                    Con_Printf("\nVariables:\n");
                    foreach (string s in vars)
                    {
                        Con_Printf("  {0}\n", s);
                    }
                }
                else if (match == null)
                {
                    match = vars[0];
                }
            }
            if (!String.IsNullOrEmpty(match))
            {
                int len = Math.Min(match.Length, q_shared.MAXCMDLINE - 3);
                for (int i = 0; i < len; i++)
                {
                    key_lines[edit_line][i + 1] = match[i];
                }
                key_linepos = len + 1;
                key_lines[edit_line][key_linepos] = ' ';
                key_linepos++;
                key_lines[edit_line][key_linepos] = '\0';
                return;
            }
        }

        if (key == q_shared.K_BACKSPACE || key == q_shared.K_LEFTARROW)
        {
            if (key_linepos > 1)
            {
                key_linepos--;
            }
            return;
        }

        if (key == q_shared.K_UPARROW)
        {
            do
            {
                history_line = (history_line - 1) & 31;
            } while (history_line != edit_line && (key_lines[history_line][1] == 0));
            if (history_line == edit_line)
            {
                history_line = (edit_line + 1) & 31;
            }
            Array.Copy(key_lines[history_line], key_lines[edit_line], q_shared.MAXCMDLINE);
            key_linepos = 0;
            while (key_lines[edit_line][key_linepos] != '\0' && key_linepos < q_shared.MAXCMDLINE)
            {
                key_linepos++;
            }
            return;
        }

        if (key == q_shared.K_DOWNARROW)
        {
            if (history_line == edit_line)
            {
                return;
            }
            do
            {
                history_line = (history_line + 1) & 31;
            }while (history_line != edit_line && (key_lines[history_line][1] == '\0'));
            if (history_line == edit_line)
            {
                key_lines[edit_line][0] = ']';
                key_linepos             = 1;
            }
            else
            {
                Array.Copy(key_lines[history_line], key_lines[edit_line], q_shared.MAXCMDLINE);
                key_linepos = 0;
                while (key_lines[edit_line][key_linepos] != '\0' && key_linepos < q_shared.MAXCMDLINE)
                {
                    key_linepos++;
                }
            }
            return;
        }

        if (key == q_shared.K_PGUP || key == q_shared.K_MWHEELUP)
        {
            con_backscroll += 2;
            if (con_backscroll > con_totallines - (vid.height >> 3) - 1)
            {
                con_backscroll = con_totallines - (vid.height >> 3) - 1;
            }
            return;
        }

        if (key == q_shared.K_PGDN || key == q_shared.K_MWHEELDOWN)
        {
            con_backscroll -= 2;
            if (con_backscroll < 0)
            {
                con_backscroll = 0;
            }
            return;
        }

        if (key == q_shared.K_HOME)
        {
            con_backscroll = con_totallines - (vid.height >> 3) - 1;
            return;
        }

        if (key == q_shared.K_END)
        {
            con_backscroll = 0;
            return;
        }

        if (key < 32 || key > 127)
        {
            return;     // non printable
        }
        if (key_linepos < q_shared.MAXCMDLINE - 1)
        {
            key_lines[edit_line][key_linepos] = (char)key;
            key_linepos++;
            key_lines[edit_line][key_linepos] = '\0';
        }
    }
Example #5
0
        public static void SV_SpawnServer(String server, String spawnpoint, Int32 serverstate, Boolean attractloop, Boolean loadgame)
        {
            Int32 i;
            var   checksum = 0;

            if (attractloop)
            {
                Cvar.Set("paused", "0");
            }
            Com.Printf("------- Server Initialization -------\\n");
            Com.DPrintf("SpawnServer: " + server + "\\n");
            if (sv.demofile != null)
            {
                try
                {
                    sv.demofile.Close();
                }
                catch (Exception e)
                {
                }
            }

            svs.spawncount++;
            sv.state             = Defines.ss_dead;
            Globals.server_state = sv.state;
            sv             = new server_t();
            svs.realtime   = 0;
            sv.loadgame    = loadgame;
            sv.attractloop = attractloop;
            sv.configstrings[Defines.CS_NAME] = server;
            if (Cvar.VariableValue("deathmatch") != 0)
            {
                sv.configstrings[Defines.CS_AIRACCEL] = "" + SV_MAIN.sv_airaccelerate.value;
                PMove.pm_airaccelerate = SV_MAIN.sv_airaccelerate.value;
            }
            else
            {
                sv.configstrings[Defines.CS_AIRACCEL] = "0";
                PMove.pm_airaccelerate = 0;
            }

            SZ.Init(sv.multicast, sv.multicast_buf, sv.multicast_buf.Length);
            sv.name = server;
            for (i = 0; i < SV_MAIN.maxclients.value; i++)
            {
                if (svs.clients[i].state > Defines.cs_connected)
                {
                    svs.clients[i].state = Defines.cs_connected;
                }
                svs.clients[i].lastframe = -1;
            }

            sv.time = 1000;
            sv.name = server;
            sv.configstrings[Defines.CS_NAME] = server;
            Int32[] iw = new[] { checksum };
            if (serverstate != Defines.ss_game)
            {
                sv.models[1] = CM.CM_LoadMap("", false, iw);
            }
            else
            {
                sv.configstrings[Defines.CS_MODELS + 1] = "maps/" + server + ".bsp";
                sv.models[1] = CM.CM_LoadMap(sv.configstrings[Defines.CS_MODELS + 1], false, iw);
            }

            checksum = iw[0];
            sv.configstrings[Defines.CS_MAPCHECKSUM] = "" + checksum;
            SV_WORLD.SV_ClearWorld();
            for (i = 1; i < CM.CM_NumInlineModels(); i++)
            {
                sv.configstrings[Defines.CS_MODELS + 1 + i] = "*" + i;
                sv.models[i + 1] = CM.InlineModel(sv.configstrings[Defines.CS_MODELS + 1 + i]);
            }

            sv.state             = Defines.ss_loading;
            Globals.server_state = sv.state;
            GameSpawn.SpawnEntities(sv.name, CM.CM_EntityString(), spawnpoint);
            GameBase.G_RunFrame();
            GameBase.G_RunFrame();
            sv.state             = serverstate;
            Globals.server_state = sv.state;
            SV_CreateBaseline();
            SV_CheckForSavegame();
            Cvar.FullSet("mapname", sv.name, Defines.CVAR_SERVERINFO | Defines.CVAR_NOSET);
        }
Example #6
0
        public static void SV_InitGame( )
        {
            Int32   i;
            edict_t ent;
            String  idmaster;

            if (svs.initialized)
            {
                SV_MAIN.SV_Shutdown("Server restarted\\n", true);
            }
            else
            {
                CL.Drop();
                SCR.BeginLoadingPlaque();
            }

            Cvar.GetLatchedVars();
            svs.initialized = true;
            if (Cvar.VariableValue("coop") != 0 && Cvar.VariableValue("deathmatch") != 0)
            {
                Com.Printf("Deathmatch and Coop both set, disabling Coop\\n");
                Cvar.FullSet("coop", "0", Defines.CVAR_SERVERINFO | Defines.CVAR_LATCH);
            }

            if (Globals.dedicated.value != 0)
            {
                if (0 == Cvar.VariableValue("coop"))
                {
                    Cvar.FullSet("deathmatch", "1", Defines.CVAR_SERVERINFO | Defines.CVAR_LATCH);
                }
            }

            if (Cvar.VariableValue("deathmatch") != 0)
            {
                if (SV_MAIN.maxclients.value <= 1)
                {
                    Cvar.FullSet("maxclients", "8", Defines.CVAR_SERVERINFO | Defines.CVAR_LATCH);
                }
                else if (SV_MAIN.maxclients.value > Defines.MAX_CLIENTS)
                {
                    Cvar.FullSet("maxclients", "" + Defines.MAX_CLIENTS, Defines.CVAR_SERVERINFO | Defines.CVAR_LATCH);
                }
            }
            else if (Cvar.VariableValue("coop") != 0)
            {
                if (SV_MAIN.maxclients.value <= 1 || SV_MAIN.maxclients.value > 4)
                {
                    Cvar.FullSet("maxclients", "4", Defines.CVAR_SERVERINFO | Defines.CVAR_LATCH);
                }
            }
            else
            {
                Cvar.FullSet("maxclients", "1", Defines.CVAR_SERVERINFO | Defines.CVAR_LATCH);
            }

            svs.spawncount = Lib.Rand();
            svs.clients    = new client_t[( Int32 )SV_MAIN.maxclients.value];
            for (var n = 0; n < svs.clients.Length; n++)
            {
                svs.clients[n]             = new client_t();
                svs.clients[n].serverindex = n;
            }

            svs.num_client_entities = (( Int32 )SV_MAIN.maxclients.value) * Defines.UPDATE_BACKUP * 64;
            svs.client_entities     = new entity_state_t[svs.num_client_entities];
            for (var n = 0; n < svs.client_entities.Length; n++)
            {
                svs.client_entities[n] = new entity_state_t(null);
            }
            NET.Config((SV_MAIN.maxclients.value > 1));
            svs.last_heartbeat = -99999;
            idmaster           = "192.246.40.37:" + Defines.PORT_MASTER;
            NET.StringToAdr(idmaster, SV_MAIN.master_adr[0]);
            SV_GAME.SV_InitGameProgs();
            for (i = 0; i < SV_MAIN.maxclients.value; i++)
            {
                ent = GameBase.g_edicts[i + 1];
                svs.clients[i].edict   = ent;
                svs.clients[i].lastcmd = new usercmd_t();
            }
        }
Example #7
0
 private void Awake()
 {
     quickviewSize = Cvar.Get("quickview_size", "5");
     quickviewTime = Cvar.Get("quickview_time", "4");
 }
Example #8
0
    public static void Host_FindMaxClients()
    {
        svs.maxclients = 1;

        int i = COM_CheckParm("-dedicated");

        if (i > 0)
        {
            cls.state = cactive_t.ca_dedicated;
            if (i != (com_argv.Length - 1))
            {
                svs.maxclients = atoi(Argv(i + 1));
            }
            else
            {
                svs.maxclients = 8;
            }
        }
        else
        {
            cls.state = cactive_t.ca_disconnected;
        }

        i = COM_CheckParm("-listen");
        if (i > 0)
        {
            if (cls.state == cactive_t.ca_dedicated)
            {
                Sys_Error("Only one of -dedicated or -listen can be specified");
            }
            if (i != (com_argv.Length - 1))
            {
                svs.maxclients = atoi(Argv(i + 1));
            }
            else
            {
                svs.maxclients = 8;
            }
        }
        if (svs.maxclients < 1)
        {
            svs.maxclients = 8;
        }
        else if (svs.maxclients > q_shared.MAX_SCOREBOARD)
        {
            svs.maxclients = q_shared.MAX_SCOREBOARD;
        }

        svs.maxclientslimit = svs.maxclients;
        if (svs.maxclientslimit < 4)
        {
            svs.maxclientslimit = 4;
        }
        svs.clients = new client_t[svs.maxclientslimit]; // Hunk_AllocName (svs.maxclientslimit*sizeof(client_t), "clients");
        for (i = 0; i < svs.clients.Length; i++)
        {
            svs.clients[i] = new client_t();
        }

        if (svs.maxclients > 1)
        {
            Cvar.Cvar_SetValue("deathmatch", 1.0f);
        }
        else
        {
            Cvar.Cvar_SetValue("deathmatch", 0.0f);
        }
    }
Example #9
0
        public static void SV_Nextserver( )
        {
            String v;

            if (SV_INIT.sv.state == Defines.ss_game || (SV_INIT.sv.state == Defines.ss_pic && 0 == Cvar.VariableValue("coop")))
            {
                return;
            }
            SV_INIT.svs.spawncount++;
            v = Cvar.VariableString("nextserver");
            if (v.Length == 0)
            {
                Cbuf.AddText("killserver\\n");
            }
            else
            {
                Cbuf.AddText(v);
                Cbuf.AddText("\\n");
            }

            Cvar.Set("nextserver", "");
        }
Example #10
0
 public static void SV_ShowServerinfo_f( )
 {
     Info.Print(Cvar.Serverinfo());
 }
    private void AddItem(SettingItem item, MenuManager manager)
    {
        SettingItemPanel panel;

        switch (item.SettingCategory)
        {
        case SettingItemType.bindHold:
            panel = Instantiate(manager.holdItemPrefab, viewport);
            break;

        case SettingItemType.bindToggle:
            panel = Instantiate(manager.toggleItemPrefab, viewport);
            break;

        case SettingItemType.cvarBool:
            panel = Instantiate(manager.booleanItemPrefab, viewport);
            break;

        case SettingItemType.cvarFloat:
            panel = Instantiate(manager.floatItemPrefab, viewport);
            break;

        case SettingItemType.cvarInt:
            panel = Instantiate(manager.integerItemPrefab, viewport);
            break;

        case SettingItemType.cvarText:
            panel = Instantiate(manager.textItemPrefab, viewport);
            break;

        case SettingItemType.cvarIntSlider:
            panel = Instantiate(manager.integerItemSliderPrefab, viewport);
            panel.SetClamp(item.clamp);
            break;

        case SettingItemType.cvarFloatSlider:
            panel = Instantiate(manager.floatItemSliderPrefab, viewport);
            panel.SetClamp(item.clamp);
            break;

        default:
            panel = Instantiate(manager.textItemPrefab, viewport);
            break;
        }

        //set stuff
        if ((item.SettingCategory & SettingItemType.bindType) != 0)
        {
            if (BindManager.TryFindBindKey(item.command, out KeyCode k))
            {
                panel.SetValue(k.ToString());
            }
        }
        else
        {
            if (Cvar.WeakGet(item.command, out ConfVar cvar))
            {
                panel.SetValue(cvar.Text);
            }
        }

        panel.SetLabel(item.label);
        panel.SetCommand(item.command);
        panel.menuManager = manager;
        panel.SetInputClick();
        panel.item = item;

        items.Add(panel);
    }
Example #12
0
    private void Update()
    {
        //check if a map is loaded
        if (Cvar.Integer("maploaded") == 0)
        {
            return;
        }

        //mouse movement
        MouseLook();

        PlayerMoveData pmd;

        if (Globals.async.Boolean)
        {
            elapsedAsyncFrametime += Time.deltaTime;

            pmd = new PlayerMoveData
            {
                inOrigin   = lastAsyncOrigin,
                inVelocity = lastAsyncVelocity,

                inForward = Camera.transform.forward,
                inRight   = Camera.transform.right,

                camX = camX,
                camY = camY,

                addVelocities = PlayerState.addVelocities,
                gravity       = PlayerState.pm_gravity,
                frametime     = elapsedAsyncFrametime, //run delta time from last async frame
                initialSnap   = snapRequired,
                flags         = pmflags
            };
        }
        else
        {
            pmd = new PlayerMoveData
            {
                inOrigin   = out_origin,
                inVelocity = out_velocity,

                inForward     = Camera.transform.forward,
                inRight       = Camera.transform.right,
                camX          = camX,
                camY          = camY,
                addVelocities = PlayerState.addVelocities,
                gravity       = PlayerState.pm_gravity,
                frametime     = Time.deltaTime, //run current delta time
                initialSnap   = snapRequired,
                flags         = pmflags
            };
        }

        //queue velocities for async
        lastAsyncAddVelocity     += PlayerState.addVelocities;
        PlayerState.addVelocities = Vector3.zero;

        //get pmove
        PlayerMove.Pmove(ref pmd);

        //play jump sound
        if (pmd.jumped)
        {
            jumpSoundSource.Play();
        }

        //snapped -> position changed by entity. Don't allow going back.
        if (snapRequired)
        {
            previous_origin = pmd.outOrigin;
            snapRequired    = false;
        }

        //set data
        origin   = pmd.outOrigin * 0.125f;
        velocity = pmd.outVelocity * 0.125f;

        pmflags    = pmd.flags;
        viewheight = pmd.viewheight;

        //update camera
        ApplyPmoveToCamera();

        //update player state info
        PlayerState.currentSpeed     = new Vector2(velocity.x, velocity.z).magnitude;
        PlayerState.currentVieweight = viewheight;
        PlayerState.currentOrigin    = origin;

        PlayerState.mins = pmd.mins;
        PlayerState.maxs = pmd.maxs;

        //snap position and store old origin
        out_origin   = origin * 8;
        out_velocity = pmd.outVelocity;

        //FIXME: do this only on async switch
        if (!Globals.async.Boolean)
        {
            lastAsyncAddVelocity = Vector3.zero;
            lastAsyncOrigin      = out_origin;
            lastAsyncVelocity    = out_velocity;
            asyncFlags           = pmflags;
        }
    }
Example #13
0
    private void FixedUpdate()
    {
        //check if a map is loaded and async is on
        if (Cvar.Integer("maploaded") == 0 || !Globals.async.Boolean)
        {
            return;
        }

        PlayerMoveData pmd = new PlayerMoveData
        {
            inOrigin   = lastAsyncOrigin,
            inVelocity = lastAsyncVelocity,

            inForward     = Camera.transform.forward,
            inRight       = Camera.transform.right,
            camX          = camX,
            camY          = camY,
            addVelocities = lastAsyncAddVelocity,
            gravity       = PlayerState.pm_gravity,
            frametime     = Time.fixedDeltaTime,
            initialSnap   = asyncSnapRequired,
            flags         = asyncFlags
        };

        //run async frame
        PlayerMove.Pmove(ref pmd);

        //snap doesn't allow going back
        if (asyncSnapRequired)
        {
            previous_origin   = pmd.outOrigin;
            asyncSnapRequired = false;
        }

        lastAsyncOrigin      = pmd.outOrigin;
        lastAsyncVelocity    = pmd.outVelocity;
        lastAsyncAddVelocity = Vector3.zero;
        asyncFlags           = pmd.flags;

        //start counting simulated time again
        elapsedAsyncFrametime = 0;

        //overwrite all sync variables with async frame. If everything is done correctly the values should be matching
        origin       = pmd.outOrigin * 0.125f;
        out_origin   = pmd.outOrigin;
        out_velocity = pmd.outVelocity;

        velocity   = pmd.outVelocity * 0.125f;
        pmflags    = pmd.flags;
        viewheight = pmd.viewheight;

        //TODO: is everything below this even needed?
        ApplyPmoveToCamera();

        PlayerState.currentSpeed     = new Vector2(velocity.x, velocity.z).magnitude;
        PlayerState.currentVieweight = viewheight;
        PlayerState.currentOrigin    = origin;

        PlayerState.mins = pmd.mins;
        PlayerState.maxs = pmd.maxs;
    }