mirror of
https://github.com/nzp-team/fteqw.git
synced 2025-02-17 17:31:39 +00:00
cleanup, change TE_BLOB to TE_TAREXPLOSION in particle sets, change TE_BIGEXPLOSION to TE_TEI_BIGEXPLOSION, fix centerprints/stuffcmds not being written to mvds (maybe), misc fixes
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2310 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
4a38e63e43
commit
a10f1f22a6
22 changed files with 360 additions and 289 deletions
|
@ -2333,7 +2333,7 @@ void CL_ParsePlayerinfo (void)
|
||||||
player_state_t *state, *oldstate;
|
player_state_t *state, *oldstate;
|
||||||
int num;
|
int num;
|
||||||
int i;
|
int i;
|
||||||
int new;
|
int newf;
|
||||||
vec3_t org;
|
vec3_t org;
|
||||||
|
|
||||||
lastplayerinfo = num = MSG_ReadByte ();
|
lastplayerinfo = num = MSG_ReadByte ();
|
||||||
|
@ -2453,11 +2453,11 @@ void CL_ParsePlayerinfo (void)
|
||||||
|
|
||||||
VectorCopy(org, state->origin);
|
VectorCopy(org, state->origin);
|
||||||
|
|
||||||
new = MSG_ReadByte ();
|
newf = MSG_ReadByte ();
|
||||||
if (state->frame != new)
|
if (state->frame != newf)
|
||||||
{
|
{
|
||||||
// state->lerpstarttime = realtime;
|
// state->lerpstarttime = realtime;
|
||||||
state->frame = new;
|
state->frame = newf;
|
||||||
}
|
}
|
||||||
|
|
||||||
// the other player's last move was likely some time
|
// the other player's last move was likely some time
|
||||||
|
|
|
@ -883,7 +883,7 @@ void CL_ParseTEnt (void)
|
||||||
pos[0] = MSG_ReadCoord ();
|
pos[0] = MSG_ReadCoord ();
|
||||||
pos[1] = MSG_ReadCoord ();
|
pos[1] = MSG_ReadCoord ();
|
||||||
pos[2] = MSG_ReadCoord ();
|
pos[2] = MSG_ReadCoord ();
|
||||||
if (P_RunParticleEffectTypeString(pos, NULL, 1, "te_bigexplosion"))
|
if (P_RunParticleEffectTypeString(pos, NULL, 1, "te_tei_bigexplosion"))
|
||||||
if (P_RunParticleEffectType(pos, NULL, 1, pt_explosion))
|
if (P_RunParticleEffectType(pos, NULL, 1, pt_explosion))
|
||||||
P_RunParticleEffect(pos, NULL, 107, 1024); // should be 97-111
|
P_RunParticleEffect(pos, NULL, 107, 1024); // should be 97-111
|
||||||
|
|
||||||
|
|
|
@ -974,7 +974,7 @@ Key_SetBinding
|
||||||
*/
|
*/
|
||||||
void Key_SetBinding (int keynum, int modifier, char *binding, int level)
|
void Key_SetBinding (int keynum, int modifier, char *binding, int level)
|
||||||
{
|
{
|
||||||
char *new;
|
char *newc;
|
||||||
int l;
|
int l;
|
||||||
|
|
||||||
if (modifier == ~0) //all of the possabilities.
|
if (modifier == ~0) //all of the possabilities.
|
||||||
|
@ -1002,10 +1002,10 @@ void Key_SetBinding (int keynum, int modifier, char *binding, int level)
|
||||||
}
|
}
|
||||||
// allocate memory for new binding
|
// allocate memory for new binding
|
||||||
l = Q_strlen (binding);
|
l = Q_strlen (binding);
|
||||||
new = Z_Malloc (l+1);
|
newc = Z_Malloc (l+1);
|
||||||
Q_strcpy (new, binding);
|
Q_strcpy (newc, binding);
|
||||||
new[l] = 0;
|
newc[l] = 0;
|
||||||
keybindings[keynum][modifier] = new;
|
keybindings[keynum][modifier] = newc;
|
||||||
bindcmdlevel[keynum][modifier] = level;
|
bindcmdlevel[keynum][modifier] = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1405,7 +1405,7 @@ void P_InitParticles (void)
|
||||||
pt_explosion = P_AllocateParticleType("te_explosion");
|
pt_explosion = P_AllocateParticleType("te_explosion");
|
||||||
pt_pointfile = P_AllocateParticleType("pe_pointfile");
|
pt_pointfile = P_AllocateParticleType("pe_pointfile");
|
||||||
pt_entityparticles = P_AllocateParticleType("ef_entityparticles");
|
pt_entityparticles = P_AllocateParticleType("ef_entityparticles");
|
||||||
pt_blob = P_AllocateParticleType("te_blob");
|
pt_blob = P_AllocateParticleType("te_tarexplosion");
|
||||||
|
|
||||||
pt_blood = P_AllocateParticleType("te_blood");
|
pt_blood = P_AllocateParticleType("te_blood");
|
||||||
pt_lightningblood = P_AllocateParticleType("te_lightningblood");
|
pt_lightningblood = P_AllocateParticleType("te_lightningblood");
|
||||||
|
|
|
@ -611,7 +611,7 @@ char *particle_set_spikeset =
|
||||||
"assoc empcore\n"
|
"assoc empcore\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
|
|
||||||
"r_part te_blob\n"
|
"r_part te_tarexplosion\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
"texture \"particles/emp\"\n"
|
"texture \"particles/emp\"\n"
|
||||||
"count 120\n"
|
"count 120\n"
|
||||||
|
@ -905,7 +905,7 @@ char *particle_set_faithful =
|
||||||
"randomvel 256\n"
|
"randomvel 256\n"
|
||||||
"assoc blobexp1b\n"
|
"assoc blobexp1b\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"r_part te_blob\n"
|
"r_part te_tarexplosion\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
"texture \"particles/quake\"\n"
|
"texture \"particles/quake\"\n"
|
||||||
"count 256\n"
|
"count 256\n"
|
||||||
|
@ -1103,7 +1103,7 @@ char *particle_set_highfps =
|
||||||
"}\n"
|
"}\n"
|
||||||
|
|
||||||
//the blob tempent is used quite a bit with teamfortress emp grenades.
|
//the blob tempent is used quite a bit with teamfortress emp grenades.
|
||||||
"r_part te_blob\n"
|
"r_part te_tarexplosion\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
"texture \"particles/blob\"\n"
|
"texture \"particles/blob\"\n"
|
||||||
"count 64\n"
|
"count 64\n"
|
||||||
|
|
|
@ -277,6 +277,7 @@ void S_Startup (void)
|
||||||
S_Shutdown();
|
S_Shutdown();
|
||||||
|
|
||||||
snd_blocked = 0;
|
snd_blocked = 0;
|
||||||
|
snd_speed = 0;
|
||||||
|
|
||||||
if (!fakedma)
|
if (!fakedma)
|
||||||
{
|
{
|
||||||
|
@ -345,7 +346,7 @@ void S_Startup (void)
|
||||||
|
|
||||||
if (sndcardinfo)
|
if (sndcardinfo)
|
||||||
{ //if the sample speeds of multiple soundcards do not match, it'll fail.
|
{ //if the sample speeds of multiple soundcards do not match, it'll fail.
|
||||||
if (sc->sn.speed != sc->sn.speed)
|
if (snd_speed != sc->sn.speed)
|
||||||
{
|
{
|
||||||
if (!warningmessage)
|
if (!warningmessage)
|
||||||
{
|
{
|
||||||
|
|
|
@ -690,7 +690,7 @@ void GLV_UpdatePalette (qboolean force)
|
||||||
{
|
{
|
||||||
qboolean ogw;
|
qboolean ogw;
|
||||||
int i, j;
|
int i, j;
|
||||||
qboolean new;
|
qboolean update;
|
||||||
// qbyte *basepal, *newpal;
|
// qbyte *basepal, *newpal;
|
||||||
// qbyte pal[768];
|
// qbyte pal[768];
|
||||||
float r,g,b,a;
|
float r,g,b,a;
|
||||||
|
@ -710,24 +710,24 @@ void GLV_UpdatePalette (qboolean force)
|
||||||
if (cl.cshifts[CSHIFT_BONUS].percent <= 0)
|
if (cl.cshifts[CSHIFT_BONUS].percent <= 0)
|
||||||
cl.cshifts[CSHIFT_BONUS].percent = 0;
|
cl.cshifts[CSHIFT_BONUS].percent = 0;
|
||||||
|
|
||||||
new = false;
|
update = false;
|
||||||
|
|
||||||
for (i=0 ; i<CSHIFT_SERVER ; i++)
|
for (i=0 ; i<CSHIFT_SERVER ; i++)
|
||||||
{
|
{
|
||||||
if (cl.cshifts[i].percent != cl.prev_cshifts[i].percent)
|
if (cl.cshifts[i].percent != cl.prev_cshifts[i].percent)
|
||||||
{
|
{
|
||||||
new = true;
|
update = true;
|
||||||
cl.prev_cshifts[i].percent = cl.cshifts[i].percent;
|
cl.prev_cshifts[i].percent = cl.cshifts[i].percent;
|
||||||
}
|
}
|
||||||
for (j=0 ; j<3 ; j++)
|
for (j=0 ; j<3 ; j++)
|
||||||
if (cl.cshifts[i].destcolor[j] != cl.prev_cshifts[i].destcolor[j])
|
if (cl.cshifts[i].destcolor[j] != cl.prev_cshifts[i].destcolor[j])
|
||||||
{
|
{
|
||||||
new = true;
|
update = true;
|
||||||
cl.prev_cshifts[i].destcolor[j] = cl.cshifts[i].destcolor[j];
|
cl.prev_cshifts[i].destcolor[j] = cl.cshifts[i].destcolor[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (new || force)
|
if (update || force)
|
||||||
{
|
{
|
||||||
GLV_CalcBlend ();
|
GLV_CalcBlend ();
|
||||||
|
|
||||||
|
@ -774,14 +774,14 @@ V_UpdatePalette
|
||||||
void SWV_UpdatePalette (qboolean force)
|
void SWV_UpdatePalette (qboolean force)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
qboolean new;
|
qboolean update;
|
||||||
qbyte *basepal, *newpal;
|
qbyte *basepal, *newpal;
|
||||||
qbyte pal[768];
|
qbyte pal[768];
|
||||||
int r,g,b;
|
int r,g,b;
|
||||||
|
|
||||||
V_CalcPowerupCshift ();
|
V_CalcPowerupCshift ();
|
||||||
|
|
||||||
new = false;
|
update = false;
|
||||||
|
|
||||||
for (i=0 ; i<NUM_CSHIFTS ; i++)
|
for (i=0 ; i<NUM_CSHIFTS ; i++)
|
||||||
{
|
{
|
||||||
|
@ -789,13 +789,13 @@ void SWV_UpdatePalette (qboolean force)
|
||||||
{
|
{
|
||||||
if (i == CSHIFT_SERVER)
|
if (i == CSHIFT_SERVER)
|
||||||
force = true; // don't let them cheat.
|
force = true; // don't let them cheat.
|
||||||
new = true;
|
update = true;
|
||||||
cl.prev_cshifts[i].percent = cl.cshifts[i].percent;
|
cl.prev_cshifts[i].percent = cl.cshifts[i].percent;
|
||||||
}
|
}
|
||||||
for (j=0 ; j<3 ; j++)
|
for (j=0 ; j<3 ; j++)
|
||||||
if (cl.cshifts[i].destcolor[j] != cl.prev_cshifts[i].destcolor[j])
|
if (cl.cshifts[i].destcolor[j] != cl.prev_cshifts[i].destcolor[j])
|
||||||
{
|
{
|
||||||
new = true;
|
update = true;
|
||||||
cl.prev_cshifts[i].destcolor[j] = cl.cshifts[i].destcolor[j];
|
cl.prev_cshifts[i].destcolor[j] = cl.cshifts[i].destcolor[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -813,7 +813,7 @@ void SWV_UpdatePalette (qboolean force)
|
||||||
|
|
||||||
if (r_pixbytes == 4) //doesn't support palette cycling. It messes up caches.
|
if (r_pixbytes == 4) //doesn't support palette cycling. It messes up caches.
|
||||||
{
|
{
|
||||||
if (!new && !force)
|
if (!update && !force)
|
||||||
return;
|
return;
|
||||||
basepal = host_basepal;
|
basepal = host_basepal;
|
||||||
newpal = pal;
|
newpal = pal;
|
||||||
|
@ -835,7 +835,7 @@ void SWV_UpdatePalette (qboolean force)
|
||||||
D_FlushCaches();
|
D_FlushCaches();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!new && !force)
|
if (!update && !force)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
basepal = host_basepal;
|
basepal = host_basepal;
|
||||||
|
|
|
@ -722,7 +722,7 @@ Z_CheckHeap (); // DEBUG
|
||||||
void *Z_TagMalloc (int size, int tag)
|
void *Z_TagMalloc (int size, int tag)
|
||||||
{
|
{
|
||||||
int extra;
|
int extra;
|
||||||
memblock_t *start, *rover, *new, *base;
|
memblock_t *start, *rover, *newz, *base;
|
||||||
|
|
||||||
if (!tag)
|
if (!tag)
|
||||||
Sys_Error ("Z_TagMalloc: tried to use a 0 tag");
|
Sys_Error ("Z_TagMalloc: tried to use a 0 tag");
|
||||||
|
@ -754,14 +754,14 @@ void *Z_TagMalloc (int size, int tag)
|
||||||
extra = base->size - size;
|
extra = base->size - size;
|
||||||
if (extra > MINFRAGMENT)
|
if (extra > MINFRAGMENT)
|
||||||
{ // there will be a free fragment after the allocated block
|
{ // there will be a free fragment after the allocated block
|
||||||
new = (memblock_t *) ((qbyte *)base + size );
|
newz = (memblock_t *) ((qbyte *)base + size );
|
||||||
new->size = extra;
|
newz->size = extra;
|
||||||
new->tag = 0; // free block
|
newz->tag = 0; // free block
|
||||||
new->prev = base;
|
newz->prev = base;
|
||||||
new->id = ZONEID;
|
newz->id = ZONEID;
|
||||||
new->next = base->next;
|
newz->next = base->next;
|
||||||
new->next->prev = new;
|
newz->next->prev = newz;
|
||||||
base->next = new;
|
base->next = newz;
|
||||||
base->size = size;
|
base->size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1508,19 +1508,19 @@ Cache_Move
|
||||||
*/
|
*/
|
||||||
void Cache_Move ( cache_system_t *c)
|
void Cache_Move ( cache_system_t *c)
|
||||||
{
|
{
|
||||||
cache_system_t *new;
|
cache_system_t *newc;
|
||||||
|
|
||||||
// we are clearing up space at the bottom, so only allocate it late
|
// we are clearing up space at the bottom, so only allocate it late
|
||||||
new = Cache_TryAlloc (c->size, true);
|
newc = Cache_TryAlloc (c->size, true);
|
||||||
if (new)
|
if (newc)
|
||||||
{
|
{
|
||||||
// Con_Printf ("cache_move ok\n");
|
// Con_Printf ("cache_move ok\n");
|
||||||
|
|
||||||
Q_memcpy ( new+1, c+1, c->size - sizeof(cache_system_t) );
|
Q_memcpy ( newc+1, c+1, c->size - sizeof(cache_system_t) );
|
||||||
new->user = c->user;
|
newc->user = c->user;
|
||||||
Q_memcpy (new->name, c->name, sizeof(new->name));
|
Q_memcpy (newc->name, c->name, sizeof(newc->name));
|
||||||
Cache_Free (c->user);
|
Cache_Free (c->user);
|
||||||
new->user->data = (void *)(new+1);
|
newc->user->data = (void *)(newc+1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1613,7 +1613,7 @@ Size should already include the header and padding
|
||||||
*/
|
*/
|
||||||
cache_system_t *Cache_TryAlloc (int size, qboolean nobottom)
|
cache_system_t *Cache_TryAlloc (int size, qboolean nobottom)
|
||||||
{
|
{
|
||||||
cache_system_t *cs, *new;
|
cache_system_t *cs, *newc;
|
||||||
|
|
||||||
// is the cache completely empty?
|
// is the cache completely empty?
|
||||||
|
|
||||||
|
@ -1622,62 +1622,62 @@ cache_system_t *Cache_TryAlloc (int size, qboolean nobottom)
|
||||||
if (hunk_size - hunk_high_used - hunk_low_used < size)
|
if (hunk_size - hunk_high_used - hunk_low_used < size)
|
||||||
Sys_Error ("Cache_TryAlloc: %i is greater then free hunk", size);
|
Sys_Error ("Cache_TryAlloc: %i is greater then free hunk", size);
|
||||||
|
|
||||||
new = (cache_system_t *) (hunk_base + hunk_low_used);
|
newc = (cache_system_t *) (hunk_base + hunk_low_used);
|
||||||
memset (new, 0, sizeof(*new));
|
memset (newc, 0, sizeof(*newc));
|
||||||
new->size = size;
|
newc->size = size;
|
||||||
|
|
||||||
cache_head.prev = cache_head.next = new;
|
cache_head.prev = cache_head.next = newc;
|
||||||
new->prev = new->next = &cache_head;
|
newc->prev = newc->next = &cache_head;
|
||||||
|
|
||||||
Cache_MakeLRU (new);
|
Cache_MakeLRU (newc);
|
||||||
return new;
|
return newc;
|
||||||
}
|
}
|
||||||
|
|
||||||
// search from the bottom up for space
|
// search from the bottom up for space
|
||||||
|
|
||||||
new = (cache_system_t *) (hunk_base + hunk_low_used);
|
newc = (cache_system_t *) (hunk_base + hunk_low_used);
|
||||||
cs = cache_head.next;
|
cs = cache_head.next;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (!nobottom || cs != cache_head.next)
|
if (!nobottom || cs != cache_head.next)
|
||||||
{
|
{
|
||||||
if ( (qbyte *)cs - (qbyte *)new >= size)
|
if ( (qbyte *)cs - (qbyte *)newc >= size)
|
||||||
{ // found space
|
{ // found space
|
||||||
memset (new, 0, sizeof(*new));
|
memset (newc, 0, sizeof(*newc));
|
||||||
new->size = size;
|
newc->size = size;
|
||||||
|
|
||||||
new->next = cs;
|
newc->next = cs;
|
||||||
new->prev = cs->prev;
|
newc->prev = cs->prev;
|
||||||
cs->prev->next = new;
|
cs->prev->next = newc;
|
||||||
cs->prev = new;
|
cs->prev = newc;
|
||||||
|
|
||||||
Cache_MakeLRU (new);
|
Cache_MakeLRU (newc);
|
||||||
|
|
||||||
return new;
|
return newc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// continue looking
|
// continue looking
|
||||||
new = (cache_system_t *)((qbyte *)cs + cs->size);
|
newc = (cache_system_t *)((qbyte *)cs + cs->size);
|
||||||
cs = cs->next;
|
cs = cs->next;
|
||||||
|
|
||||||
} while (cs != &cache_head);
|
} while (cs != &cache_head);
|
||||||
|
|
||||||
// try to allocate one at the very end
|
// try to allocate one at the very end
|
||||||
if ( hunk_base + hunk_size - hunk_high_used - (qbyte *)new >= size)
|
if ( hunk_base + hunk_size - hunk_high_used - (qbyte *)newc >= size)
|
||||||
{
|
{
|
||||||
memset (new, 0, sizeof(*new));
|
memset (newc, 0, sizeof(*newc));
|
||||||
new->size = size;
|
newc->size = size;
|
||||||
|
|
||||||
new->next = &cache_head;
|
newc->next = &cache_head;
|
||||||
new->prev = cache_head.prev;
|
newc->prev = cache_head.prev;
|
||||||
cache_head.prev->next = new;
|
cache_head.prev->next = newc;
|
||||||
cache_head.prev = new;
|
cache_head.prev = newc;
|
||||||
|
|
||||||
Cache_MakeLRU (new);
|
Cache_MakeLRU (newc);
|
||||||
|
|
||||||
return new;
|
return newc;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL; // couldn't allocate
|
return NULL; // couldn't allocate
|
||||||
|
|
|
@ -1714,6 +1714,62 @@ qglPolygonOffset(0, 0);
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
void GLR_SetupFog (void)
|
||||||
|
{
|
||||||
|
if (r_viewleaf)// && r_viewleaf->contents != CONTENTS_EMPTY)
|
||||||
|
{
|
||||||
|
// static fogcolour;
|
||||||
|
float fogcol[4]={0};
|
||||||
|
float fogperc;
|
||||||
|
float fogdist;
|
||||||
|
|
||||||
|
fogperc=0;
|
||||||
|
fogdist=512;
|
||||||
|
switch(r_viewleaf->contents)
|
||||||
|
{
|
||||||
|
case FTECONTENTS_WATER:
|
||||||
|
fogcol[0] = 64/255.0;
|
||||||
|
fogcol[1] = 128/255.0;
|
||||||
|
fogcol[2] = 192/255.0;
|
||||||
|
fogperc=0.2;
|
||||||
|
fogdist=512;
|
||||||
|
break;
|
||||||
|
case FTECONTENTS_SLIME:
|
||||||
|
fogcol[0] = 32/255.0;
|
||||||
|
fogcol[1] = 192/255.0;
|
||||||
|
fogcol[2] = 92/255.0;
|
||||||
|
fogperc=1;
|
||||||
|
fogdist=256;
|
||||||
|
break;
|
||||||
|
case FTECONTENTS_LAVA:
|
||||||
|
fogcol[0] = 192/255.0;
|
||||||
|
fogcol[1] = 32/255.0;
|
||||||
|
fogcol[2] = 64/255.0;
|
||||||
|
fogperc=1;
|
||||||
|
fogdist=128;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fogcol[0] = 192/255.0;
|
||||||
|
fogcol[1] = 192/255.0;
|
||||||
|
fogcol[2] = 192/255.0;
|
||||||
|
fogperc=1;
|
||||||
|
fogdist=1024;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (fogperc)
|
||||||
|
{
|
||||||
|
qglFogi(GL_FOG_MODE, GL_LINEAR);
|
||||||
|
qglFogfv(GL_FOG_COLOR, fogcol);
|
||||||
|
qglFogf(GL_FOG_DENSITY, fogperc);
|
||||||
|
qglFogf(GL_FOG_START, 1);
|
||||||
|
qglFogf(GL_FOG_END, fogdist);
|
||||||
|
qglEnable(GL_FOG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
================
|
================
|
||||||
R_RenderView
|
R_RenderView
|
||||||
|
@ -1777,59 +1833,9 @@ void GLR_RenderView (void)
|
||||||
mirror = false;
|
mirror = false;
|
||||||
|
|
||||||
R_Clear ();
|
R_Clear ();
|
||||||
/*
|
|
||||||
if (r_viewleaf)// && r_viewleaf->contents != CONTENTS_EMPTY)
|
|
||||||
{
|
|
||||||
// static fogcolour;
|
|
||||||
float fogcol[4]={0};
|
|
||||||
float fogperc;
|
|
||||||
float fogdist;
|
|
||||||
#pragma comment (lib, "opengl32.lib") //temp only.
|
|
||||||
|
|
||||||
fogperc=0;
|
// GLR_SetupFog ();
|
||||||
fogdist=512;
|
|
||||||
switch(r_viewleaf->contents)
|
|
||||||
{
|
|
||||||
case CONTENTS_WATER:
|
|
||||||
fogcol[0] = 64/255.0;
|
|
||||||
fogcol[1] = 128/255.0;
|
|
||||||
fogcol[2] = 192/255.0;
|
|
||||||
fogperc=0.2;
|
|
||||||
fogdist=512;
|
|
||||||
break;
|
|
||||||
case CONTENTS_SLIME:
|
|
||||||
fogcol[0] = 32/255.0;
|
|
||||||
fogcol[1] = 192/255.0;
|
|
||||||
fogcol[2] = 92/255.0;
|
|
||||||
fogperc=1;
|
|
||||||
fogdist=256;
|
|
||||||
break;
|
|
||||||
case CONTENTS_LAVA:
|
|
||||||
fogcol[0] = 192/255.0;
|
|
||||||
fogcol[1] = 32/255.0;
|
|
||||||
fogcol[2] = 64/255.0;
|
|
||||||
fogperc=1;
|
|
||||||
fogdist=128;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
fogcol[0] = 192/255.0;
|
|
||||||
fogcol[1] = 192/255.0;
|
|
||||||
fogcol[2] = 192/255.0;
|
|
||||||
fogperc=1;
|
|
||||||
fogdist=1024;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (fogperc)
|
|
||||||
{
|
|
||||||
glFogi(GL_FOG_MODE, GL_LINEAR);
|
|
||||||
glFogfv(GL_FOG_COLOR, fogcol);
|
|
||||||
glFogf(GL_FOG_DENSITY, fogperc);
|
|
||||||
glFogf(GL_FOG_START, 1);
|
|
||||||
glFogf(GL_FOG_END, fogdist);
|
|
||||||
glEnable(GL_FOG);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
r_alpha_surfaces = NULL;
|
r_alpha_surfaces = NULL;
|
||||||
|
|
||||||
GL_SetShaderState2D(false);
|
GL_SetShaderState2D(false);
|
||||||
|
@ -1847,7 +1853,7 @@ void GLR_RenderView (void)
|
||||||
|
|
||||||
R_PolyBlend ();
|
R_PolyBlend ();
|
||||||
|
|
||||||
// glDisable(GL_FOG);
|
// qglDisable(GL_FOG);
|
||||||
|
|
||||||
if (r_speeds.value)
|
if (r_speeds.value)
|
||||||
{
|
{
|
||||||
|
|
|
@ -90,6 +90,11 @@ void (APIENTRY *qglStencilOp) (GLenum fail, GLenum zfail, GLenum zpass);
|
||||||
void (APIENTRY *qglStencilFunc) (GLenum func, GLint ref, GLuint mask);
|
void (APIENTRY *qglStencilFunc) (GLenum func, GLint ref, GLuint mask);
|
||||||
void (APIENTRY *qglPushAttrib) (GLbitfield mask);
|
void (APIENTRY *qglPushAttrib) (GLbitfield mask);
|
||||||
void (APIENTRY *qglPopAttrib) (void);
|
void (APIENTRY *qglPopAttrib) (void);
|
||||||
|
|
||||||
|
void (APIENTRY *qglFogf) (GLenum pname, GLfloat param);
|
||||||
|
void (APIENTRY *qglFogi) (GLenum pname, GLint param);
|
||||||
|
void (APIENTRY *qglFogfv) (GLenum pname, const GLfloat *params);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PFNGLPROGRAMSTRINGARBPROC qglProgramStringARB;
|
PFNGLPROGRAMSTRINGARBPROC qglProgramStringARB;
|
||||||
PFNGLGETPROGRAMIVARBPROC qglGetProgramivARB;
|
PFNGLGETPROGRAMIVARBPROC qglGetProgramivARB;
|
||||||
|
@ -566,6 +571,11 @@ void GL_Init(void *(*getglfunction) (char *name))
|
||||||
qglPopAttrib = (void *)getglcore("glPopAttrib");
|
qglPopAttrib = (void *)getglcore("glPopAttrib");
|
||||||
qglScissor = (void *)getglcore("glScissor");
|
qglScissor = (void *)getglcore("glScissor");
|
||||||
|
|
||||||
|
//does this need to be non-core as well?
|
||||||
|
qglFogi = (void *)getglcore("glFogi");
|
||||||
|
qglFogf = (void *)getglcore("glFogf");
|
||||||
|
qglFogfv = (void *)getglcore("glFogfv");
|
||||||
|
|
||||||
qglPolygonOffset = (void *)getglext("glPolygonOffset");
|
qglPolygonOffset = (void *)getglext("glPolygonOffset");
|
||||||
|
|
||||||
//used by heightmaps
|
//used by heightmaps
|
||||||
|
|
|
@ -92,15 +92,15 @@ FTPclientconn_t *FTP_CreateConnection(char *addy)
|
||||||
//duplicate a connection to get multiple data channels with a server.
|
//duplicate a connection to get multiple data channels with a server.
|
||||||
FTPclientconn_t *FTP_DuplicateConnection(FTPclientconn_t *old)
|
FTPclientconn_t *FTP_DuplicateConnection(FTPclientconn_t *old)
|
||||||
{
|
{
|
||||||
FTPclientconn_t *new;
|
FTPclientconn_t *newf;
|
||||||
new = FTP_CreateConnection(old->server);
|
newf = FTP_CreateConnection(old->server);
|
||||||
*new->server = '\0'; //mark it as non control
|
*newf->server = '\0'; //mark it as non control
|
||||||
strcpy(new->name, old->name);
|
strcpy(newf->name, old->name);
|
||||||
strcpy(new->pwd, old->pwd);
|
strcpy(newf->pwd, old->pwd);
|
||||||
strcpy(new->path, old->path);
|
strcpy(newf->path, old->path);
|
||||||
strcpy(new->pathprefix, old->pathprefix);
|
strcpy(newf->pathprefix, old->pathprefix);
|
||||||
|
|
||||||
return new;
|
return newf;
|
||||||
}
|
}
|
||||||
|
|
||||||
int FTP_CL_makelistensocket(void)
|
int FTP_CL_makelistensocket(void)
|
||||||
|
@ -772,26 +772,26 @@ qboolean FTP_Client_Command (char *cmd, void (*NotifyFunction)(char *localfile,
|
||||||
}
|
}
|
||||||
else if (!stricmp(command, "list"))
|
else if (!stricmp(command, "list"))
|
||||||
{
|
{
|
||||||
FTPclientconn_t *new, *con = FTP_FindControl();
|
FTPclientconn_t *newf, *con = FTP_FindControl();
|
||||||
if (!con)
|
if (!con)
|
||||||
{
|
{
|
||||||
Con_Printf("Not connected\n");
|
Con_Printf("Not connected\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
new = FTP_DuplicateConnection(con);
|
newf = FTP_DuplicateConnection(con);
|
||||||
if (!new)
|
if (!newf)
|
||||||
{
|
{
|
||||||
Con_Printf("Failed duplicate connection\n");
|
Con_Printf("Failed duplicate connection\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
new->type = ftp_listing;
|
newf->type = ftp_listing;
|
||||||
new->NotifyFunction = NotifyFunction;
|
newf->NotifyFunction = NotifyFunction;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (!stricmp(command, "get"))
|
else if (!stricmp(command, "get"))
|
||||||
{
|
{
|
||||||
FTPclientconn_t *new, *con = FTP_FindControl();
|
FTPclientconn_t *newf, *con = FTP_FindControl();
|
||||||
if (!con)
|
if (!con)
|
||||||
{
|
{
|
||||||
Con_Printf("Not connected\n");
|
Con_Printf("Not connected\n");
|
||||||
|
@ -805,21 +805,21 @@ qboolean FTP_Client_Command (char *cmd, void (*NotifyFunction)(char *localfile,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
new = FTP_DuplicateConnection(con);
|
newf = FTP_DuplicateConnection(con);
|
||||||
if (!new)
|
if (!newf)
|
||||||
{
|
{
|
||||||
Con_Printf("Failed duplicate connection\n");
|
Con_Printf("Failed duplicate connection\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
new->NotifyFunction = NotifyFunction;
|
newf->NotifyFunction = NotifyFunction;
|
||||||
new->type = ftp_getting;
|
newf->type = ftp_getting;
|
||||||
sprintf(new->file, command);
|
sprintf(newf->file, command);
|
||||||
sprintf(new->localfile, "%s%s", new->path, command);
|
sprintf(newf->localfile, "%s%s", newf->path, command);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (!stricmp(command, "put"))
|
else if (!stricmp(command, "put"))
|
||||||
{
|
{
|
||||||
FTPclientconn_t *new, *con = FTP_FindControl();
|
FTPclientconn_t *newf, *con = FTP_FindControl();
|
||||||
if (!con)
|
if (!con)
|
||||||
{
|
{
|
||||||
Con_Printf("Not connected\n");
|
Con_Printf("Not connected\n");
|
||||||
|
@ -833,16 +833,16 @@ qboolean FTP_Client_Command (char *cmd, void (*NotifyFunction)(char *localfile,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
new = FTP_DuplicateConnection(con);
|
newf = FTP_DuplicateConnection(con);
|
||||||
if (!new)
|
if (!newf)
|
||||||
{
|
{
|
||||||
Con_Printf("Failed duplicate connection\n");
|
Con_Printf("Failed duplicate connection\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
new->NotifyFunction = NotifyFunction;
|
newf->NotifyFunction = NotifyFunction;
|
||||||
new->type = ftp_putting;
|
newf->type = ftp_putting;
|
||||||
sprintf(new->file, command);
|
sprintf(newf->file, command);
|
||||||
sprintf(new->localfile, "%s%s", new->path, command);
|
sprintf(newf->localfile, "%s%s", newf->path, command);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,7 +226,7 @@ r_part blobexp2
|
||||||
randomvel 256
|
randomvel 256
|
||||||
assoc blobexp1b
|
assoc blobexp1b
|
||||||
}
|
}
|
||||||
r_part te_blob
|
r_part te_tarexplosion
|
||||||
{
|
{
|
||||||
texture "particles/quake"
|
texture "particles/quake"
|
||||||
count 256
|
count 256
|
||||||
|
|
|
@ -128,7 +128,7 @@ r_part te_railtrail
|
||||||
}
|
}
|
||||||
|
|
||||||
//the blob tempent is used quite a bit with teamfortress emp grenades.
|
//the blob tempent is used quite a bit with teamfortress emp grenades.
|
||||||
r_part te_blob
|
r_part te_tarexplosion
|
||||||
{
|
{
|
||||||
texture "particles/blob"
|
texture "particles/blob"
|
||||||
count 64
|
count 64
|
||||||
|
|
|
@ -608,7 +608,7 @@ r_part empflash
|
||||||
assoc empcore
|
assoc empcore
|
||||||
}
|
}
|
||||||
|
|
||||||
r_part te_blob
|
r_part te_tarexplosion
|
||||||
{
|
{
|
||||||
texture "particles/emp"
|
texture "particles/emp"
|
||||||
count 120
|
count 120
|
||||||
|
|
|
@ -971,15 +971,15 @@ ED_NewString
|
||||||
*/
|
*/
|
||||||
char *ED_NewString (progfuncs_t *progfuncs, char *string, int minlength)
|
char *ED_NewString (progfuncs_t *progfuncs, char *string, int minlength)
|
||||||
{
|
{
|
||||||
char *new, *new_p;
|
char *newc, *new_p;
|
||||||
int i,l;
|
int i,l;
|
||||||
|
|
||||||
minlength++;
|
minlength++;
|
||||||
|
|
||||||
l = strlen(string) + 1;
|
l = strlen(string) + 1;
|
||||||
|
|
||||||
new = PRAddressableAlloc (progfuncs, l<minlength?minlength:l);
|
newc = PRAddressableAlloc (progfuncs, l<minlength?minlength:l);
|
||||||
new_p = new;
|
new_p = newc;
|
||||||
|
|
||||||
for (i=0 ; i< l ; i++)
|
for (i=0 ; i< l ; i++)
|
||||||
{
|
{
|
||||||
|
@ -995,7 +995,7 @@ char *ED_NewString (progfuncs_t *progfuncs, char *string, int minlength)
|
||||||
*new_p++ = string[i];
|
*new_p++ = string[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return new;
|
return newc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -785,7 +785,7 @@ strofs = (strofs+3)&~3;
|
||||||
printf("Writing %s\n", destfile);
|
printf("Writing %s\n", destfile);
|
||||||
h = SafeOpenWrite (destfile, 2*1024*1024);
|
h = SafeOpenWrite (destfile, 2*1024*1024);
|
||||||
SafeWrite (h, &progs, sizeof(progs));
|
SafeWrite (h, &progs, sizeof(progs));
|
||||||
SafeWrite (h, "\r\n\r\n", 2);
|
SafeWrite (h, "\r\n\r\n", 4);
|
||||||
SafeWrite (h, QCC_copyright, strlen(QCC_copyright)+1);
|
SafeWrite (h, QCC_copyright, strlen(QCC_copyright)+1);
|
||||||
SafeWrite (h, "\r\n\r\n", 4);
|
SafeWrite (h, "\r\n\r\n", 4);
|
||||||
while(SafeSeek (h, 0, SEEK_CUR) & 3)//this is a lame way to do it
|
while(SafeSeek (h, 0, SEEK_CUR) & 3)//this is a lame way to do it
|
||||||
|
|
|
@ -2170,6 +2170,7 @@ void PF_centerprint (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
char *s;
|
char *s;
|
||||||
int entnum;
|
int entnum;
|
||||||
client_t *cl, *sp;
|
client_t *cl, *sp;
|
||||||
|
int slen;
|
||||||
|
|
||||||
if (sv.demofile)
|
if (sv.demofile)
|
||||||
return;
|
return;
|
||||||
|
@ -2184,6 +2185,7 @@ void PF_centerprint (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
}
|
}
|
||||||
|
|
||||||
cl = &svs.clients[entnum-1];
|
cl = &svs.clients[entnum-1];
|
||||||
|
slen = strlen(s);
|
||||||
|
|
||||||
if (cl->controller)
|
if (cl->controller)
|
||||||
{ //this is a slave client.
|
{ //this is a slave client.
|
||||||
|
@ -2197,16 +2199,23 @@ void PF_centerprint (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
}
|
}
|
||||||
sp = cl->controller;
|
sp = cl->controller;
|
||||||
|
|
||||||
ClientReliableWrite_Begin (sp, svc_choosesplitclient, 4 + strlen(s));
|
ClientReliableWrite_Begin (sp, svc_choosesplitclient, 4 + slen);
|
||||||
ClientReliableWrite_Byte (sp, pnum);
|
ClientReliableWrite_Byte (sp, pnum);
|
||||||
ClientReliableWrite_Byte (sp, svc_centerprint);
|
ClientReliableWrite_Byte (sp, svc_centerprint);
|
||||||
ClientReliableWrite_String (sp, s);
|
ClientReliableWrite_String (sp, s);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ClientReliableWrite_Begin (cl, svc_centerprint, 2 + strlen(s));
|
ClientReliableWrite_Begin (cl, svc_centerprint, 2 + slen);
|
||||||
ClientReliableWrite_String (cl, s);
|
ClientReliableWrite_String (cl, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sv.mvdrecording)
|
||||||
|
{
|
||||||
|
MVDWrite_Begin (dem_single, entnum - 1, 2 + slen);
|
||||||
|
MSG_WriteByte ((sizebuf_t*)demo.dbuf, svc_centerprint);
|
||||||
|
MSG_WriteString ((sizebuf_t*)demo.dbuf, s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2221,21 +2230,21 @@ void PF_normalize (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
{
|
{
|
||||||
float *value1;
|
float *value1;
|
||||||
vec3_t newvalue;
|
vec3_t newvalue;
|
||||||
float new;
|
float newf;
|
||||||
|
|
||||||
value1 = G_VECTOR(OFS_PARM0);
|
value1 = G_VECTOR(OFS_PARM0);
|
||||||
|
|
||||||
new = value1[0] * value1[0] + value1[1] * value1[1] + value1[2]*value1[2];
|
newf = value1[0] * value1[0] + value1[1] * value1[1] + value1[2]*value1[2];
|
||||||
new = sqrt(new);
|
newf = sqrt(newf);
|
||||||
|
|
||||||
if (new == 0)
|
if (newf == 0)
|
||||||
newvalue[0] = newvalue[1] = newvalue[2] = 0;
|
newvalue[0] = newvalue[1] = newvalue[2] = 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
new = 1/new;
|
newf = 1/newf;
|
||||||
newvalue[0] = value1[0] * new;
|
newvalue[0] = value1[0] * newf;
|
||||||
newvalue[1] = value1[1] * new;
|
newvalue[1] = value1[1] * newf;
|
||||||
newvalue[2] = value1[2] * new;
|
newvalue[2] = value1[2] * newf;
|
||||||
}
|
}
|
||||||
|
|
||||||
VectorCopy (newvalue, G_VECTOR(OFS_RETURN));
|
VectorCopy (newvalue, G_VECTOR(OFS_RETURN));
|
||||||
|
@ -2251,14 +2260,14 @@ scalar vlen(vector)
|
||||||
void PF_vlen (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
void PF_vlen (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
{
|
{
|
||||||
float *value1;
|
float *value1;
|
||||||
float new;
|
float newv;
|
||||||
|
|
||||||
value1 = G_VECTOR(OFS_PARM0);
|
value1 = G_VECTOR(OFS_PARM0);
|
||||||
|
|
||||||
new = value1[0] * value1[0] + value1[1] * value1[1] + value1[2]*value1[2];
|
newv = value1[0] * value1[0] + value1[1] * value1[1] + value1[2]*value1[2];
|
||||||
new = sqrt(new);
|
newv = sqrt(newv);
|
||||||
|
|
||||||
G_FLOAT(OFS_RETURN) = new;
|
G_FLOAT(OFS_RETURN) = newv;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2271,14 +2280,14 @@ scalar vhlen(vector)
|
||||||
void PF_vhlen (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
void PF_vhlen (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
{
|
{
|
||||||
float *value1;
|
float *value1;
|
||||||
float new;
|
float newv;
|
||||||
|
|
||||||
value1 = G_VECTOR(OFS_PARM0);
|
value1 = G_VECTOR(OFS_PARM0);
|
||||||
|
|
||||||
new = value1[0] * value1[0] + value1[1] * value1[1];
|
newv = value1[0] * value1[0] + value1[1] * value1[1];
|
||||||
new = sqrt(new);
|
newv = sqrt(newv);
|
||||||
|
|
||||||
G_FLOAT(OFS_RETURN) = new;
|
G_FLOAT(OFS_RETURN) = newv;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -3103,6 +3112,7 @@ void PF_stuffcmd (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
char *str;
|
char *str;
|
||||||
client_t *cl;
|
client_t *cl;
|
||||||
static qboolean expectingcolour;
|
static qboolean expectingcolour;
|
||||||
|
int slen;
|
||||||
|
|
||||||
entnum = G_EDICTNUM(prinst, OFS_PARM0);
|
entnum = G_EDICTNUM(prinst, OFS_PARM0);
|
||||||
if (entnum < 1 || entnum > sv.allocated_client_slots)
|
if (entnum < 1 || entnum > sv.allocated_client_slots)
|
||||||
|
@ -3112,7 +3122,6 @@ void PF_stuffcmd (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
|
|
||||||
cl = &svs.clients[entnum-1];
|
cl = &svs.clients[entnum-1];
|
||||||
|
|
||||||
|
|
||||||
if (strcmp(str, "disconnect\n") == 0)
|
if (strcmp(str, "disconnect\n") == 0)
|
||||||
{
|
{
|
||||||
// so long and thanks for all the fish
|
// so long and thanks for all the fish
|
||||||
|
@ -3132,6 +3141,7 @@ void PF_stuffcmd (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
else
|
else
|
||||||
str += 6;
|
str += 6;
|
||||||
}
|
}
|
||||||
|
// FIXME: this seems broken and color->teamname needs a common functions
|
||||||
if (expectingcolour)
|
if (expectingcolour)
|
||||||
{
|
{
|
||||||
int team = atoi(str);
|
int team = atoi(str);
|
||||||
|
@ -3154,6 +3164,8 @@ void PF_stuffcmd (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
slen = strlen(str);
|
||||||
|
|
||||||
if (cl->controller)
|
if (cl->controller)
|
||||||
{ //this is a slave client.
|
{ //this is a slave client.
|
||||||
//find the right number and send.
|
//find the right number and send.
|
||||||
|
@ -3167,16 +3179,23 @@ void PF_stuffcmd (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
}
|
}
|
||||||
sp = cl->controller;
|
sp = cl->controller;
|
||||||
|
|
||||||
ClientReliableWrite_Begin (sp, svc_choosesplitclient, 4 + strlen(str));
|
ClientReliableWrite_Begin (sp, svc_choosesplitclient, 4 + slen);
|
||||||
ClientReliableWrite_Byte (sp, pnum);
|
ClientReliableWrite_Byte (sp, pnum);
|
||||||
ClientReliableWrite_Byte (sp, svc_stufftext);
|
ClientReliableWrite_Byte (sp, svc_stufftext);
|
||||||
ClientReliableWrite_String (sp, str);
|
ClientReliableWrite_String (sp, str);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ClientReliableWrite_Begin (cl, svc_stufftext, 2+strlen(str));
|
ClientReliableWrite_Begin (cl, svc_stufftext, 2+slen);
|
||||||
ClientReliableWrite_String (cl, str);
|
ClientReliableWrite_String (cl, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sv.mvdrecording)
|
||||||
|
{
|
||||||
|
MVDWrite_Begin (dem_single, entnum - 1, 2 + slen);
|
||||||
|
MSG_WriteByte ((sizebuf_t*)demo.dbuf, svc_stufftext);
|
||||||
|
MSG_WriteString ((sizebuf_t*)demo.dbuf, str);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//DP_QC_DROPCLIENT
|
//DP_QC_DROPCLIENT
|
||||||
|
|
|
@ -607,22 +607,22 @@ void PIN_DeleteOldestMessage(void)
|
||||||
void PIN_MakeMessage(char *from, char *msg)
|
void PIN_MakeMessage(char *from, char *msg)
|
||||||
{
|
{
|
||||||
pinnedmessages_t *p;
|
pinnedmessages_t *p;
|
||||||
pinnedmessages_t *new;
|
pinnedmessages_t *newp;
|
||||||
|
|
||||||
new = BZ_Malloc(sizeof(pinnedmessages_t));
|
newp = BZ_Malloc(sizeof(pinnedmessages_t));
|
||||||
Q_strncpyz(new->setby, from, sizeof(new->setby));
|
Q_strncpyz(newp->setby, from, sizeof(newp->setby));
|
||||||
Q_strncpyz(new->message, msg, sizeof(new->message));
|
Q_strncpyz(newp->message, msg, sizeof(newp->message));
|
||||||
new->next = NULL;
|
newp->next = NULL;
|
||||||
|
|
||||||
if (!pinned)
|
if (!pinned)
|
||||||
pinned = new;
|
pinned = newp;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (p = pinned; ; p = p->next)
|
for (p = pinned; ; p = p->next)
|
||||||
{
|
{
|
||||||
if (!p->next)
|
if (!p->next)
|
||||||
{
|
{
|
||||||
p->next = new;
|
p->next = newp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -254,7 +254,7 @@ void D_PolysetRecursiveTriangleTrans (int *lp1, int *lp2, int *lp3)
|
||||||
{
|
{
|
||||||
int *temp;
|
int *temp;
|
||||||
int d;
|
int d;
|
||||||
int new[6];
|
int newt[6];
|
||||||
int z;
|
int z;
|
||||||
short *zbuf;
|
short *zbuf;
|
||||||
|
|
||||||
|
@ -297,11 +297,11 @@ split2:
|
||||||
|
|
||||||
split:
|
split:
|
||||||
// split this edge
|
// split this edge
|
||||||
new[0] = (lp1[0] + lp2[0]) >> 1;
|
newt[0] = (lp1[0] + lp2[0]) >> 1;
|
||||||
new[1] = (lp1[1] + lp2[1]) >> 1;
|
newt[1] = (lp1[1] + lp2[1]) >> 1;
|
||||||
new[2] = (lp1[2] + lp2[2]) >> 1;
|
newt[2] = (lp1[2] + lp2[2]) >> 1;
|
||||||
new[3] = (lp1[3] + lp2[3]) >> 1;
|
newt[3] = (lp1[3] + lp2[3]) >> 1;
|
||||||
new[5] = (lp1[5] + lp2[5]) >> 1;
|
newt[5] = (lp1[5] + lp2[5]) >> 1;
|
||||||
|
|
||||||
// draw the point if splitting a leading edge
|
// draw the point if splitting a leading edge
|
||||||
if (lp2[1] > lp1[1])
|
if (lp2[1] > lp1[1])
|
||||||
|
@ -310,28 +310,28 @@ split:
|
||||||
goto nodraw;
|
goto nodraw;
|
||||||
|
|
||||||
|
|
||||||
z = new[5]>>16;
|
z = newt[5]>>16;
|
||||||
zbuf = zspantable[new[1]] + new[0];
|
zbuf = zspantable[newt[1]] + newt[0];
|
||||||
if (z >= *zbuf)
|
if (z >= *zbuf)
|
||||||
{
|
{
|
||||||
int pix;
|
int pix;
|
||||||
|
|
||||||
*zbuf = z;
|
*zbuf = z;
|
||||||
pix = d_pcolormap[apalremap[skintable[new[3]>>16][new[2]>>16]]];
|
pix = d_pcolormap[apalremap[skintable[newt[3]>>16][newt[2]>>16]]];
|
||||||
d_viewbuffer[d_scantable[new[1]] + new[0]] = Trans(d_viewbuffer[d_scantable[new[1]] + new[0]], (unsigned char)pix);
|
d_viewbuffer[d_scantable[newt[1]] + newt[0]] = Trans(d_viewbuffer[d_scantable[newt[1]] + newt[0]], (unsigned char)pix);
|
||||||
}
|
}
|
||||||
|
|
||||||
nodraw:
|
nodraw:
|
||||||
// recursively continue
|
// recursively continue
|
||||||
D_PolysetRecursiveTriangleTrans (lp3, lp1, new);
|
D_PolysetRecursiveTriangleTrans (lp3, lp1, newt);
|
||||||
D_PolysetRecursiveTriangleTrans (lp3, new, lp2);
|
D_PolysetRecursiveTriangleTrans (lp3, newt, lp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void D_PolysetRecursiveTriangle32Trans (int *lp1, int *lp2, int *lp3)
|
void D_PolysetRecursiveTriangle32Trans (int *lp1, int *lp2, int *lp3)
|
||||||
{
|
{
|
||||||
int *temp;
|
int *temp;
|
||||||
int d;
|
int d;
|
||||||
int new[6];
|
int newt[6];
|
||||||
int z;
|
int z;
|
||||||
short *zbuf;
|
short *zbuf;
|
||||||
|
|
||||||
|
@ -374,11 +374,11 @@ split2:
|
||||||
|
|
||||||
split:
|
split:
|
||||||
// split this edge
|
// split this edge
|
||||||
new[0] = (lp1[0] + lp2[0]) >> 1;
|
newt[0] = (lp1[0] + lp2[0]) >> 1;
|
||||||
new[1] = (lp1[1] + lp2[1]) >> 1;
|
newt[1] = (lp1[1] + lp2[1]) >> 1;
|
||||||
new[2] = (lp1[2] + lp2[2]) >> 1;
|
newt[2] = (lp1[2] + lp2[2]) >> 1;
|
||||||
new[3] = (lp1[3] + lp2[3]) >> 1;
|
newt[3] = (lp1[3] + lp2[3]) >> 1;
|
||||||
new[5] = (lp1[5] + lp2[5]) >> 1;
|
newt[5] = (lp1[5] + lp2[5]) >> 1;
|
||||||
|
|
||||||
// draw the point if splitting a leading edge
|
// draw the point if splitting a leading edge
|
||||||
if (lp2[1] > lp1[1])
|
if (lp2[1] > lp1[1])
|
||||||
|
@ -387,32 +387,32 @@ split:
|
||||||
goto nodraw;
|
goto nodraw;
|
||||||
|
|
||||||
|
|
||||||
z = new[5]>>16;
|
z = newt[5]>>16;
|
||||||
if ((new[1]>=vid.height|| new[1] < 0 || new[0] >= vid.width || new[0]<0)) //fixme: temp
|
if ((newt[1]>=vid.height|| newt[1] < 0 || newt[0] >= vid.width || newt[0]<0)) //fixme: temp
|
||||||
return;
|
return;
|
||||||
zbuf = zspantable[new[1]] + new[0];
|
zbuf = zspantable[newt[1]] + newt[0];
|
||||||
|
|
||||||
if (z >= *zbuf)
|
if (z >= *zbuf)
|
||||||
{
|
{
|
||||||
int pix;
|
int pix;
|
||||||
|
|
||||||
*zbuf = z;
|
*zbuf = z;
|
||||||
pix = ((unsigned int *)((unsigned int **)skintable)[new[3]>>16])[new[2]>>16];
|
pix = ((unsigned int *)((unsigned int **)skintable)[newt[3]>>16])[newt[2]>>16];
|
||||||
// pix = d_pcolormap[skintable[new[3]>>16][new[2]>>16]];
|
// pix = d_pcolormap[skintable[new[3]>>16][new[2]>>16]];
|
||||||
((unsigned int *)d_viewbuffer)[d_scantable[new[1]] + new[0]] = pix;//d_8to32table[pix];
|
((unsigned int *)d_viewbuffer)[d_scantable[newt[1]] + newt[0]] = pix;//d_8to32table[pix];
|
||||||
}
|
}
|
||||||
|
|
||||||
nodraw:
|
nodraw:
|
||||||
// recursively continue
|
// recursively continue
|
||||||
D_PolysetRecursiveTriangle32Trans (lp3, lp1, new);
|
D_PolysetRecursiveTriangle32Trans (lp3, lp1, newt);
|
||||||
D_PolysetRecursiveTriangle32Trans (lp3, new, lp2);
|
D_PolysetRecursiveTriangle32Trans (lp3, newt, lp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void D_PolysetRecursiveTriangle16 (int *lp1, int *lp2, int *lp3)
|
void D_PolysetRecursiveTriangle16 (int *lp1, int *lp2, int *lp3)
|
||||||
{
|
{
|
||||||
int *temp;
|
int *temp;
|
||||||
int d;
|
int d;
|
||||||
int new[6];
|
int newt[6];
|
||||||
int z;
|
int z;
|
||||||
short *zbuf;
|
short *zbuf;
|
||||||
|
|
||||||
|
@ -455,11 +455,11 @@ split2:
|
||||||
|
|
||||||
split:
|
split:
|
||||||
// split this edge
|
// split this edge
|
||||||
new[0] = (lp1[0] + lp2[0]) >> 1;
|
newt[0] = (lp1[0] + lp2[0]) >> 1;
|
||||||
new[1] = (lp1[1] + lp2[1]) >> 1;
|
newt[1] = (lp1[1] + lp2[1]) >> 1;
|
||||||
new[2] = (lp1[2] + lp2[2]) >> 1;
|
newt[2] = (lp1[2] + lp2[2]) >> 1;
|
||||||
new[3] = (lp1[3] + lp2[3]) >> 1;
|
newt[3] = (lp1[3] + lp2[3]) >> 1;
|
||||||
new[5] = (lp1[5] + lp2[5]) >> 1;
|
newt[5] = (lp1[5] + lp2[5]) >> 1;
|
||||||
|
|
||||||
// draw the point if splitting a leading edge
|
// draw the point if splitting a leading edge
|
||||||
if (lp2[1] > lp1[1])
|
if (lp2[1] > lp1[1])
|
||||||
|
@ -468,24 +468,24 @@ split:
|
||||||
goto nodraw;
|
goto nodraw;
|
||||||
|
|
||||||
|
|
||||||
z = new[5]>>16;
|
z = newt[5]>>16;
|
||||||
if ((new[1]>=vid.height|| new[1] < 0 || new[0] >= vid.width || new[0]<0)) //fixme: temp
|
if ((newt[1]>=vid.height|| newt[1] < 0 || newt[0] >= vid.width || newt[0]<0)) //fixme: temp
|
||||||
return;
|
return;
|
||||||
zbuf = zspantable[new[1]] + new[0];
|
zbuf = zspantable[newt[1]] + newt[0];
|
||||||
|
|
||||||
if (z >= *zbuf)
|
if (z >= *zbuf)
|
||||||
{
|
{
|
||||||
int pix;
|
int pix;
|
||||||
|
|
||||||
*zbuf = z;
|
*zbuf = z;
|
||||||
pix = ((unsigned short *)d_pcolormap)[skintable[new[3]>>16][new[2]>>16]];
|
pix = ((unsigned short *)d_pcolormap)[skintable[newt[3]>>16][newt[2]>>16]];
|
||||||
((unsigned short *)d_viewbuffer)[d_scantable[new[1]] + new[0]] = pix;//d_8to32table[pix];
|
((unsigned short *)d_viewbuffer)[d_scantable[newt[1]] + newt[0]] = pix;//d_8to32table[pix];
|
||||||
}
|
}
|
||||||
|
|
||||||
nodraw:
|
nodraw:
|
||||||
// recursively continue
|
// recursively continue
|
||||||
D_PolysetRecursiveTriangle16 (lp3, lp1, new);
|
D_PolysetRecursiveTriangle16 (lp3, lp1, newt);
|
||||||
D_PolysetRecursiveTriangle16 (lp3, new, lp2);
|
D_PolysetRecursiveTriangle16 (lp3, newt, lp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void D_PolysetDrawSpans8Trans (spanpackage_t *pspanpackage)
|
void D_PolysetDrawSpans8Trans (spanpackage_t *pspanpackage)
|
||||||
|
@ -1370,7 +1370,7 @@ void D_PolysetRecursiveTriangleC (int *lp1, int *lp2, int *lp3)
|
||||||
{
|
{
|
||||||
int *temp;
|
int *temp;
|
||||||
int d;
|
int d;
|
||||||
int new[6];
|
int newt[6];
|
||||||
int z;
|
int z;
|
||||||
short *zbuf;
|
short *zbuf;
|
||||||
|
|
||||||
|
@ -1413,11 +1413,11 @@ split2:
|
||||||
|
|
||||||
split:
|
split:
|
||||||
// split this edge
|
// split this edge
|
||||||
new[0] = (lp1[0] + lp2[0]) >> 1;
|
newt[0] = (lp1[0] + lp2[0]) >> 1;
|
||||||
new[1] = (lp1[1] + lp2[1]) >> 1;
|
newt[1] = (lp1[1] + lp2[1]) >> 1;
|
||||||
new[2] = (lp1[2] + lp2[2]) >> 1;
|
newt[2] = (lp1[2] + lp2[2]) >> 1;
|
||||||
new[3] = (lp1[3] + lp2[3]) >> 1;
|
newt[3] = (lp1[3] + lp2[3]) >> 1;
|
||||||
new[5] = (lp1[5] + lp2[5]) >> 1;
|
newt[5] = (lp1[5] + lp2[5]) >> 1;
|
||||||
|
|
||||||
// draw the point if splitting a leading edge
|
// draw the point if splitting a leading edge
|
||||||
if (lp2[1] > lp1[1])
|
if (lp2[1] > lp1[1])
|
||||||
|
@ -1426,28 +1426,28 @@ split:
|
||||||
goto nodraw;
|
goto nodraw;
|
||||||
|
|
||||||
|
|
||||||
z = new[5]>>16;
|
z = newt[5]>>16;
|
||||||
zbuf = zspantable[new[1]] + new[0];
|
zbuf = zspantable[newt[1]] + newt[0];
|
||||||
if (z >= *zbuf)
|
if (z >= *zbuf)
|
||||||
{
|
{
|
||||||
int pix;
|
int pix;
|
||||||
|
|
||||||
*zbuf = z;
|
*zbuf = z;
|
||||||
pix = d_pcolormap[apalremap[skintable[new[3]>>16][new[2]>>16]]];
|
pix = d_pcolormap[apalremap[skintable[newt[3]>>16][newt[2]>>16]]];
|
||||||
d_viewbuffer[d_scantable[new[1]] + new[0]] = pix;
|
d_viewbuffer[d_scantable[newt[1]] + newt[0]] = pix;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodraw:
|
nodraw:
|
||||||
// recursively continue
|
// recursively continue
|
||||||
D_PolysetRecursiveTriangleC (lp3, lp1, new);
|
D_PolysetRecursiveTriangleC (lp3, lp1, newt);
|
||||||
D_PolysetRecursiveTriangleC (lp3, new, lp2);
|
D_PolysetRecursiveTriangleC (lp3, newt, lp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void D_PolysetRecursiveTriangle16C (int *lp1, int *lp2, int *lp3)
|
void D_PolysetRecursiveTriangle16C (int *lp1, int *lp2, int *lp3)
|
||||||
{
|
{
|
||||||
int *temp;
|
int *temp;
|
||||||
int d;
|
int d;
|
||||||
int new[6];
|
int newt[6];
|
||||||
int z;
|
int z;
|
||||||
short *zbuf;
|
short *zbuf;
|
||||||
|
|
||||||
|
@ -1490,11 +1490,11 @@ split2:
|
||||||
|
|
||||||
split:
|
split:
|
||||||
// split this edge
|
// split this edge
|
||||||
new[0] = (lp1[0] + lp2[0]) >> 1;
|
newt[0] = (lp1[0] + lp2[0]) >> 1;
|
||||||
new[1] = (lp1[1] + lp2[1]) >> 1;
|
newt[1] = (lp1[1] + lp2[1]) >> 1;
|
||||||
new[2] = (lp1[2] + lp2[2]) >> 1;
|
newt[2] = (lp1[2] + lp2[2]) >> 1;
|
||||||
new[3] = (lp1[3] + lp2[3]) >> 1;
|
newt[3] = (lp1[3] + lp2[3]) >> 1;
|
||||||
new[5] = (lp1[5] + lp2[5]) >> 1;
|
newt[5] = (lp1[5] + lp2[5]) >> 1;
|
||||||
|
|
||||||
// draw the point if splitting a leading edge
|
// draw the point if splitting a leading edge
|
||||||
if (lp2[1] > lp1[1])
|
if (lp2[1] > lp1[1])
|
||||||
|
@ -1503,8 +1503,8 @@ split:
|
||||||
goto nodraw;
|
goto nodraw;
|
||||||
|
|
||||||
|
|
||||||
z = new[5]>>16;
|
z = newt[5]>>16;
|
||||||
zbuf = zspantable[new[1]] + new[0];
|
zbuf = zspantable[newt[1]] + newt[0];
|
||||||
if (z >= *zbuf)
|
if (z >= *zbuf)
|
||||||
{
|
{
|
||||||
int pix;
|
int pix;
|
||||||
|
@ -1514,14 +1514,14 @@ split:
|
||||||
|
|
||||||
|
|
||||||
*zbuf = z;
|
*zbuf = z;
|
||||||
pix = skintable[new[3]>>16][new[2]>>16];
|
pix = skintable[newt[3]>>16][newt[2]>>16];
|
||||||
((unsigned short *)d_viewbuffer)[d_scantable[new[1]] + new[0]] = pix;
|
((unsigned short *)d_viewbuffer)[d_scantable[newt[1]] + newt[0]] = pix;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodraw:
|
nodraw:
|
||||||
// recursively continue
|
// recursively continue
|
||||||
D_PolysetRecursiveTriangle16C (lp3, lp1, new);
|
D_PolysetRecursiveTriangle16C (lp3, lp1, newt);
|
||||||
D_PolysetRecursiveTriangle16C (lp3, new, lp2);
|
D_PolysetRecursiveTriangle16C (lp3, newt, lp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2562,7 +2562,7 @@ void D_PolysetSetEdgeTable (void)
|
||||||
void D_PolysetRecursiveDrawLine (int *lp1, int *lp2)
|
void D_PolysetRecursiveDrawLine (int *lp1, int *lp2)
|
||||||
{
|
{
|
||||||
int d;
|
int d;
|
||||||
int new[6];
|
int newt[6];
|
||||||
int ofs;
|
int ofs;
|
||||||
|
|
||||||
d = lp2[0] - lp1[0];
|
d = lp2[0] - lp1[0];
|
||||||
|
@ -2576,34 +2576,34 @@ void D_PolysetRecursiveDrawLine (int *lp1, int *lp2)
|
||||||
|
|
||||||
split:
|
split:
|
||||||
// split this edge
|
// split this edge
|
||||||
new[0] = (lp1[0] + lp2[0]) >> 1;
|
newt[0] = (lp1[0] + lp2[0]) >> 1;
|
||||||
new[1] = (lp1[1] + lp2[1]) >> 1;
|
newt[1] = (lp1[1] + lp2[1]) >> 1;
|
||||||
new[5] = (lp1[5] + lp2[5]) >> 1;
|
newt[5] = (lp1[5] + lp2[5]) >> 1;
|
||||||
new[2] = (lp1[2] + lp2[2]) >> 1;
|
newt[2] = (lp1[2] + lp2[2]) >> 1;
|
||||||
new[3] = (lp1[3] + lp2[3]) >> 1;
|
newt[3] = (lp1[3] + lp2[3]) >> 1;
|
||||||
new[4] = (lp1[4] + lp2[4]) >> 1;
|
newt[4] = (lp1[4] + lp2[4]) >> 1;
|
||||||
|
|
||||||
// draw the point
|
// draw the point
|
||||||
ofs = d_scantable[new[1]] + new[0];
|
ofs = d_scantable[newt[1]] + newt[0];
|
||||||
if (new[5] > d_pzbuffer[ofs])
|
if (newt[5] > d_pzbuffer[ofs])
|
||||||
{
|
{
|
||||||
int pix;
|
int pix;
|
||||||
|
|
||||||
d_pzbuffer[ofs] = new[5];
|
d_pzbuffer[ofs] = newt[5];
|
||||||
pix = apalremap[skintable[new[3]>>16][new[2]>>16]];
|
pix = apalremap[skintable[newt[3]>>16][newt[2]>>16]];
|
||||||
// pix = ((qbyte *)acolormap)[pix + (new[4] & 0xFF00)];
|
// pix = ((qbyte *)acolormap)[pix + (newt[4] & 0xFF00)];
|
||||||
d_viewbuffer[ofs] = pix;
|
d_viewbuffer[ofs] = pix;
|
||||||
}
|
}
|
||||||
|
|
||||||
// recursively continue
|
// recursively continue
|
||||||
D_PolysetRecursiveDrawLine (lp1, new);
|
D_PolysetRecursiveDrawLine (lp1, newt);
|
||||||
D_PolysetRecursiveDrawLine (new, lp2);
|
D_PolysetRecursiveDrawLine (newt, lp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void D_PolysetRecursiveTriangle2 (int *lp1, int *lp2, int *lp3)
|
void D_PolysetRecursiveTriangle2 (int *lp1, int *lp2, int *lp3)
|
||||||
{
|
{
|
||||||
int d;
|
int d;
|
||||||
int new[4];
|
int newt[4];
|
||||||
|
|
||||||
d = lp2[0] - lp1[0];
|
d = lp2[0] - lp1[0];
|
||||||
if (d < -1 || d > 1)
|
if (d < -1 || d > 1)
|
||||||
|
@ -2615,18 +2615,18 @@ void D_PolysetRecursiveTriangle2 (int *lp1, int *lp2, int *lp3)
|
||||||
|
|
||||||
split:
|
split:
|
||||||
// split this edge
|
// split this edge
|
||||||
new[0] = (lp1[0] + lp2[0]) >> 1;
|
newt[0] = (lp1[0] + lp2[0]) >> 1;
|
||||||
new[1] = (lp1[1] + lp2[1]) >> 1;
|
newt[1] = (lp1[1] + lp2[1]) >> 1;
|
||||||
new[5] = (lp1[5] + lp2[5]) >> 1;
|
newt[5] = (lp1[5] + lp2[5]) >> 1;
|
||||||
new[2] = (lp1[2] + lp2[2]) >> 1;
|
newt[2] = (lp1[2] + lp2[2]) >> 1;
|
||||||
new[3] = (lp1[3] + lp2[3]) >> 1;
|
newt[3] = (lp1[3] + lp2[3]) >> 1;
|
||||||
new[4] = (lp1[4] + lp2[4]) >> 1;
|
newt[4] = (lp1[4] + lp2[4]) >> 1;
|
||||||
|
|
||||||
D_PolysetRecursiveDrawLine (new, lp3);
|
D_PolysetRecursiveDrawLine (newt, lp3);
|
||||||
|
|
||||||
// recursively continue
|
// recursively continue
|
||||||
D_PolysetRecursiveTriangle (lp1, new, lp3);
|
D_PolysetRecursiveTriangle (lp1, newt, lp3);
|
||||||
D_PolysetRecursiveTriangle (new, lp2, lp3);
|
D_PolysetRecursiveTriangle (newt, lp2, lp3);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -137,7 +137,7 @@ D_SCAlloc
|
||||||
*/
|
*/
|
||||||
surfcache_t *D_SCAlloc (int width, int bpp, int size)
|
surfcache_t *D_SCAlloc (int width, int bpp, int size)
|
||||||
{
|
{
|
||||||
surfcache_t *new;
|
surfcache_t *newsc;
|
||||||
qboolean wrapped_this_time;
|
qboolean wrapped_this_time;
|
||||||
|
|
||||||
// if ((width < 0) || (width > 256))
|
// if ((width < 0) || (width > 256))
|
||||||
|
@ -168,11 +168,11 @@ surfcache_t *D_SCAlloc (int width, int bpp, int size)
|
||||||
}
|
}
|
||||||
|
|
||||||
// colect and free surfcache_t blocks until the rover block is large enough
|
// colect and free surfcache_t blocks until the rover block is large enough
|
||||||
new = sc_rover;
|
newsc = sc_rover;
|
||||||
if (sc_rover->owner)
|
if (sc_rover->owner)
|
||||||
*sc_rover->owner = NULL;
|
*sc_rover->owner = NULL;
|
||||||
|
|
||||||
while (new->size < size)
|
while (newsc->size < size)
|
||||||
{
|
{
|
||||||
// free another
|
// free another
|
||||||
sc_rover = sc_rover->next;
|
sc_rover = sc_rover->next;
|
||||||
|
@ -181,32 +181,32 @@ surfcache_t *D_SCAlloc (int width, int bpp, int size)
|
||||||
if (sc_rover->owner)
|
if (sc_rover->owner)
|
||||||
*sc_rover->owner = NULL;
|
*sc_rover->owner = NULL;
|
||||||
|
|
||||||
new->size += sc_rover->size;
|
newsc->size += sc_rover->size;
|
||||||
new->next = sc_rover->next;
|
newsc->next = sc_rover->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create a fragment out of any leftovers
|
// create a fragment out of any leftovers
|
||||||
if (new->size - size > 256)
|
if (newsc->size - size > 256)
|
||||||
{
|
{
|
||||||
sc_rover = (surfcache_t *)( (qbyte *)new + size);
|
sc_rover = (surfcache_t *)( (qbyte *)newsc + size);
|
||||||
sc_rover->size = new->size - size;
|
sc_rover->size = newsc->size - size;
|
||||||
sc_rover->next = new->next;
|
sc_rover->next = newsc->next;
|
||||||
sc_rover->width = 0;
|
sc_rover->width = 0;
|
||||||
sc_rover->owner = NULL;
|
sc_rover->owner = NULL;
|
||||||
new->next = sc_rover;
|
newsc->next = sc_rover;
|
||||||
new->size = size;
|
newsc->size = size;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sc_rover = new->next;
|
sc_rover = newsc->next;
|
||||||
|
|
||||||
new->width = width;
|
newsc->width = width;
|
||||||
// DEBUG
|
// DEBUG
|
||||||
if (width > 0)
|
if (width > 0)
|
||||||
new->height = (size - sizeof(*new) + sizeof(new->data)) / (width*bpp);
|
newsc->height = (size - sizeof(*newsc) + sizeof(newsc->data)) / (width*bpp);
|
||||||
|
|
||||||
new->bytesperpix = bpp;
|
newsc->bytesperpix = bpp;
|
||||||
|
|
||||||
new->owner = NULL; // should be set properly after return
|
newsc->owner = NULL; // should be set properly after return
|
||||||
|
|
||||||
if (d_roverwrapped)
|
if (d_roverwrapped)
|
||||||
{
|
{
|
||||||
|
@ -219,7 +219,7 @@ surfcache_t *D_SCAlloc (int width, int bpp, int size)
|
||||||
}
|
}
|
||||||
|
|
||||||
D_CheckCacheGuard (); // DEBUG
|
D_CheckCacheGuard (); // DEBUG
|
||||||
return new;
|
return newsc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1633,6 +1633,38 @@ static int R_SIRDZFunc(int sub)
|
||||||
return ((e<=R_SIRDmaxDiff)? e : R_SIRDmaxDiff );
|
return ((e<=R_SIRDmaxDiff)? e : R_SIRDmaxDiff );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
void R_ApplyFog(void)
|
||||||
|
{
|
||||||
|
// test code for fog, the real implementation should use a lookup table
|
||||||
|
qbyte *pbuf;
|
||||||
|
short *zbuf;
|
||||||
|
extern short *d_pzbuffer;
|
||||||
|
int y, x;
|
||||||
|
float v;
|
||||||
|
|
||||||
|
for (y=0 ; y<vid.height ; y++)
|
||||||
|
{
|
||||||
|
pbuf = (qbyte *)(vid.buffer + vid.rowbytes*y);
|
||||||
|
zbuf = d_pzbuffer + (vid.width*y);
|
||||||
|
|
||||||
|
for (x=0 ; x<vid.width ; x++)
|
||||||
|
{
|
||||||
|
if (!zbuf[x])
|
||||||
|
D_SetTransLevel(1.0f, BM_ADD);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v = 64.0f / zbuf[x];
|
||||||
|
v = bound(0, v, 1);
|
||||||
|
D_SetTransLevel(v, BM_ADD);
|
||||||
|
}
|
||||||
|
|
||||||
|
pbuf[x] = AddBlend(pbuf[x], 74);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void R_ApplySIRDAlgorithum(void)
|
void R_ApplySIRDAlgorithum(void)
|
||||||
{
|
{
|
||||||
unsigned short* curz, *oldz;
|
unsigned short* curz, *oldz;
|
||||||
|
|
|
@ -47,6 +47,9 @@ WARNING: be very careful calling this from elsewhere, because the refresh
|
||||||
needs almost the entire 256k of stack space!
|
needs almost the entire 256k of stack space!
|
||||||
==================
|
==================
|
||||||
*/
|
*/
|
||||||
|
extern void D_SetTransLevel(float level, blendmode_t blend);
|
||||||
|
extern qbyte Trans(qbyte p, qbyte p2);
|
||||||
|
|
||||||
void SWSCR_UpdateScreen (void)
|
void SWSCR_UpdateScreen (void)
|
||||||
{
|
{
|
||||||
qboolean nohud;
|
qboolean nohud;
|
||||||
|
|
Loading…
Reference in a new issue