Deco apply to fire mode
This commit is contained in:
parent
5207c6f7c0
commit
ec3fdfed1c
@ -16,6 +16,7 @@
|
|||||||
#define PSPEC_STICKMAN 0x00000200
|
#define PSPEC_STICKMAN 0x00000200
|
||||||
|
|
||||||
#define NO_DECO 0x00001000
|
#define NO_DECO 0x00001000
|
||||||
|
#define DECO_FIRE 0x00002000
|
||||||
|
|
||||||
#define FIREMODE 0x00FF0000
|
#define FIREMODE 0x00FF0000
|
||||||
#define FIRE_ADD 0x00010000
|
#define FIRE_ADD 0x00010000
|
||||||
|
@ -17,6 +17,7 @@ int graphics_DEFAULT(GRAPHICS_FUNC_ARGS)
|
|||||||
*fireg = *colg/2;
|
*fireg = *colg/2;
|
||||||
*fireb = *colb/2;
|
*fireb = *colb/2;
|
||||||
*firea = 125;
|
*firea = 125;
|
||||||
|
*pixel_mode |= DECO_FIRE;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1800,6 +1800,13 @@ void render_parts(pixel *vid)
|
|||||||
colb = (deca*decb + (255-deca)*colb) >> 8;
|
colb = (deca*decb + (255-deca)*colb) >> 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(pixel_mode & DECO_FIRE && decorations_enable)
|
||||||
|
{
|
||||||
|
firer = (deca*decr + (255-deca)*firer) >> 8;
|
||||||
|
fireg = (deca*decg + (255-deca)*fireg) >> 8;
|
||||||
|
fireb = (deca*decb + (255-deca)*fireb) >> 8;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef OGLR
|
#ifndef OGLR
|
||||||
//All colours are now set, check ranges
|
//All colours are now set, check ranges
|
||||||
if(colr>255) colr = 255;
|
if(colr>255) colr = 255;
|
||||||
@ -2242,27 +2249,10 @@ void render_parts(pixel *vid)
|
|||||||
smokeC[csmokeC++] = ((float)firea)/255.0f;
|
smokeC[csmokeC++] = ((float)firea)/255.0f;
|
||||||
csmoke++;
|
csmoke++;
|
||||||
#else
|
#else
|
||||||
firea /= 8;
|
firea /= 2;
|
||||||
if(cmode==CM_FIRE || cmode==CM_BLOB || cmode==CM_FANCY)
|
fire_r[ny/CELL][nx/CELL] = (firea*firer + (255-firea)*fire_r[ny/CELL][nx/CELL]) >> 8;
|
||||||
{
|
fire_g[ny/CELL][nx/CELL] = (firea*fireg + (255-firea)*fire_g[ny/CELL][nx/CELL]) >> 8;
|
||||||
fire_r[ny/CELL][nx/CELL] = (firea*firer + (255-firea)*fire_r[ny/CELL][nx/CELL]) >> 8;
|
fire_b[ny/CELL][nx/CELL] = (firea*fireb + (255-firea)*fire_b[ny/CELL][nx/CELL]) >> 8;
|
||||||
fire_g[ny/CELL][nx/CELL] = (firea*fireg + (255-firea)*fire_g[ny/CELL][nx/CELL]) >> 8;
|
|
||||||
fire_b[ny/CELL][nx/CELL] = (firea*fireb + (255-firea)*fire_b[ny/CELL][nx/CELL]) >> 8;
|
|
||||||
} else {
|
|
||||||
//This smoke rendering style is horrendously slow, optimise, optimise, optimise!
|
|
||||||
for (x=-3; x<4; x++)
|
|
||||||
{
|
|
||||||
for (y=-3; y<4; y++)
|
|
||||||
{
|
|
||||||
if (abs(x)+abs(y) <2 && !(abs(x)==2||abs(y)==2))
|
|
||||||
blendpixel(vid, x+nx, y+ny, firer, fireg, fireb, (30*(firea))>>8);
|
|
||||||
if (abs(x)+abs(y) <=3 && abs(x)+abs(y))
|
|
||||||
blendpixel(vid, x+nx, y+ny, firer, fireg, fireb, (20*(firea))>>8);
|
|
||||||
if (abs(x)+abs(y) == 2)
|
|
||||||
blendpixel(vid, x+nx, y+ny, firer, fireg, fireb, (10*(firea))>>8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if(firea && (pixel_mode & FIRE_ADD))
|
if(firea && (pixel_mode & FIRE_ADD))
|
||||||
@ -2277,36 +2267,20 @@ void render_parts(pixel *vid)
|
|||||||
cfire++;
|
cfire++;
|
||||||
#else
|
#else
|
||||||
firea /= 8;
|
firea /= 8;
|
||||||
if(cmode==CM_FIRE || cmode==CM_BLOB || cmode==CM_FANCY)
|
firer = ((firea*firer) >> 8) + fire_r[ny/CELL][nx/CELL];
|
||||||
{
|
fireg = ((firea*fireg) >> 8) + fire_g[ny/CELL][nx/CELL];
|
||||||
firer = ((firea*firer) >> 8) + fire_r[ny/CELL][nx/CELL];
|
fireb = ((firea*fireb) >> 8) + fire_b[ny/CELL][nx/CELL];
|
||||||
fireg = ((firea*fireg) >> 8) + fire_g[ny/CELL][nx/CELL];
|
|
||||||
fireb = ((firea*fireb) >> 8) + fire_b[ny/CELL][nx/CELL];
|
if(firer>255)
|
||||||
|
firer = 255;
|
||||||
|
if(fireg>255)
|
||||||
|
fireg = 255;
|
||||||
|
if(fireb>255)
|
||||||
|
fireb = 255;
|
||||||
|
|
||||||
if(firer>255)
|
fire_r[ny/CELL][nx/CELL] = firer;
|
||||||
firer = 255;
|
fire_g[ny/CELL][nx/CELL] = fireg;
|
||||||
if(fireg>255)
|
fire_b[ny/CELL][nx/CELL] = fireb;
|
||||||
fireg = 255;
|
|
||||||
if(fireb>255)
|
|
||||||
fireb = 255;
|
|
||||||
|
|
||||||
fire_r[ny/CELL][nx/CELL] = firer;
|
|
||||||
fire_g[ny/CELL][nx/CELL] = fireg;
|
|
||||||
fire_b[ny/CELL][nx/CELL] = fireb;
|
|
||||||
} else {
|
|
||||||
for (x=-3; x<4; x++)
|
|
||||||
{
|
|
||||||
for (y=-3; y<4; y++)
|
|
||||||
{
|
|
||||||
if (abs(x)+abs(y) <2 && !(abs(x)==2||abs(y)==2))
|
|
||||||
addpixel(vid, x+nx, y+ny, firer, fireg, fireb, (175*(firea))>>8);
|
|
||||||
if (abs(x)+abs(y) <=3 && abs(x)+abs(y))
|
|
||||||
addpixel(vid, x+nx, y+ny, firer, fireg, fireb, (100*(firea))>>8);
|
|
||||||
if (abs(x)+abs(y) == 2)
|
|
||||||
addpixel(vid, x+nx, y+ny, firer, fireg, fireb, (55*(firea))>>8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user