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); }
public static void Init( ) { in_mouse = Cvar.Get("in_mouse", "1", CVAR_ARCHIVE); in_joystick = Cvar.Get("in_joystick", "0", CVAR_ARCHIVE); }
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"); }
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'; } }
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); }
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(); } }
private void Awake() { quickviewSize = Cvar.Get("quickview_size", "5"); quickviewTime = Cvar.Get("quickview_time", "4"); }
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); } }
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", ""); }
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); }
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; } }
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; }