Exemplo n.º 1
0
void serverlist_frame() {
    int i;
    for (i = 0; i < server_count; i++) {
        msg_t *msg = sock_recv(&serverlist[i].sock);
        if (msg) {
            serverlist[i].ping_end = millis();
            skip_data(msg, strlen("info\n"));
            read_server(serverlist + i, read_string(msg));
            if (partial_match(filter, serverlist[i].name) || partial_match(filter, serverlist[i].map)
                    || partial_match(filter, serverlist[i].mod) || partial_match(filter, serverlist[i].gametype))
                ui_output(output_client, "^5%i ^7(%i) %s %s ^5[^7%s^5] [^7%s:%s^5]\n", i, serverlist[i].ping_end - serverlist[i].ping_start,
                        serverlist[i].players, serverlist[i].name, serverlist[i].map, serverlist[i].mod, serverlist[i].gametype);
            serverlist[i].received = qtrue;
        }
        if (serverlist[i].ping_retries > 0
                && !serverlist[i].received && millis() >= serverlist[i].ping_start + PING_TIMEOUT)
            ping_server(serverlist + i);
    }

    master_t *master;
    for (master = masters; master->address; master++) {
        msg_t *msg = sock_recv(&master->sock);
        if (!msg)
            continue;

        char address_string[32];
        qbyte address[4];
        unsigned short port;

        skip_data(msg, strlen("getserversResponse"));
        while (msg->readcount + 7 <= msg->cursize) {
            char prefix = read_char(msg);
            port = 0;

            if (prefix == '\\') {
                read_data(msg, address, 4);
                port = ShortSwap(read_short(msg));
                sprintf(address_string, "%u.%u.%u.%u", address[0], address[1], address[2], address[3]);
            }

            if (port != 0) {
                server_t *server = find_server(address_string, port);
                if (server != NULL)
                    continue;
                server = serverlist + server_count++;
                sock_init(&server->sock);
                strcpy(server->address, address_string);
                server->port = port;
                server->received = qfalse;
                server->ping_retries = MAX_PING_RETRIES + 1;
                ping_server(server);
            }
        }
    }
}
Exemplo n.º 2
0
Arquivo: interp.c Projeto: paud/d2x-xl
inline int G3CheckAndSwap (void *modelP)
{
	short	h = WORDVAL (modelP);

if ((h >= 0) && (h <= OP_GLOW))
	return 1;
ShortSwap (&h);
if ((h < 0) || (h > OP_GLOW))
	return 0;
G3SwapPolyModelData (modelP);
return 1;
}
Exemplo n.º 3
0
/*
* CL_ParseGetServersResponseMessage
* Handle a reply from getservers message to master server
*/
static void CL_ParseGetServersResponseMessage( msg_t *msg, qboolean extended )
{
	const char *header;
	char adrString[64];
	qbyte addr[16];
	unsigned short port;
	netadr_t adr;

	MSG_BeginReading( msg );
	MSG_ReadLong( msg ); // skip the -1

	//jump over the command name
	header = ( extended ? "getserversExtResponse" : "getserversResponse" );
	if( !MSG_SkipData( msg, strlen( header ) ) )
	{
		Com_Printf( "Invalid master packet ( missing %s )\n", header );
		return;
	}

	while( msg->readcount + 7 <= msg->cursize )
	{
		char prefix = MSG_ReadChar( msg );

		switch( prefix )
		{
		case '\\':
			MSG_ReadData( msg, addr, 4 );
			port = ShortSwap( MSG_ReadShort( msg ) ); // both endians need this swapped.
			Q_snprintfz( adrString, sizeof( adrString ), "%u.%u.%u.%u:%u", addr[0], addr[1], addr[2], addr[3], port );
			break;

		case '/':
			if( extended )
			{
				MSG_ReadData( msg, addr, 16 );
				port = ShortSwap( MSG_ReadShort( msg ) ); // both endians need this swapped.
				Q_snprintfz( adrString, sizeof( adrString ), "[%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x]:%hu",
								addr[ 0], addr[ 1], addr[ 2], addr[ 3], addr[ 4], addr[ 5], addr[ 6], addr[ 7],
								addr[ 8], addr[ 9], addr[10], addr[11], addr[12], addr[13], addr[14], addr[15],
								port );
			}
			else
			{
				Com_Printf( "Invalid master packet ( IPv6 prefix in a non-extended response )\n" );
				return;
			}

			break;

		default:
			Com_Printf( "Invalid master packet ( missing separator )\n" );
			return;
		}

		if( port == 0 )  // last server seen
			return;

		Com_DPrintf( "%s\n", adrString );
		if( !NET_StringToAddress( adrString, &adr ) )
		{
			Com_Printf( "Bad address: %s\n", adrString );
			continue;
		}

		CL_AddServerToList( &masterList, adrString, 0 );
	}
}
Exemplo n.º 4
0
Arquivo: interp.c Projeto: paud/d2x-xl
void G3SwapPolyModelData (ubyte *data)
{
	int i;
	short n;
	uvl *uvl_val;
	ubyte *p = data;

for (;;) {
	ShortSwap (WORDPTR (p));
	switch (WORDVAL (p)) {
		case OP_EOF:
			return;

		case OP_DEFPOINTS:
			ShortSwap (WORDPTR (p + 2));
			n = WORDVAL (p+2);
			for (i = 0; i < n; i++)
				VmsVectorSwap (VECPTR ((p + 4) + (i * sizeof (vmsVector))));
			p += n*sizeof (struct vmsVector) + 4;
			break;

		case OP_DEFP_START:
			ShortSwap (WORDPTR (p + 2));
			ShortSwap (WORDPTR (p + 4));
			n = WORDVAL (p+2);
			for (i = 0; i < n; i++)
				VmsVectorSwap (VECPTR ((p + 8) + (i * sizeof (vmsVector))));
			p += n*sizeof (struct vmsVector) + 8;
			break;

		case OP_FLATPOLY:
			ShortSwap (WORDPTR (p+2));
			n = WORDVAL (p+2);
			VmsVectorSwap (VECPTR (p + 4));
			VmsVectorSwap (VECPTR (p + 16));
			ShortSwap (WORDPTR (p+28));
			for (i=0; i < n; i++)
				ShortSwap (WORDPTR (p + 30 + (i * 2)));
			p += 30 + ((n&~1)+1)*2;
			break;

		case OP_TMAPPOLY:
			ShortSwap (WORDPTR (p+2));
			n = WORDVAL (p+2);
			VmsVectorSwap (VECPTR (p + 4));
			VmsVectorSwap (VECPTR (p + 16));
			for (i = 0; i < n; i++) {
				uvl_val = (uvl *) ((p+30+ ((n&~1)+1)*2) + (i * sizeof (uvl)));
				FixSwap (&uvl_val->u);
				FixSwap (&uvl_val->v);
			}
			ShortSwap (WORDPTR (p+28));
			for (i=0;i<n;i++)
				ShortSwap (WORDPTR (p + 30 + (i * 2)));
			p += 30 + ((n&~1)+1)*2 + n*12;
			break;

		case OP_SORTNORM:
			VmsVectorSwap (VECPTR (p + 4));
			VmsVectorSwap (VECPTR (p + 16));
			ShortSwap (WORDPTR (p + 28));
			ShortSwap (WORDPTR (p + 30));
			G3SwapPolyModelData (p + WORDVAL (p+28));
			G3SwapPolyModelData (p + WORDVAL (p+30));
			p += 32;
			break;

		case OP_RODBM:
			VmsVectorSwap (VECPTR (p + 20));
			VmsVectorSwap (VECPTR (p + 4));
			ShortSwap (WORDPTR (p+2));
			FixSwap (FIXPTR (p + 16));
			FixSwap (FIXPTR (p + 32));
			p+=36;
			break;

		case OP_SUBCALL:
			ShortSwap (WORDPTR (p+2));
			VmsVectorSwap (VECPTR (p+4));
			ShortSwap (WORDPTR (p+16));
			G3SwapPolyModelData (p + WORDVAL (p+16));
			p += 20;
			break;

		case OP_GLOW:
			ShortSwap (WORDPTR (p + 2));
			p += 4;
			break;

		default:
			Error ("invalid polygon model\n"); //Int3 ();
		}
	}
}
Exemplo n.º 5
0
inline short Sys_LittleShort(short l)
{ 
	return ShortSwap(l);
}
Exemplo n.º 6
0
void engine_draw_frame(void)
{
	float h2=(float)height/2.25f;

	if(display==NULL)
        return;

	if(fTime>(1.0f/20.0f))
	{
		float iTimeFull;
		PullData();

		iTimeFull=(MSDat.iTimeX*65536)+ShortSwap(MSDat.iTime);
		RPM=iTimeFull>0?(60000000*2.0f)/(iTimeFull*4):0; //0 to 8000
		CLT=cltTable[MSDat.cltADC]; //-115 to 430
		TPS=tpsTable[MSDat.tpsADC]; //-11 to 128
		BAT=(float)MSDat.batADC/255.0f*30.0f; //7 to 21
		MAP=(float)MSDat.mapADC; //0 to 255
		MAT=matTable[MSDat.matADC]; //-85 to 430
		AFR=10+(MSDat.egoADC*0.039216); //10 to 19.4
		ADV=(MSDat.advance*0.352)-10; //50 to -10

		fTime=0.0f;
	}

	glClear(GL_COLOR_BUFFER_BIT);

	glUseProgram(Objects[GLSL_GAUGE_SHADER]);
	glUniform1i(Objects[GLSL_GAUGE_TEX], 0);
	glUniform1f(Objects[GLSL_GAUGE_WIDTH], (float)width);
	glUniform1f(Objects[GLSL_GAUGE_HEIGHT], (float)height);

	glActiveTexture(GL_TEXTURE0);

	glUniform1f(Objects[GLSL_GAUGE_AMOUNT], RPM/8000.0f);
	glBindTexture(GL_TEXTURE_2D, Objects[TEXTURE_RPM]);
	drawquad(0.0f, h2, h2);

	glUniform1f(Objects[GLSL_GAUGE_AMOUNT], (CLT+40)/(250+40));
	glBindTexture(GL_TEXTURE_2D, Objects[TEXTURE_CLT]);
	drawquad(h2, h2, h2);

	glUniform1f(Objects[GLSL_GAUGE_AMOUNT], TPS/100);
	glBindTexture(GL_TEXTURE_2D, Objects[TEXTURE_TPS]);
	drawquad(h2+h2, h2, h2);

	glUniform1f(Objects[GLSL_GAUGE_AMOUNT], (BAT-7)/(21-7));
	glBindTexture(GL_TEXTURE_2D, Objects[TEXTURE_BAT]);
	drawquad(h2+h2+h2, h2, h2);

	glUniform1f(Objects[GLSL_GAUGE_AMOUNT], MAP/255.0f);
	glBindTexture(GL_TEXTURE_2D, Objects[TEXTURE_MAP]);
	drawquad(0.0f, 0.0f, h2);

	glUniform1f(Objects[GLSL_GAUGE_AMOUNT], (MAT+40)/(220+40));
	glBindTexture(GL_TEXTURE_2D, Objects[TEXTURE_MAT]);
	drawquad(h2, 0.0f, h2);

	glUniform1f(Objects[GLSL_GAUGE_AMOUNT], (AFR-10)/(19-10));
	glBindTexture(GL_TEXTURE_2D, Objects[TEXTURE_AFR]);
	drawquad(h2+h2, 0.0f, h2);

	glUniform1f(Objects[GLSL_GAUGE_AMOUNT], (ADV+10)/(50+10));
	glBindTexture(GL_TEXTURE_2D, Objects[TEXTURE_IGN]);
	drawquad(h2+h2+h2, 0.0f, h2);

	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_BLEND);
	Font_Print(0+100, h2+75, "%0.2f", RPM);
	Font_Print(h2+100, h2+75, "%0.2f", CLT);
	Font_Print(h2+h2+100, h2+75, "%0.2f", TPS);
	Font_Print(h2+h2+h2+100, h2+75, "%0.2f", BAT);
	Font_Print(0+100, 0+75, "%0.2f", MAP);
	Font_Print(h2+100, 0+75, "%0.2f", MAT);
	Font_Print(h2+h2+100, 0+75, "%0.2f", AFR);
	Font_Print(h2+h2+h2+100, 0+75, "%0.2f", ADV);
	Font_Print(0, 0, "FPS %0.3f\n%s", FPS, MSVer);
	glDisable(GL_BLEND);

	eglSwapBuffers(display, surface);
}