📄 cl.java
字号:
//char fn[MAX_OSPATH]; fn = "textures/" + CM.map_surfaces[CL.precache_tex++].rname + ".wal"; if (!CL_parse.CheckOrDownloadFile(fn)) return; // started a download } } CL.precache_check = TEXTURE_CNT + 999; } // ZOID CL_parse.RegisterSounds(); CL_view.PrepRefresh(); MSG.WriteByte(Globals.cls.netchan.message, Defines.clc_stringcmd); MSG.WriteString(Globals.cls.netchan.message, "begin " + CL.precache_spawncount + "\n"); } /** * InitLocal */ public static void InitLocal() { Globals.cls.state = Defines.ca_disconnected; Globals.cls.realtime = Timer.Milliseconds(); CL_input.InitInput(); Cvar.Get("adr0", "", Defines.CVAR_ARCHIVE); Cvar.Get("adr1", "", Defines.CVAR_ARCHIVE); Cvar.Get("adr2", "", Defines.CVAR_ARCHIVE); Cvar.Get("adr3", "", Defines.CVAR_ARCHIVE); Cvar.Get("adr4", "", Defines.CVAR_ARCHIVE); Cvar.Get("adr5", "", Defines.CVAR_ARCHIVE); Cvar.Get("adr6", "", Defines.CVAR_ARCHIVE); Cvar.Get("adr7", "", Defines.CVAR_ARCHIVE); Cvar.Get("adr8", "", Defines.CVAR_ARCHIVE); // // register our variables // Globals.cl_stereo_separation = Cvar.Get("cl_stereo_separation", "0.4", Defines.CVAR_ARCHIVE); Globals.cl_stereo = Cvar.Get("cl_stereo", "0", 0); Globals.cl_add_blend = Cvar.Get("cl_blend", "1", 0); Globals.cl_add_lights = Cvar.Get("cl_lights", "1", 0); Globals.cl_add_particles = Cvar.Get("cl_particles", "1", 0); Globals.cl_add_entities = Cvar.Get("cl_entities", "1", 0); Globals.cl_gun = Cvar.Get("cl_gun", "1", 0); Globals.cl_footsteps = Cvar.Get("cl_footsteps", "1", 0); Globals.cl_noskins = Cvar.Get("cl_noskins", "0", 0); Globals.cl_autoskins = Cvar.Get("cl_autoskins", "0", 0); Globals.cl_predict = Cvar.Get("cl_predict", "1", 0); Globals.cl_maxfps = Cvar.Get("cl_maxfps", "90", 0); Globals.cl_upspeed = Cvar.Get("cl_upspeed", "200", 0); Globals.cl_forwardspeed = Cvar.Get("cl_forwardspeed", "200", 0); Globals.cl_sidespeed = Cvar.Get("cl_sidespeed", "200", 0); Globals.cl_yawspeed = Cvar.Get("cl_yawspeed", "140", 0); Globals.cl_pitchspeed = Cvar.Get("cl_pitchspeed", "150", 0); Globals.cl_anglespeedkey = Cvar.Get("cl_anglespeedkey", "1.5", 0); Globals.cl_run = Cvar.Get("cl_run", "0", Defines.CVAR_ARCHIVE); Globals.lookspring = Cvar.Get("lookspring", "0", Defines.CVAR_ARCHIVE); Globals.lookstrafe = Cvar.Get("lookstrafe", "0", Defines.CVAR_ARCHIVE); Globals.sensitivity = Cvar .Get("sensitivity", "3", Defines.CVAR_ARCHIVE); Globals.m_pitch = Cvar.Get("m_pitch", "0.022", Defines.CVAR_ARCHIVE); Globals.m_yaw = Cvar.Get("m_yaw", "0.022", 0); Globals.m_forward = Cvar.Get("m_forward", "1", 0); Globals.m_side = Cvar.Get("m_side", "1", 0); Globals.cl_shownet = Cvar.Get("cl_shownet", "0", 0); Globals.cl_showmiss = Cvar.Get("cl_showmiss", "0", 0); Globals.cl_showclamp = Cvar.Get("showclamp", "0", 0); Globals.cl_timeout = Cvar.Get("cl_timeout", "120", 0); Globals.cl_paused = Cvar.Get("paused", "0", 0); Globals.cl_timedemo = Cvar.Get("timedemo", "0", 0); Globals.rcon_client_password = Cvar.Get("rcon_password", "", 0); Globals.rcon_address = Cvar.Get("rcon_address", "", 0); Globals.cl_lightlevel = Cvar.Get("r_lightlevel", "0", 0); // // userinfo // Globals.info_password = Cvar.Get("password", "", Defines.CVAR_USERINFO); Globals.info_spectator = Cvar.Get("spectator", "0", Defines.CVAR_USERINFO); Globals.name = Cvar.Get("name", "unnamed", Defines.CVAR_USERINFO | Defines.CVAR_ARCHIVE); Globals.skin = Cvar.Get("skin", "male/grunt", Defines.CVAR_USERINFO | Defines.CVAR_ARCHIVE); Globals.rate = Cvar.Get("rate", "25000", Defines.CVAR_USERINFO | Defines.CVAR_ARCHIVE); // FIXME Globals.msg = Cvar.Get("msg", "1", Defines.CVAR_USERINFO | Defines.CVAR_ARCHIVE); Globals.hand = Cvar.Get("hand", "0", Defines.CVAR_USERINFO | Defines.CVAR_ARCHIVE); Globals.fov = Cvar.Get("fov", "90", Defines.CVAR_USERINFO | Defines.CVAR_ARCHIVE); Globals.gender = Cvar.Get("gender", "male", Defines.CVAR_USERINFO | Defines.CVAR_ARCHIVE); Globals.gender_auto = Cvar .Get("gender_auto", "1", Defines.CVAR_ARCHIVE); Globals.gender.modified = false; // clear this so we know when user sets // it manually Globals.cl_vwep = Cvar.Get("cl_vwep", "1", Defines.CVAR_ARCHIVE); // // register our commands // Cmd.AddCommand("cmd", ForwardToServer_f); Cmd.AddCommand("pause", Pause_f); Cmd.AddCommand("pingservers", PingServers_f); Cmd.AddCommand("skins", Skins_f); Cmd.AddCommand("userinfo", Userinfo_f); Cmd.AddCommand("snd_restart", Snd_Restart_f); Cmd.AddCommand("changing", Changing_f); Cmd.AddCommand("disconnect", Disconnect_f); Cmd.AddCommand("record", Record_f); Cmd.AddCommand("stop", Stop_f); Cmd.AddCommand("quit", Quit_f); Cmd.AddCommand("connect", Connect_f); Cmd.AddCommand("reconnect", Reconnect_f); Cmd.AddCommand("rcon", Rcon_f); Cmd.AddCommand("precache", Precache_f); Cmd.AddCommand("download", CL_parse.Download_f); // // forward to server commands // // the only thing this does is allow command completion // to work -- all unknown commands are automatically // forwarded to the server Cmd.AddCommand("wave", null); Cmd.AddCommand("inven", null); Cmd.AddCommand("kill", null); Cmd.AddCommand("use", null); Cmd.AddCommand("drop", null); Cmd.AddCommand("say", null); Cmd.AddCommand("say_team", null); Cmd.AddCommand("info", null); Cmd.AddCommand("prog", null); Cmd.AddCommand("give", null); Cmd.AddCommand("god", null); Cmd.AddCommand("notarget", null); Cmd.AddCommand("noclip", null); Cmd.AddCommand("invuse", null); Cmd.AddCommand("invprev", null); Cmd.AddCommand("invnext", null); Cmd.AddCommand("invdrop", null); Cmd.AddCommand("weapnext", null); Cmd.AddCommand("weapprev", null); } /** * WriteConfiguration * * Writes key bindings and archived cvars to config.cfg. */ public static void WriteConfiguration() { RandomAccessFile f; String path;// if (Globals.cls.state == Defines.ca_uninitialized)// return; path = FS.Gamedir() + "/config.cfg"; f = Lib.fopen(path, "rw"); if (f == null) { Com.Printf("Couldn't write config.cfg.\n"); return; } try { f.seek(0); f.setLength(0); } catch (IOException e1) { } try { f.writeBytes("// generated by quake, do not modify\n"); } catch (IOException e) { } Key.WriteBindings(f); Lib.fclose(f); Cvar.WriteVariables(path); } /** * FixCvarCheats */ public static void FixCvarCheats() { int i; CL.cheatvar_t var; if ("1".equals(Globals.cl.configstrings[Defines.CS_MAXCLIENTS]) || 0 == Globals.cl.configstrings[Defines.CS_MAXCLIENTS] .length()) return; // single player can cheat // find all the cvars if we haven't done it yet if (0 == CL.numcheatvars) { while (CL.cheatvars[CL.numcheatvars].name != null) { CL.cheatvars[CL.numcheatvars].var = Cvar.Get( CL.cheatvars[CL.numcheatvars].name, CL.cheatvars[CL.numcheatvars].value, 0); CL.numcheatvars++; } } // make sure they are all set to the proper values for (i = 0; i < CL.numcheatvars; i++) { var = CL.cheatvars[i]; if (!var.var.string.equals(var.value)) { Cvar.Set(var.name, var.value); } } } // ============================================================= /** * SendCommand */ public static void SendCommand() { // get new key events Sys.SendKeyEvents(); // allow mice or other external controllers to add commands IN.Commands(); // process console commands Cbuf.Execute(); // fix any cheating cvars FixCvarCheats(); // send intentions now CL_input.SendCmd(); // resend a connection request if necessary CheckForResend(); } // private static int lasttimecalled; /** * Frame */ public static void Frame(int msec) { if (Globals.dedicated.value != 0) return; extratime += msec; if (Globals.cl_timedemo.value == 0.0f) { if (Globals.cls.state == Defines.ca_connected && extratime < 100) { return; // don't flood packets out while connecting } if (extratime < 1000 / Globals.cl_maxfps.value) { return; // framerate is too high } } // let the mouse activate or deactivate IN.Frame(); // decide the simulation time Globals.cls.frametime = extratime / 1000.0f; Globals.cl.time += extratime; Globals.cls.realtime = Globals.curtime; extratime = 0; if (Globals.cls.frametime > (1.0f / 5)) Globals.cls.frametime = (1.0f / 5); // if in the debugger last frame, don't timeout if (msec > 5000) Globals.cls.netchan.last_received = Timer.Milliseconds(); // fetch results from server ReadPackets(); // send a new command message to the server SendCommand(); // predict all unacknowledged movements CL_pred.PredictMovement(); // allow rendering DLL change VID.CheckChanges(); if (!Globals.cl.refresh_prepped && Globals.cls.state == Defines.ca_active) { CL_view.PrepRefresh(); // force GC after level loading // but not on playing a cinematic if (Globals.cl.cinematictime == 0) System.gc(); } SCR.UpdateScreen(); // update audio S.Update(Globals.cl.refdef.vieworg, Globals.cl.v_forward, Globals.cl.v_right, Globals.cl.v_up); // advance local effects for next frame CL_fx.RunDLights(); CL_fx.RunLightStyles(); SCR.RunCinematic(); SCR.RunConsole(); Globals.cls.framecount++; if (Globals.cls.state != Defines.ca_active || Globals.cls.key_dest != Defines.key_game) { try { Thread.sleep(20); } catch (InterruptedException e) { } } } /** * Shutdown */ public static void Shutdown() { if (isdown) { System.out.print("recursive shutdown\n"); return; } isdown = true; WriteConfiguration(); S.Shutdown(); IN.Shutdown(); VID.Shutdown(); } /** * Initialize client subsystem. */ public static void Init() { if (Globals.dedicated.value != 0.0f) return; // nothing running on the client // all archived variables will now be loaded Console.Init(); //ok S.Init(); //empty VID.Init(); V.Init(); Globals.net_message.data = Globals.net_message_buffer; Globals.net_message.maxsize = Globals.net_message_buffer.length; Menu.Init(); SCR.Init(); //Globals.cls.disable_screen = 1.0f; // don't draw yet InitLocal(); IN.Init(); FS.ExecAutoexec(); Cbuf.Execute(); } /** * Called after an ERR_DROP was thrown. */ public static void Drop() { if (Globals.cls.state == Defines.ca_uninitialized) return; if (Globals.cls.state == Defines.ca_disconnected) return; Disconnect(); // drop loading plaque unless this is the initial game start if (Globals.cls.disable_servercount != -1) SCR.EndLoadingPlaque(); // get rid of loading plaque }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -