// tweak these if the game runs out
cl.max_csqcrenderentities = 0;
- cl.max_entities = MAX_ENITIES_INITIAL;
+ cl.max_entities = MAX_ENTITIES_INITIAL;
cl.max_static_entities = MAX_STATICENTITIES;
cl.max_effects = MAX_EFFECTS;
cl.max_beams = MAX_BEAMS;
}
}
+static void CL_ToggleMenu_Hook(void)
+{
+#ifdef CONFIG_MENU
+ // remove menu
+ if (key_dest == key_menu || key_dest == key_menu_grabbed)
+ MR_ToggleMenu(0);
+#endif
+ key_dest = key_game;
+}
+
extern cvar_t rcon_secure;
/*
sizebuf_t buf;
unsigned char bufdata[8];
if (cls.demorecording)
- CL_Stop_f(&cmd_client);
+ CL_Stop_f(cmd_client);
// send disconnect message 3 times to improve chances of server
// receiving it (but it still fails sometimes)
cls.demoplayback = cls.timedemo = host.restless = false;
cls.signon = 0;
+ Cvar_Callback(&cl_netport);
+
// If we're dropped mid-connection attempt, it won't clear otherwise.
SCR_ClearLoadingScreen(false);
}
This is sent just before a server changes levels
==================
*/
-void CL_Reconnect_f(cmd_state_t *cmd)
+static void CL_Reconnect_f(cmd_state_t *cmd)
{
char temp[128];
// if not connected, reconnect to the most recent server
M_Update_Return_Reason("");
#endif
- // Disconnect from the current server, or stop a running demo.
- CL_Disconnect();
-
// make sure the client ports are open before attempting to connect
NetConn_UpdateSockets();
{
int i;
*cls.connect_userinfo = 0;
- for(i = firstarg; i+2 <= Cmd_Argc(&cmd_client); i += 2)
- InfoString_SetValue(cls.connect_userinfo, sizeof(cls.connect_userinfo), Cmd_Argv(&cmd_client, i), Cmd_Argv(&cmd_client, i+1));
+ for(i = firstarg; i+2 <= Cmd_Argc(cmd_client); i += 2)
+ InfoString_SetValue(cls.connect_userinfo, sizeof(cls.connect_userinfo), Cmd_Argv(cmd_client, i), Cmd_Argv(cmd_client, i+1));
}
else if(firstarg < -1)
{
static void CL_EstablishConnection_Local(void)
{
- CL_EstablishConnection("local:1", -2);
+ if(cls.state == ca_disconnected)
+ CL_EstablishConnection("local:1", -2);
+}
+
+static qbool CL_Intermission(void)
+{
+ return cl.intermission;
}
/*
static void CL_ModelIndexList_f(cmd_state_t *cmd)
{
int i;
- dp_model_t *model;
+ model_t *model;
// Print Header
Con_Printf("%3s: %-30s %-8s %-8s\n", "ID", "Name", "Type", "Triangles");
{
vec3_t org;
vec_t scale;
- dp_model_t *model = ent->model;
+ model_t *model = ent->model;
// update the inverse matrix for the renderer
Matrix4x4_Invert_Simple(&ent->inversematrix, &ent->matrix);
// update the animation blend state
return render;
}
-void CL_Effect(vec3_t org, dp_model_t *model, int startframe, int framecount, float framerate)
+void CL_Effect(vec3_t org, model_t *model, int startframe, int framecount, float framerate)
{
int i;
cl_effect_t *e;
}
entity_t cl_meshentities[NUM_MESHENTITIES];
-dp_model_t cl_meshentitymodels[NUM_MESHENTITIES];
+model_t cl_meshentitymodels[NUM_MESHENTITIES];
const char *cl_meshentitynames[NUM_MESHENTITIES] =
{
"MESH_SCENE",
CL_UpdateEntityShading_Entity(r_refdef.scene.entities[i]);
}
+qbool vid_opened = false;
+void CL_StartVideo(void)
+{
+ if (!vid_opened && cls.state != ca_dedicated)
+ {
+ vid_opened = true;
+#ifdef WIN32
+ // make sure we open sockets before opening video because the Windows Firewall "unblock?" dialog can screw up the graphics context on some graphics drivers
+ NetConn_UpdateSockets();
+#endif
+ VID_Start();
+ CDAudio_Startup();
+ }
+}
+
extern cvar_t host_framerate;
extern cvar_t host_speeds;
static double clframetime;
static double cl_timer = 0;
static double time1 = 0, time2 = 0, time3 = 0;
- static double wait;
int pass1, pass2, pass3;
CL_VM_PreventInformationLeaks();
{
clframetime = cl.realframetime = max(cl_timer, 1.0 / cl_maxfps.value);
// when running slow, we need to sleep to keep input responsive
- wait = bound(0, cl_maxfps_alwayssleep.value * 1000, 100000);
- if (wait > 0)
- Sys_Sleep((int)wait);
+ if (cl_maxfps_alwayssleep.value > 0)
+ Sys_Sleep((int)bound(0, cl_maxfps_alwayssleep.value * 1000, 100000));
}
else if (!vid_activewindow && cl_maxidlefps.value >= 1 && !cls.timedemo)
clframetime = cl.realframetime = max(cl_timer, 1.0 / cl_maxidlefps.value);
{
Con_Printf("Initializing client\n");
+ Cvar_SetValueQuick(&host_isclient, 1);
+
R_Modules_Init();
Palette_Init();
#ifdef CONFIG_MENU
CL_Video_Init();
- host.hook.ConnectLocal = CL_EstablishConnection_Local;
+ NetConn_UpdateSockets_Client();
- #ifdef CONFIG_MENU
- Cbuf_InsertText(&cmd_client,"menu_start\n");
- #endif
+ host.hook.ConnectLocal = CL_EstablishConnection_Local;
+ host.hook.Disconnect = CL_Disconnect;
+ host.hook.CL_Intermission = CL_Intermission;
+ host.hook.ToggleMenu = CL_ToggleMenu_Hook;
}
}