X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=cl_main.c;h=45cb43d6f1f39b176e7f6a137daa1c5289b8cf95;hp=e4d56733a18ba40c7f93b5ce241f1d1e35b2b46f;hb=0207a10e1576d5ebe67730b5b98709383613f4df;hpb=0706fdfa8e33548670e59234409eac2c51849631 diff --git a/cl_main.c b/cl_main.c index e4d56733..45cb43d6 100644 --- a/cl_main.c +++ b/cl_main.c @@ -360,7 +360,8 @@ Sends a disconnect message to the server This is also called on Host_Error, so it shouldn't cause any errors ===================== */ -void CL_Disconnect(qbool kicked, const char *fmt, ... ) + +void CL_DisconnectEx(qbool kicked, const char *fmt, ... ) { va_list argptr; char reason[512]; @@ -460,6 +461,11 @@ void CL_Disconnect(qbool kicked, const char *fmt, ... ) host.hook.SV_Shutdown(); } +void CL_Disconnect(void) +{ + CL_DisconnectEx(false, NULL); +} + /* ================== CL_Reconnect_f @@ -538,7 +544,7 @@ static void CL_Connect_f(cmd_state_t *cmd) void CL_Disconnect_f(cmd_state_t *cmd) { - CL_Disconnect(false, Cmd_Argc(cmd) > 1 ? Cmd_Argv(cmd, 1) : NULL); + Cmd_Argc(cmd) < 1 ? CL_Disconnect() : CL_DisconnectEx(false, Cmd_Argv(cmd, 1)); } @@ -2521,7 +2527,29 @@ static void CL_MeshEntities_Restart(void) } } -static void CL_MeshEntities_Init(void) +static void CL_MeshEntities_Start(void) +{ + int i; + entity_t *ent; + for(i = 0; i < NUM_MESHENTITIES; i++) + { + ent = cl_meshentities + i; + Mod_Mesh_Create(ent->render.model, cl_meshentitynames[i]); + } +} + +static void CL_MeshEntities_Shutdown(void) +{ + int i; + entity_t *ent; + for(i = 0; i < NUM_MESHENTITIES; i++) + { + ent = cl_meshentities + i; + Mod_Mesh_Destroy(ent->render.model); + } +} + +void CL_MeshEntities_Init(void) { int i; entity_t *ent; @@ -2557,7 +2585,7 @@ static void CL_MeshEntities_Init(void) CL_UpdateRenderEntity(&ent->render); } cl_meshentities[MESH_UI].render.flags = RENDER_NOSELFSHADOW; - R_RegisterModule("cl_meshentities", CL_MeshEntities_Restart, CL_MeshEntities_Restart, CL_MeshEntities_Restart, CL_MeshEntities_Restart, CL_MeshEntities_Restart); + R_RegisterModule("CL_MeshEntities", CL_MeshEntities_Start, CL_MeshEntities_Shutdown, CL_MeshEntities_Restart, CL_MeshEntities_Restart, CL_MeshEntities_Restart); } void CL_MeshEntities_Scene_Clear(void) @@ -2579,10 +2607,6 @@ void CL_MeshEntities_Scene_FinalizeRenderEntity(void) VectorCopy(ent->render.model->normalmaxs, ent->render.maxs); } -static void CL_MeshEntities_Shutdown(void) -{ -} - extern cvar_t r_overheadsprites_pushback; extern cvar_t r_fullbright_directed_pitch_relative; extern cvar_t r_fullbright_directed_pitch; @@ -2932,7 +2956,7 @@ void CL_Shutdown (void) S_StopAllSounds(); // disconnect client from server if active - CL_Disconnect(false, NULL); + CL_Disconnect(); CL_Video_Shutdown(); @@ -3105,14 +3129,13 @@ void CL_Init (void) CL_Parse_Init(); CL_Particles_Init(); CL_Screen_Init(); - CL_MeshEntities_Init(); CL_Video_Init(); NetConn_UpdateSockets_Client(); host.hook.ConnectLocal = CL_EstablishConnection_Local; - host.hook.Disconnect = CL_Disconnect; + host.hook.Disconnect = CL_DisconnectEx; host.hook.CL_Intermission = CL_Intermission; host.hook.ToggleMenu = CL_ToggleMenu_Hook; }