Skip to content
This repository has been archived by the owner on Dec 19, 2022. It is now read-only.

Commit

Permalink
Increase video mode slots from 21 to 27.
Browse files Browse the repository at this point in the history
Fix particle alpha formulas.
Add fade-out to sticky particles.
Revert joystick code to previous version.
  • Loading branch information
hobgoblin committed Jul 30, 2014
1 parent 740d92d commit ce3ff10
Show file tree
Hide file tree
Showing 12 changed files with 470 additions and 417 deletions.
6 changes: 3 additions & 3 deletions cl_main.c
Expand Up @@ -830,9 +830,9 @@ void CL_RelinkEntities (void)
R_RocketTrail (oldorg, ent->origin, 5);
dl = CL_AllocDlight (i);
VectorCopy (ent->origin, dl->origin);
dl->radius = 200;
dl->die = cl.time + 0.01;
dl->color = palmapnofb[36][26][8];
dl->radius = 100;
dl->die = cl.time + 0.1;
dl->color = palmapnofb[24][24][8];
}
else if (ent->effects & EF_ROCKET)
{
Expand Down
49 changes: 27 additions & 22 deletions d_part.c
Expand Up @@ -31,7 +31,9 @@ void D_DrawParticle_33_C (particle_t *pparticle) // Manoel Kasimier
byte *pdest;
short *pz;
int i, izi, pix, count, u, v;
// byte *dottexture; // Manoel Kasimier
static int pcolor; //qb: save some lookups

pcolor = pparticle->color;

// transform point
VectorSubtract (pparticle->org, r_origin, local);
Expand Down Expand Up @@ -77,21 +79,21 @@ void D_DrawParticle_33_C (particle_t *pparticle) // Manoel Kasimier
if (pz[0] <= izi)
{
pz[0] = izi;
pdest[0] = alphamap[(int)(pparticle->color*256 + pdest[0])];
pdest[0] = alphamap[(int)(pdest[0]*256 + pcolor)];
}
}
else if (pix == 2)
{
if (pz[0] <= izi)
{
pz[0] = izi;
pdest[0] = alphamap[(int)(pparticle->color*256 + pdest[0])];
pdest[0] = alphamap[(int)pdest[0]*256 + pcolor];
pz[1] = izi;
pdest[1] = alphamap[(int)(pparticle->color*256 + pdest[1])];
pdest[1] = alphamap[(int)pdest[1]*256 + pcolor];
pz[d_zwidth] = izi;
pdest[screenwidth] = alphamap[(int)(pparticle->color*256 + pdest[screenwidth])];
pdest[screenwidth] = alphamap[(int)pdest[screenwidth]*256 + pcolor];
pz[d_zwidth+1] = izi;
pdest[screenwidth+1] = alphamap[(int)(pparticle->color*256 + pdest[screenwidth+1])];
pdest[screenwidth+1] = alphamap[(int)pdest[screenwidth+1]*256 + pcolor];
}
}
else
Expand All @@ -104,22 +106,23 @@ void D_DrawParticle_33_C (particle_t *pparticle) // Manoel Kasimier
for (i=0 ; i<pix ; i++)
{
pz[i] = izi;
pdest[i] = alphamap[(int)(pparticle->color*256 + pdest[i])];

pdest[i] = alphamap[(int)pdest[i]*256 + pcolor];
}
}
}
// Manoel Kasimier - end
}

void D_DrawParticle_50_C (particle_t *pparticle) //qb
void D_DrawParticle_50_C (particle_t *pparticle) //qb: 50%
{
vec3_t local, transformed;
float zi;
byte *pdest;
short *pz;
int i, izi, pix, count, u, v;
// byte *dottexture; // Manoel Kasimier
static int pcolor; //qb: save some lookups

pcolor = pparticle->color;

// transform point
VectorSubtract (pparticle->org, r_origin, local);
Expand Down Expand Up @@ -162,21 +165,21 @@ void D_DrawParticle_50_C (particle_t *pparticle) //qb
if (pz[0] <= izi)
{
pz[0] = izi;
pdest[0] = alpha50map[(int)(pparticle->color + pdest[0]*256)];
pdest[0] = alpha50map[(int)pdest[0]*256 + pcolor];
}
}
else if (pix == 2)
{
if (pz[0] <= izi)
{
pz[0] = izi;
pdest[0] = alpha50map[(int)(pparticle->color + pdest[0]*256)];
pdest[0] = alpha50map[(int)pdest[0]*256 + pcolor];
pz[1] = izi;
pdest[1] = alpha50map[(int)(pparticle->color + pdest[1]*256)];
pdest[1] = alpha50map[(int)pdest[1]*256 + pcolor];
pz[d_zwidth] = izi;
pdest[screenwidth] = alpha50map[(int)(pparticle->color + pdest[screenwidth]*256)];
pdest[screenwidth] = alpha50map[(int)pdest[screenwidth]*256 + pcolor];
pz[d_zwidth+1] = izi;
pdest[screenwidth+1] = alpha50map[(int)(pparticle->color + pdest[screenwidth+1]*256)];
pdest[screenwidth+1] = alpha50map[(int)pdest[screenwidth+1]*256 + pcolor];
}
}
else
Expand All @@ -189,7 +192,7 @@ void D_DrawParticle_50_C (particle_t *pparticle) //qb
for (i=0 ; i<pix ; i++)
{
pz[i] = izi;
pdest[i] = alpha50map[(int)(pdest[i] + pparticle->color*256)];
pdest[i] = alpha50map[(int)pdest[i]*256 + pcolor];

}
}
Expand All @@ -206,7 +209,9 @@ void D_DrawParticle_66_C (particle_t *pparticle) // Manoel Kasimier
byte *pdest;
short *pz;
int i, izi, pix, count, u, v;
// byte *dottexture; // Manoel Kasimier
static int pcolor; //qb: save some lookups

