Browse Source

engine: client: netgraph: add in_graph kbutton support, staticify netgraph

pull/2/head
Alibek Omarov 4 years ago
parent
commit
13a3f22001
  1. 61
      engine/client/cl_netgraph.c

61
engine/client/cl_netgraph.c

@ -15,6 +15,7 @@ GNU General Public License for more details.
#include "common.h" #include "common.h"
#include "client.h" #include "client.h"
#include "kbutton.h"
#if XASH_LOW_MEMORY == 0 #if XASH_LOW_MEMORY == 0
#define NET_TIMINGS 1024 #define NET_TIMINGS 1024
@ -33,11 +34,11 @@ GNU General Public License for more details.
#define NUM_LATENCY_SAMPLES 8 #define NUM_LATENCY_SAMPLES 8
convar_t *net_graph; convar_t *net_graph;
convar_t *net_graphpos; static convar_t *net_graphpos;
convar_t *net_graphwidth; static convar_t *net_graphwidth;
convar_t *net_graphheight; static convar_t *net_graphheight;
convar_t *net_graphsolid; static convar_t *net_graphsolid;
convar_t *net_scale; static convar_t *net_scale;
static struct packet_latency_t static struct packet_latency_t
{ {
@ -95,7 +96,7 @@ NetGraph_AtEdge
edge detect edge detect
========== ==========
*/ */
qboolean NetGraph_AtEdge( int x, int width ) static qboolean NetGraph_AtEdge( int x, int width )
{ {
if( x > 3 ) if( x > 3 )
{ {
@ -113,7 +114,7 @@ NetGraph_InitColors
init netgraph colors init netgraph colors
========== ==========
*/ */
void NetGraph_InitColors( void ) static void NetGraph_InitColors( void )
{ {
byte mincolor[2][3]; byte mincolor[2][3];
byte maxcolor[2][3]; byte maxcolor[2][3];
@ -167,7 +168,7 @@ NetGraph_GetFrameData
get frame data info, like chokes, packet losses, also update graph, packet and cmdinfo get frame data info, like chokes, packet losses, also update graph, packet and cmdinfo
========== ==========
*/ */
void NetGraph_GetFrameData( float *latency, int *latency_count ) static void NetGraph_GetFrameData( float *latency, int *latency_count )
{ {
int i, choke_count = 0, loss_count = 0; int i, choke_count = 0, loss_count = 0;
double newtime = Sys_DoubleTime(); double newtime = Sys_DoubleTime();
@ -249,7 +250,7 @@ NetGraph_DrawTimes
=========== ===========
*/ */
void NetGraph_DrawTimes( wrect_t rect, int x, int w ) static void NetGraph_DrawTimes( wrect_t rect, int x, int w )
{ {
int i, j, extrap_point = NETGRAPH_LERP_HEIGHT / 3, a, h; int i, j, extrap_point = NETGRAPH_LERP_HEIGHT / 3, a, h;
rgba_t colors = { 0.9 * 255, 0.9 * 255, 0.7 * 255, 255 }; rgba_t colors = { 0.9 * 255, 0.9 * 255, 0.7 * 255, 255 };
@ -324,7 +325,7 @@ NetGraph_DrawHatches
=========== ===========
*/ */
void NetGraph_DrawHatches( int x, int y ) static void NetGraph_DrawHatches( int x, int y )
{ {
int ystep = (int)( 10.0f / net_scale->value ); int ystep = (int)( 10.0f / net_scale->value );
byte colorminor[4] = { 0, 63, 63, 200 }; byte colorminor[4] = { 0, 63, 63, 200 };
@ -353,7 +354,7 @@ NetGraph_DrawTextFields
=========== ===========
*/ */
void NetGraph_DrawTextFields( int x, int y, int w, wrect_t rect, int count, float avg, int packet_loss, int packet_choke ) static void NetGraph_DrawTextFields( int x, int y, int w, wrect_t rect, int count, float avg, int packet_loss, int packet_choke, int graphtype )
{ {
static int lastout; static int lastout;
rgba_t colors = { 0.9 * 255, 0.9 * 255, 0.7 * 255, 255 }; rgba_t colors = { 0.9 * 255, 0.9 * 255, 0.7 * 255, 255 };
@ -400,7 +401,7 @@ void NetGraph_DrawTextFields( int x, int y, int w, wrect_t rect, int count, floa
Con_DrawString( x, y, va( "out: %i %.2f k/s", out, cls.netchan.flow[FLOW_OUTGOING].avgkbytespersec ), colors ); Con_DrawString( x, y, va( "out: %i %.2f k/s", out, cls.netchan.flow[FLOW_OUTGOING].avgkbytespersec ), colors );
y += 15; y += 15;
if( net_graph->value > 2 ) if( graphtype > 2 )
{ {
int loss = (int)(( packet_loss + PACKETLOSS_AVG_FRAC ) - 0.01f ); int loss = (int)(( packet_loss + PACKETLOSS_AVG_FRAC ) - 0.01f );
int choke = (int)(( packet_choke + PACKETCHOKE_AVG_FRAC ) - 0.01f ); int choke = (int)(( packet_choke + PACKETCHOKE_AVG_FRAC ) - 0.01f );
@ -409,7 +410,7 @@ void NetGraph_DrawTextFields( int x, int y, int w, wrect_t rect, int count, floa
} }
} }
if( net_graph->value < 3 ) if( graphtype < 3 )
Con_DrawString( ptx, pty, va( "%i/s", (int)cl_cmdrate->value ), colors ); Con_DrawString( ptx, pty, va( "%i/s", (int)cl_cmdrate->value ), colors );
Con_DrawString( ptx, last_y, va( "%i/s" , (int)cl_updaterate->value ), colors ); Con_DrawString( ptx, last_y, va( "%i/s" , (int)cl_updaterate->value ), colors );
@ -423,7 +424,7 @@ NetGraph_DrawDataSegment
=========== ===========
*/ */
int NetGraph_DrawDataSegment( wrect_t *fill, int bytes, byte r, byte g, byte b, byte a ) static int NetGraph_DrawDataSegment( wrect_t *fill, int bytes, byte r, byte g, byte b, byte a )
{ {
float h = bytes / net_scale->value; float h = bytes / net_scale->value;
byte colors[4] = { r, g, b, a }; byte colors[4] = { r, g, b, a };
@ -450,7 +451,7 @@ NetGraph_ColorForHeight
color based on packet latency color based on packet latency
=========== ===========
*/ */
void NetGraph_ColorForHeight( struct packet_latency_t *packet, byte color[4], int *ping ) static void NetGraph_ColorForHeight( struct packet_latency_t *packet, byte color[4], int *ping )
{ {
switch( packet->latency ) switch( packet->latency )
{ {
@ -485,7 +486,7 @@ NetGraph_DrawDataUsage
=========== ===========
*/ */
void NetGraph_DrawDataUsage( int x, int y, int w ) static void NetGraph_DrawDataUsage( int x, int y, int w, int graphtype )
{ {
int a, i, h, lastvalidh = 0, ping; int a, i, h, lastvalidh = 0, ping;
int pingheight = net_graphheight->value - NETGRAPH_LERP_HEIGHT - 2; int pingheight = net_graphheight->value - NETGRAPH_LERP_HEIGHT - 2;
@ -540,7 +541,7 @@ void NetGraph_DrawDataUsage( int x, int y, int w )
if( NetGraph_AtEdge( a, w )) if( NetGraph_AtEdge( a, w ))
NetGraph_DrawRect( &fill, color ); NetGraph_DrawRect( &fill, color );
if( net_graph->value < 2 ) if( graphtype < 2 )
continue; continue;
color[0] = color[1] = color[2] = color[3] = 255; color[0] = color[1] = color[2] = color[3] = 255;
@ -587,7 +588,7 @@ void NetGraph_DrawDataUsage( int x, int y, int w )
continue; continue;
} }
if( net_graph->value >= 2 ) if( graphtype >= 2 )
NetGraph_DrawHatches( x, y - net_graphheight->value - 1 ); NetGraph_DrawHatches( x, y - net_graphheight->value - 1 );
} }
@ -597,7 +598,7 @@ NetGraph_GetScreenPos
=========== ===========
*/ */
void NetGraph_GetScreenPos( wrect_t *rect, int *w, int *x, int *y ) static void NetGraph_GetScreenPos( wrect_t *rect, int *w, int *x, int *y )
{ {
rect->left = rect->top = 0; rect->left = rect->top = 0;
rect->right = refState.width; rect->right = refState.width;
@ -636,6 +637,8 @@ void SCR_DrawNetGraph( void )
float avg_ping; float avg_ping;
int ping_count; int ping_count;
int w, x, y; int w, x, y;
kbutton_t *in_graph;
int graphtype;
if( !host.allow_console ) if( !host.allow_console )
return; return;
@ -643,8 +646,20 @@ void SCR_DrawNetGraph( void )
if( cls.state != ca_active ) if( cls.state != ca_active )
return; return;
if( !net_graph->value ) in_graph = clgame.dllFuncs.KB_Find( "in_graph" );
if( in_graph->state & 1 )
{
graphtype = 2;
}
else if( net_graph->value != 0.0f )
{
graphtype = (int)net_graph->value;
}
else
{
return; return;
}
if( net_scale->value <= 0 ) if( net_scale->value <= 0 )
Cvar_SetValue( "net_scale", 0.1f ); Cvar_SetValue( "net_scale", 0.1f );
@ -653,16 +668,16 @@ void SCR_DrawNetGraph( void )
NetGraph_GetFrameData( &avg_ping, &ping_count ); NetGraph_GetFrameData( &avg_ping, &ping_count );
NetGraph_DrawTextFields( x, y, w, rect, ping_count, avg_ping, packet_loss, packet_choke ); NetGraph_DrawTextFields( x, y, w, rect, ping_count, avg_ping, packet_loss, packet_choke, graphtype );
if( net_graph->value < 3 ) if( graphtype < 3 )
{ {
ref.dllFuncs.GL_SetRenderMode( kRenderTransAdd ); ref.dllFuncs.GL_SetRenderMode( kRenderTransAdd );
ref.dllFuncs.GL_Bind( XASH_TEXTURE0, R_GetBuiltinTexture( REF_WHITE_TEXTURE ) ); ref.dllFuncs.GL_Bind( XASH_TEXTURE0, R_GetBuiltinTexture( REF_WHITE_TEXTURE ) );
ref.dllFuncs.Begin( TRI_QUADS ); // draw all the fills as a long solid sequence of quads for speedup reasons ref.dllFuncs.Begin( TRI_QUADS ); // draw all the fills as a long solid sequence of quads for speedup reasons
// NOTE: fill colors without texture at this point // NOTE: fill colors without texture at this point
NetGraph_DrawDataUsage( x, y, w ); NetGraph_DrawDataUsage( x, y, w, graphtype );
NetGraph_DrawTimes( rect, x, w ); NetGraph_DrawTimes( rect, x, w );
ref.dllFuncs.End(); ref.dllFuncs.End();

Loading…
Cancel
Save