X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=cl_screen.c;h=86081c27ae17dc093f2f27e26a88e736cf42ed21;hb=2b308c9a74460d52fa1ea81307164b500bad3c03;hp=c29c7ca7e81f02fadf57cbe1306d40e51197981c;hpb=5715fdeb47caa02252ab9b6c0895310e43bea716;p=xonotic%2Fdarkplaces.git diff --git a/cl_screen.c b/cl_screen.c index c29c7ca7..86081c27 100644 --- a/cl_screen.c +++ b/cl_screen.c @@ -237,32 +237,37 @@ void SCR_SetUpToDrawConsole (void) { Con_CheckResize (); -// decide on the height of the console - con_forcedup = !cl.worldmodel || cls.signon != SIGNONS; + if (key_dest == key_game && cls.signon != SIGNONS) + key_consoleactive |= KEY_CONSOLEACTIVE_FORCED; + else + key_consoleactive &= ~KEY_CONSOLEACTIVE_FORCED; - if (con_forcedup) - { - scr_conlines = vid.conheight; // full screen - scr_con_current = scr_conlines; - } - else if (key_dest == key_console) +// decide on the height of the console + if (key_consoleactive & KEY_CONSOLEACTIVE_FORCED) + scr_conlines = vid.conheight; // full screen + else if (key_consoleactive & KEY_CONSOLEACTIVE_USER) scr_conlines = vid.conheight/2; // half screen else scr_conlines = 0; // none visible - if (scr_conlines < scr_con_current) + if (scr_conspeed.value) { - scr_con_current -= scr_conspeed.value*host_realframetime; - if (scr_conlines > scr_con_current) - scr_con_current = scr_conlines; - - } - else if (scr_conlines > scr_con_current) - { - scr_con_current += scr_conspeed.value*host_realframetime; if (scr_conlines < scr_con_current) - scr_con_current = scr_conlines; + { + scr_con_current -= scr_conspeed.value*host_realframetime; + if (scr_conlines > scr_con_current) + scr_con_current = scr_conlines; + + } + else if (scr_conlines > scr_con_current) + { + scr_con_current += scr_conspeed.value*host_realframetime; + if (scr_conlines < scr_con_current) + scr_con_current = scr_conlines; + } } + else + scr_con_current = scr_conlines; } /* @@ -347,7 +352,7 @@ void R_TimeReport(char *desc) void R_TimeReport_Start(void) { - r_timereport_active = r_speeds.integer && cl.worldmodel && cls.state == ca_connected; + r_timereport_active = r_speeds.integer && cls.signon == SIGNONS && cls.state == ca_connected; r_speeds_string[0] = 0; if (r_timereport_active) { @@ -355,15 +360,14 @@ void R_TimeReport_Start(void) AngleVectors (r_refdef.viewangles, vpn, NULL, NULL); sprintf(r_speeds_string, "org:'%+8.2f %+8.2f %+8.2f' ang:'%+4.0f %+4.0f %+4.0f' dir:'%+2.3f %+2.3f %+2.3f'\n" - "world:%6i faces%6i nodes%6i leafs%6i walls%6i dlitwalls\n" + "world:%6i faces%6i nodes%6i leafs%6i dlitwalls\n" "%5i models%5i bmodels%5i sprites%6i particles%4i dlights\n" "%6i modeltris%6i meshs%6i meshtris\n", r_refdef.vieworg[0], r_refdef.vieworg[1], r_refdef.vieworg[2], r_refdef.viewangles[0], r_refdef.viewangles[1], r_refdef.viewangles[2], vpn[0], vpn[1], vpn[2], - c_faces, c_nodes, c_leafs, c_brush_polys, c_light_polys, + c_faces, c_nodes, c_leafs, c_light_polys, c_models, c_bmodels, c_sprites, c_particles, c_dlights, - c_alias_polys, c_meshs, c_meshtris); + c_alias_polys, c_meshs, c_meshelements / 3); - c_brush_polys = 0; c_alias_polys = 0; c_light_polys = 0; c_faces = 0; @@ -373,6 +377,8 @@ void R_TimeReport_Start(void) c_bmodels = 0; c_sprites = 0; c_particles = 0; + c_meshs = 0; + c_meshelements = 0; r_timereport_start = Sys_DoubleTime(); } @@ -477,7 +483,7 @@ void DrawQ_Pic(float x, float y, char *picname, float width, float height, float { int size; drawqueue_t *dq; - if (alpha < (1.0f / 255.0f)) + if (alpha < (1.0f / 255.0f) || !picname || !picname[0]) return; size = sizeof(*dq) + ((strlen(picname) + 1 + 3) & ~3); if (r_refdef.drawqueuesize + size > r_refdef.maxdrawqueuesize) @@ -500,7 +506,7 @@ void DrawQ_Pic(float x, float y, char *picname, float width, float height, float r_refdef.drawqueuesize += dq->size; } -void DrawQ_String(float x, float y, char *string, int maxlen, float scalex, float scaley, float red, float green, float blue, float alpha, int flags) +void DrawQ_String(float x, float y, const char *string, int maxlen, float scalex, float scaley, float red, float green, float blue, float alpha, int flags) { int size, len; drawqueue_t *dq; @@ -574,8 +580,8 @@ void DrawQ_Mesh (drawqueuemesh_t *mesh, int flags) drawqueuemesh_t *m; size = sizeof(*dq); size += sizeof(drawqueuemesh_t); - size += sizeof(int) * mesh->numindices; - size += sizeof(float[3]) * mesh->numvertices; + size += sizeof(int[3]) * mesh->numtriangles; + size += sizeof(float[4]) * mesh->numvertices; size += sizeof(float[2]) * mesh->numvertices; size += sizeof(float[4]) * mesh->numvertices; if (r_refdef.drawqueuesize + size > r_refdef.maxdrawqueuesize) @@ -591,12 +597,12 @@ void DrawQ_Mesh (drawqueuemesh_t *mesh, int flags) dq->scaley = 0; p = (void *)(dq + 1); m = p;(qbyte *)p += sizeof(drawqueuemesh_t); - m->numindices = mesh->numindices; + m->numtriangles = mesh->numtriangles; m->numvertices = mesh->numvertices; m->texture = mesh->texture; - m->indices = p;memcpy(m->indices , mesh->indices , m->numindices * sizeof(int ));(qbyte *)p += m->numindices * sizeof(int ); - m->vertices = p;memcpy(m->vertices , mesh->vertices , m->numvertices * sizeof(float[3]));(qbyte *)p += m->numvertices * sizeof(float[3]); - m->texcoords = p;memcpy(m->texcoords, mesh->texcoords, m->numvertices * sizeof(float[2]));(qbyte *)p += m->numvertices * sizeof(float[2]); + m->indices = p;memcpy(m->indices , mesh->indices , m->numtriangles * sizeof(int[3]));(qbyte *)p += m->numtriangles * sizeof(int[3]); + m->vertices = p;memcpy(m->vertices , mesh->vertices , m->numvertices * sizeof(float[4]));(qbyte *)p += m->numvertices * sizeof(float[4]); + m->texcoords = p;memcpy(m->texcoords, mesh->texcoords, m->numvertices * sizeof(float[4]));(qbyte *)p += m->numvertices * sizeof(float[4]); m->colors = p;memcpy(m->colors , mesh->colors , m->numvertices * sizeof(float[4]));(qbyte *)p += m->numvertices * sizeof(float[4]); r_refdef.drawqueuesize += dq->size; } @@ -683,7 +689,7 @@ static void SCR_CalcRefdef (void) if (cl.worldmodel) { Mod_CheckLoaded(cl.worldmodel); - contents = Mod_PointInLeaf(r_refdef.vieworg, cl.worldmodel)->contents; + contents = Mod_PointContents(r_refdef.vieworg, cl.worldmodel); if (contents != CONTENTS_EMPTY && contents != CONTENTS_SOLID) { r_refdef.fov_x *= (sin(cl.time * 4.7) * 0.015 + 0.985); @@ -879,10 +885,9 @@ void SHOWLMP_decodeshow(void) void SHOWLMP_drawall(void) { int i; - if (cl.worldmodel) - for (i = 0;i < SHOWLMP_MAXLABELS;i++) - if (showlmp[i].isactive) - DrawQ_Pic(showlmp[i].x, showlmp[i].y, showlmp[i].pic, 0, 0, 1, 1, 1, 1, 0); + for (i = 0;i < SHOWLMP_MAXLABELS;i++) + if (showlmp[i].isactive) + DrawQ_Pic(showlmp[i].x, showlmp[i].y, showlmp[i].pic, 0, 0, 1, 1, 1, 1, 0); } void SHOWLMP_clear(void) @@ -938,7 +943,8 @@ void CL_UpdateScreen(void) else cl_avidemo_frame = 0; - R_TimeReport("other"); + if (cls.signon == SIGNONS) + R_TimeReport("other"); CL_SetupScreenSize(); @@ -947,39 +953,39 @@ void CL_UpdateScreen(void) V_UpdateBlends(); V_CalcRefdef (); - R_TimeReport("setup"); - - SCR_DrawNet (); - SCR_DrawTurtle (); - SCR_DrawPause (); - - Sbar_Draw(); - - SCR_CheckDrawCenterString(); - SHOWLMP_drawall(); - - SCR_DrawConsole(); + if (cls.signon == SIGNONS) + R_TimeReport("setup"); - ui_draw(); + //FIXME: force menu if nothing else to look at? + //if (key_dest == key_game && cls.signon != SIGNONS && cls.state == ca_disconnected) if (scr_drawloading) { scr_drawloading = false; SCR_DrawLoading(); } - - CL_DrawVideo(); - - R_TimeReport("2d"); - - // add r_speeds text to queue - R_TimeReport_End(); - - // start a new timing run - R_TimeReport_Start(); - - // make menu fade everything else on the screen - M_Draw(); + else + { + if (cls.signon == SIGNONS) + { + SCR_DrawNet (); + SCR_DrawTurtle (); + SCR_DrawPause (); + Sbar_Draw(); + SHOWLMP_drawall(); + SCR_CheckDrawCenterString(); + } + ui_draw(); + CL_DrawVideo(); + M_Draw(); + if (cls.signon == SIGNONS) + { + R_TimeReport("2d"); + R_TimeReport_End(); + R_TimeReport_Start(); + } + } + SCR_DrawConsole(); SCR_UpdateScreen(); }