pcolor = pparticle->color;

// transform point
VectorSubtract (pparticle->org, r_origin, local);
Expand Down Expand Up @@ -257,13 +262,13 @@ void D_DrawParticle_66_C (particle_t *pparticle) // Manoel Kasimier
if (pz[0] <= izi)
{
pz[0] = izi;
pdest[0] = alphamap[(int)(pparticle->color + pdest[0]*256)];
pdest[0] = alphamap[(int)pdest[0] + pcolor*256];
pz[1] = izi;
pdest[1] = alphamap[(int)(pparticle->color + pdest[1]*256)];
pdest[1] = alphamap[(int)pdest[1] + pcolor*256];
pz[d_zwidth] = izi;
pdest[screenwidth] = alphamap[(int)(pparticle->color + pdest[screenwidth]*256)];
pdest[screenwidth] = alphamap[(int)pdest[screenwidth] + pcolor*256];
pz[d_zwidth+1] = izi;
pdest[screenwidth+1] = alphamap[(int)(pparticle->color + pdest[screenwidth+1]*256)];
pdest[screenwidth+1] = alphamap[(int)pdest[screenwidth+1] + pcolor*256];
}
}
else
Expand All @@ -276,7 +281,7 @@ void D_DrawParticle_66_C (particle_t *pparticle) // Manoel Kasimier
for (i=0 ; i<pix ; i++)
{
pz[i] = izi;
pdest[i] = alphamap[(int)(pdest[i] + pparticle->color*256)];
pdest[i] = alphamap[(int)(pdest[i] + pcolor*256)];

}
}
Expand Down
2 changes: 0 additions & 2 deletions host.c
Expand Up @@ -43,7 +43,6 @@ cvar_t host_timescale = {"host_timescale", "0", "host_timescale[0.0 to 10.0] sca
void Palette_Init (void);
void BuildGammaTable (float g);
void GrabLightcolormap (void);
void IN_ReadJoystickMessages (void);

quakeparms_t host_parms;

Expand Down Expand Up @@ -800,7 +799,6 @@ void _Host_Frame (float time)
Sys_SendKeyEvents ();

// allow mice or other external controllers to add commands
IN_ReadJoystickMessages (); //qb: from directq
IN_Commands ();

// decide the simulation time
Expand Down
4 changes: 2 additions & 2 deletions menu.c
Expand Up @@ -1018,7 +1018,7 @@ void M_SinglePlayer_Draw (void)

M_DrawTransPic (16, 0 /*4*/, Draw_CachePic("gfx/qplaque.lmp"), false);
p = Draw_CachePic ("gfx/ttl_sgl.lmp");
M_DrawTransPic ((360 - p->width) >> 1, 0 /*4*/, p, false);
M_DrawTransPic ((MIN_VID_WIDTH - p->width) >> 1, 0 /*4*/, p, false);
M_DrawTransPic (72, 28 /*32*/, Draw_CachePic("gfx/sp_menu.lmp"), false);

f = (int)(host_time*10) % 6;
Expand Down Expand Up @@ -2316,7 +2316,7 @@ void M_Setup_Draw (void)
i2 = crosshair_color.value;
crosshair.value = setup_crosshair;
crosshair_color.value = setup_crosshair_color;
Crosshair_Start((184 + (360-320)/2- (360.0 - 360.0/sbar_scale.value)/2) * scr_2d_scale_h - 6*(vid.width/MIN_VID_WIDTH),
Crosshair_Start((184 + (360-320)/2- (MIN_VID_WIDTH - MIN_VID_WIDTH/sbar_scale.value)/2) * scr_2d_scale_h - 6*(vid.width/MIN_VID_WIDTH),
(144 + (100.0/sbar_scale.value)-100) * scr_2d_scale_v - 6*(vid.width/MIN_VID_WIDTH));
crosshair.value = i1;
crosshair_color.value = i2;
Expand Down
1 change: 1 addition & 0 deletions pr_edict.c
Expand Up @@ -67,6 +67,7 @@ typedef struct

static gefv_cache gefvCache[GEFV_CACHESIZE] = {{NULL, ""}, {NULL, ""}};


// 2001-10-20 Extension System by LordHavoc start
void PR_Extension_List_f (void)
{
Expand Down
40 changes: 25 additions & 15 deletions r_part.c
Expand Up @@ -193,7 +193,7 @@ void R_ClearParticles (void)
void R_ReadPointFile_f (void)
{
FILE *f;
vec3_t org={0,0,0};
vec3_t org= {0,0,0};
int r;
int c;
particle_t *p;
Expand Down Expand Up @@ -366,7 +366,7 @@ void R_BlobExplosion (vec3_t org)
free_particles = p->next;
p->next = active_particles;
active_particles = p;
p->die = cl.time + r_part_blob_time.value + (rand()&8)*0.05;
p->die = cl.time + r_part_blob_time.value + (rand()&8)*0.03;
p->start_time = cl.time; // Manoel Kasimier

if (i & 1)
Expand Down Expand Up @@ -661,7 +661,7 @@ void R_RocketTrail (vec3_t start, vec3_t end, int type)
p->type = pt_fire;
p->ramp = (rand()&3);
p->color = ramp3[(int)p->ramp];
p->alpha = 0.25;
p->alpha = 0.66;
}

for (j=0 ; j<3 ; j++)
Expand All @@ -672,6 +672,7 @@ void R_RocketTrail (vec3_t start, vec3_t end, int type)
p->ramp = (rand()&3) + 2;
p->color = ramp3[(int)p->ramp];
p->type = pt_fire;
p->alpha = 0.33;
for (j=0 ; j<3 ; j++)
p->org[j] = start[j] + ((rand()&6)-3);
break;
Expand All @@ -685,8 +686,10 @@ void R_RocketTrail (vec3_t start, vec3_t end, int type)

}
p->type = pt_sticky;
p->die = cl.time + r_part_sticky_time.value; //qb: stick around
p->die = cl.time + r_part_sticky_time.value + (rand()%6); //qb: stick around
p->start_time = cl.time; // Manoel Kasimier
p->alpha = 1.0;
p->alphavel = -0.05;
break;

case 3:
Expand Down Expand Up @@ -724,8 +727,10 @@ void R_RocketTrail (vec3_t start, vec3_t end, int type)
}
p->type = pt_sticky;
len -= 3;
p->die = cl.time + 16;
p->start_time = cl.time; // Manoel Kasimier
p->die = cl.time + 32;
p->start_time = cl.time + r_part_sticky_time.value + (rand()%6); //qb: stick around
p->alpha = 1.0;
p->alphavel = -0.03;
break;

case 6: // voor trail
Expand Down Expand Up @@ -780,7 +785,7 @@ void R_DrawParticles (void)
particle_t *p, *kill;
mleaf_t *l;
float grav;
//float grav2, percent;
//float grav2, percent;
int i;
float time2, time3;
float time1;
Expand Down Expand Up @@ -837,12 +842,12 @@ void R_DrawParticles (void)
}
// Manoel Kasimier - begin

alpha = 1.0 - ((cl.time - p->start_time) / (p->die - cl.time));
if (alpha <= 0.43)
// alpha = 1.0 - ((cl.time - p->start_time) / (p->die - cl.time));
if (p->alpha <= 0.43)
D_DrawParticle_33_C (p);
else if (alpha <= 0.60)
else if (p->alpha <= 0.60)
D_DrawParticle_50_C (p);
else if (alpha <= 0.76)
else if (p->alpha <= 0.80)
D_DrawParticle_66_C (p);
else
//D_DrawParticle(p); //qb: disabled because no FOV scaling
Expand Down Expand Up @@ -927,7 +932,6 @@ void R_DrawParticles (void)
break;

case pt_staticfade:
//p->alpha + frametime*p->alphavel;
p->alpha += frametime*p->alphavel;

if (p->alpha <= 0)
Expand All @@ -948,11 +952,18 @@ void R_DrawParticles (void)
// if hit solid, go to last position,
// no velocity, fade out.
l = Mod_PointInLeaf (p->org, cl.worldmodel);
if (l->contents != CONTENTS_EMPTY) // || in_solid == true
if (l->contents == CONTENTS_WATER || l->contents == CONTENTS_SLIME)
{
p->vel[0] -= p->vel[0]*frametime*0.9;
p->vel[1] -= p->vel[1]*frametime*0.9;
p->vel[2] = grav; //qb: float up slowly
}
else if (l->contents != CONTENTS_EMPTY) // || in_solid == true
{
// still have small prob of snow melting on emitter
VectorScale(diff, 0.2, p->vel);
i = 6;

while (l->contents != CONTENTS_EMPTY)
{
VectorNormalize(p->vel);
Expand All @@ -969,11 +980,10 @@ void R_DrawParticles (void)
}
p->vel[0] = p->vel[1] = p->vel[2] = 0;
p->ramp = 0;
p->type = pt_static;
p->type = pt_staticfade; //qb: finally figured this out, was pt_static
}
else
{
p->alpha = 0.5;
p->vel[2] -= grav * 2;
}
break;
Expand Down

0 comments on commit ce3ff10

Please sign in to comment.