summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2011-10-13 21:25:06 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-10-13 21:25:06 (GMT)
commitbbe5aabf4f85c0b83da54fb8f55b4c509c323609 (patch)
tree459024e3843f519fc530c39827242e774b360df1 /src
parent7a62500eb31e04b36fb463a74109466bec6ee3bf (diff)
downloadpowder-bbe5aabf4f85c0b83da54fb8f55b4c509c323609.zip
powder-bbe5aabf4f85c0b83da54fb8f55b4c509c323609.tar.gz
Allow use of OpenGL enabled surface for future use
Diffstat (limited to 'src')
-rw-r--r--src/graphics.c2466
-rw-r--r--src/interface.c2
2 files changed, 30 insertions, 2438 deletions
diff --git a/src/graphics.c b/src/graphics.c
index f019cfb..5d7354d 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -2,7 +2,7 @@
#include <SDL/SDL.h>
#include <bzlib.h>
-#ifdef OpenGL
+#if defined(OGLR)
#ifdef MACOSX
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
@@ -284,6 +284,31 @@ pixel *rescale_img(pixel *src, int sw, int sh, int *qw, int *qh, int f)
return q;
}
+#ifdef OGLR
+void ogl_blit(int x, int y, int w, int h, pixel *src, int pitch, int scale)
+{
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(0 ,XRES*scale, 0, YRES*scale, -1, 1);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+
+ glRasterPos2i(0, YRES*scale);
+ glPixelZoom(scale, -scale);
+
+ glDrawPixels(w,h,GL_RGBA,GL_UNSIGNED_BYTE,src);
+
+ glPopMatrix();
+ glMatrixMode(GL_PROJECTION);
+ glPopMatrix();
+ glMatrixMode(GL_MODELVIEW);
+
+
+ SDL_GL_SwapBuffers ();
+}
+#endif
+
void sdl_blit_1(int x, int y, int w, int h, pixel *src, int pitch)
{
pixel *dst;
@@ -380,8 +405,8 @@ void sdl_blit_2(int x, int y, int w, int h, pixel *src, int pitch)
void sdl_blit(int x, int y, int w, int h, pixel *src, int pitch)
{
-#ifdef OpenGL
- RenderScene();
+#if defined(OGLR)
+ ogl_blit(x, y, w, h, src, pitch, sdl_scale);
#else
if (sdl_scale == 2)
sdl_blit_2(x, y, w, h, src, pitch);
@@ -404,312 +429,6 @@ void drawblob(pixel *vid, int x, int y, unsigned char cr, unsigned char cg, unsi
blendpixel(vid, x-1, y+1, cr, cg, cb, 64);
}
-//old and unused equation to draw walls
-/*
-void draw_tool(pixel *vid_buf, int b, int sl, int sr, unsigned pc, unsigned iswall)
-{
- int x, y, i, j, c;
- int bo = b;
- if (iswall==1)
- {
- b = b-100;
- x = (2+32*((b-22)/1));
- y = YRES+2+40;
- switch (b)
- {
- case WL_WALLELEC:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- if (!(i%2) && !(j%2))
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- else
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = PIXPACK(0x808080);
- }
- }
- }
- break;
- case 23:
- for (j=1; j<15; j++)
- {
- for (i=1; i<6+j; i++)
- {
- if (!(i&j&1))
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- for (; i<27; i++)
- {
- if (i&j&1)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- }
- break;
- case 24:
- for (j=1; j<15; j+=2)
- {
- for (i=1+(1&(j>>1)); i<27; i+=2)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- break;
- case 25:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = i==1||i==26||j==1||j==14 ? PIXPACK(0xA0A0A0) : PIXPACK(0x000000);
- drawtext(vid_buf, x+4, y+3, "\x8D", 255, 255, 255, 255);
- }
- }
- for (i=9; i<27; i++)
- {
- drawpixel(vid_buf, x+i, y+8+(int)(3.9f*cos(i*0.3f)), 255, 255, 255, 255);
- }
- break;
- case 26:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = i==1||i==26||j==1||j==14 ? PIXPACK(0xA0A0A0) : PIXPACK(0x000000);
- }
- }
- drawtext(vid_buf, x+9, y+3, "\xA1", 32, 64, 128, 255);
- drawtext(vid_buf, x+9, y+3, "\xA0", 255, 255, 255, 255);
- break;
- case 27:
- for (j=1; j<15; j+=2)
- {
- for (i=1+(1&(j>>1)); i<27; i+=2)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- break;
- case 28:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- if (!(i%2) && !(j%2))
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- }
- break;
- case 29:
- for (j=1; j<15; j+=2)
- {
- for (i=1+(1&(j>>1)); i<27; i+=2)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- break;
- case 30:
- for (j=1; j<15; j+=2)
- {
- for (i=1+(1&(j>>1)); i<13; i+=2)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- for (j=1; j<15; j++)
- {
- for (i=14; i<27; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- break;
- case 32:
- for (j=1; j<15; j+=2)
- {
- for (i=1+(1&(j>>1)); i<27; i+=2)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- break;
- case 33:
- for (j=1; j<15; j+=2)
- {
- for (i=1+(1&(j>>1)); i<27; i+=2)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- break;
- case 34:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- if (!(i%2) && !(j%2))
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- }
- break;
- case 36:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- c = PIXR(pc) + 3*PIXG(pc) + 2*PIXB(pc);
- if (c<544)
- {
- c = 255;
- }
- else
- {
- c = 0;
- }
- drawtext(vid_buf, x+14-textwidth("AIR")/2, y+4, "AIR", c, c, c, 255);
- break;
- case 37:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- c = PIXR(pc) + 3*PIXG(pc) + 2*PIXB(pc);
- if (c<544)
- {
- c = 255;
- }
- else
- {
- c = 0;
- }
- drawtext(vid_buf, x+14-textwidth("HEAT")/2, y+4, "HEAT", c, c, c, 255);
- break;
- case 38:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- c = PIXR(pc) + 3*PIXG(pc) + 2*PIXB(pc);
- if (c<544)
- {
- c = 255;
- }
- else
- {
- c = 0;
- }
- drawtext(vid_buf, x+14-textwidth("COOL")/2, y+4, "COOL", c, c, c, 255);
- break;
- case 39:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- c = PIXR(pc) + 3*PIXG(pc) + 2*PIXB(pc);
- if (c<544)
- {
- c = 255;
- }
- else
- {
- c = 0;
- }
- drawtext(vid_buf, x+14-textwidth("VAC")/2, y+4, "VAC", c, c, c, 255);
- break;
- default:
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- }
- if (b==30)
- {
- for (j=4; j<12; j++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+j+6)] = PIXPACK(0xFF0000);
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+j+7)] = PIXPACK(0xFF0000);
- vid_buf[(XRES+BARSIZE)*(y+j)+(x-j+21)] = PIXPACK(0xFF0000);
- vid_buf[(XRES+BARSIZE)*(y+j)+(x-j+22)] = PIXPACK(0xFF0000);
- }
- }
- }
- else
- {
- x = 2+32*(b/2);
- y = YRES+2+20*(b%2);
- for (j=1; j<15; j++)
- {
- for (i=1; i<27; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
- }
- }
- if (b==0)
- {
- for (j=4; j<12; j++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+j+6)] = PIXPACK(0xFF0000);
- vid_buf[(XRES+BARSIZE)*(y+j)+(x+j+7)] = PIXPACK(0xFF0000);
- vid_buf[(XRES+BARSIZE)*(y+j)+(x-j+21)] = PIXPACK(0xFF0000);
- vid_buf[(XRES+BARSIZE)*(y+j)+(x-j+22)] = PIXPACK(0xFF0000);
- }
- }
- c = PIXB(ptypes[b].pcolors) + 3*PIXG(ptypes[b].pcolors) + 2*PIXR(ptypes[b].pcolors);
- if (c<544)
- {
- c = 255;
- }
- else
- {
- c = 0;
- }
- drawtext(vid_buf, x+14-textwidth((char *)ptypes[b].name)/2, y+4, (char *)ptypes[b].name, c, c, c, 255);
- }
- if (bo==sl || bo==sr)
- {
- c = 0;
- if (bo==sl)
- c |= PIXPACK(0xFF0000);
- if (bo==sr)
- c |= PIXPACK(0x0000FF);
- for (i=0; i<30; i++)
- {
- vid_buf[(XRES+BARSIZE)*(y-1)+(x+i-1)] = c;
- vid_buf[(XRES+BARSIZE)*(y+16)+(x+i-1)] = c;
- }
- for (j=0; j<18; j++)
- {
- vid_buf[(XRES+BARSIZE)*(y+j-1)+(x-1)] = c;
- vid_buf[(XRES+BARSIZE)*(y+j-1)+(x+28)] = c;
- }
- }
-}
-*/
//draws walls and elements for menu
int draw_tool_xy(pixel *vid_buf, int x, int y, int b, unsigned pc)
{
@@ -719,9 +438,6 @@ int draw_tool_xy(pixel *vid_buf, int x, int y, int b, unsigned pc)
return 26;
if ((b&0xFF) == PT_LIFE)
{
-#ifdef OpenGL
- fillrect(vid_buf, x, y, 28, 16, PIXR(pc), PIXG(pc), PIXB(pc), 255);
-#else
for (j=1; j<15; j++)
{
for (i=1; i<27; i++)
@@ -729,7 +445,6 @@ int draw_tool_xy(pixel *vid_buf, int x, int y, int b, unsigned pc)
vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
}
}
-#endif
c = PIXB(pc) + 3*PIXG(pc) + 2*PIXR(pc);
if (c<544)
{
@@ -916,9 +631,6 @@ int draw_tool_xy(pixel *vid_buf, int x, int y, int b, unsigned pc)
{
//x = 2+32*(b/2);
//y = YRES+2+20*(b%2);
-#ifdef OpenGL
- fillrect(vid_buf, x, y, 28, 16, PIXR(pc), PIXG(pc), PIXB(pc), 255);
-#else
for (j=1; j<15; j++)
{
for (i=1; i<27; i++)
@@ -926,7 +638,6 @@ int draw_tool_xy(pixel *vid_buf, int x, int y, int b, unsigned pc)
vid_buf[(XRES+BARSIZE)*(y+j)+(x+i)] = pc;
}
}
-#endif
if (b==0)
{
for (j=4; j<12; j++)
@@ -1028,8 +739,6 @@ inline int drawchar(pixel *vid, int x, int y, int c, int r, int g, int b, int a)
int drawtext(pixel *vid, int x, int y, const char *s, int r, int g, int b, int a)
{
-#ifdef OpenGL
-#else
int sx = x;
for (; *s; s++)
{
@@ -1072,7 +781,6 @@ int drawtext(pixel *vid, int x, int y, const char *s, int r, int g, int b, int a
else
x = drawchar(vid, x, y, *(unsigned char *)s, r, g, b, a);
}
-#endif
return x;
}
@@ -1089,8 +797,6 @@ int drawtext_outline(pixel *vid, int x, int y, const char *s, int r, int g, int
}
int drawtextwrap(pixel *vid, int x, int y, int w, const char *s, int r, int g, int b, int a)
{
-#ifdef OpenGL
-#else
int sx = x;
int rh = 12;
int rw = 0;
@@ -1158,21 +864,11 @@ int drawtextwrap(pixel *vid, int x, int y, int w, const char *s, int r, int g, i
}
return rh;
- #endif
}
//draws a rectange, (x,y) are the top left coords.
void drawrect(pixel *vid, int x, int y, int w, int h, int r, int g, int b, int a)
{
-#ifdef OpenGL
- glBegin(GL_LINE_LOOP);
- glColor4ub(r, g, b, a);
- glVertex2i(x, y);
- glVertex2i(x+w, y);
- glVertex2i(x+w, y+h);
- glVertex2i(x, y+h);
- glEnd();
-#else
int i;
for (i=0; i<=w; i++)
{
@@ -1184,26 +880,15 @@ void drawrect(pixel *vid, int x, int y, int w, int h, int r, int g, int b, int a
drawpixel(vid, x, y+i, r, g, b, a);
drawpixel(vid, x+w, y+i, r, g, b, a);
}
-#endif
}
//draws a rectangle and fills it in as well.
void fillrect(pixel *vid, int x, int y, int w, int h, int r, int g, int b, int a)
{
-#ifdef OpenGL
- glBegin(GL_QUADS);
- glColor4ub(r, g, b, a);
- glVertex2i(x, y);
- glVertex2i(x+w, y);
- glVertex2i(x+w, y+h);
- glVertex2i(x, y+h);
- glEnd();
-#else
int i,j;
for (j=1; j<h; j++)
for (i=1; i<w; i++)
drawpixel(vid, x+i, y+j, r, g, b, a);
-#endif // OpenGL
}
void clearrect(pixel *vid, int x, int y, int w, int h)
@@ -1215,18 +900,9 @@ void clearrect(pixel *vid, int x, int y, int w, int h)
//draws a line of dots, where h is the height. (why is this even here)
void drawdots(pixel *vid, int x, int y, int h, int r, int g, int b, int a)
{
-#ifdef OpenGL
- int i;
- glBegin(GL_QUADS);
- glColor4ub(r, g, b, a);
- for (i = 0; i <= h; i +=2)
- glVertex2i(x, y+i);
- glEnd();
-#else
int i;
for (i=0; i<=h; i+=2)
drawpixel(vid, x, y+i, r, g, b, a);
-#endif //OpenGL
}
int textwidth(char *s)
@@ -1384,17 +1060,6 @@ _inline void blendpixel(pixel *vid, int x, int y, int r, int g, int b, int a)
inline void blendpixel(pixel *vid, int x, int y, int r, int g, int b, int a)
#endif
{
-#ifdef OpenGL
- if (x<0 || y<0 || x>=XRES+BARSIZE || r>=YRES+MENUSIZE)
- return;
- if (a!=255)
- {
- glBegin (GL_QUADS);
- glColor4ub(r,g,b,a);
- glVertex2i(x, y);
- }
- vid[y*(XRES+BARSIZE)+x] = PIXRGB(r,g,b);
-#else
pixel t;
if (x<0 || y<0 || x>=XRES+BARSIZE || y>=YRES+MENUSIZE)
return;
@@ -1406,7 +1071,6 @@ inline void blendpixel(pixel *vid, int x, int y, int r, int g, int b, int a)
b = (a*b + (255-a)*PIXB(t)) >> 8;
}
vid[y*(XRES+BARSIZE)+x] = PIXRGB(r,g,b);
-#endif //OpenGL
}
void draw_icon(pixel *vid_buf, int x, int y, char ch, int flag)
@@ -2010,2036 +1674,6 @@ void render_parts(pixel *vid)
}
}
-//the old function for drawing the particles
-void draw_parts(pixel *vid)
-{
- int i, x, y, t, nx, ny, r, s;
- int orbd[4] = {0, 0, 0, 0};
- int orbl[4] = {0, 0, 0, 0};
- int cr, cg, cb;
- float fr, fg, fb;
- float pt = R_TEMP;
- if (GRID_MODE)//draws the grid
- {
- for (ny=0; ny<YRES; ny++)
- for (nx=0; nx<XRES; nx++)
- {
- if (ny%(4*GRID_MODE)==0)
- blendpixel(vid, nx, ny, 100, 100, 100, 80);
- if (nx%(4*GRID_MODE)==0)
- blendpixel(vid, nx, ny, 100, 100, 100, 80);
- }
- }
- for (i = 0; i<=parts_lastActiveIndex; i++) {
-#ifdef OpenGL
- if (cmode == CM_FANCY) //If fancy mode
- {
-
- if (t==PT_MWAX)
- {
- for (x=-1; x<=1; x++)
- {
- for (y=-1; y<=1; y++)
- {
- if ((abs(x) == 0) && (abs(y) == 0))
- blendpixel(vid,x+nx,y+ny,224,224,170,255);
- else if (abs(y) != 0 && abs(x) != 0)
- blendpixel(vid,x+nx,y+ny,224,224,170,20);
- else
- blendpixel(vid,x+nx,y+ny,224,224,170,40);
- }
- }
-
- }
-
- else if (t==PT_PLUT)
- {
- int tempx;
- int tempy;
- cr = 0x40;
- cg = 0x70;
- cb = 0x20;
- blendpixel(vid, nx, ny, cr, cg, cb, 192);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- for (tempx = 2; tempx < 10; tempx++) {
- for (tempy = 2; tempy < 10; tempy++) {
- blendpixel(vid, nx+tempx, ny-tempy, cr, cg, cb, 5);
- blendpixel(vid, nx-tempx, ny+tempy, cr, cg, cb, 5);
- blendpixel(vid, nx+tempx, ny+tempy, cr, cg, cb, 5);
- blendpixel(vid, nx-tempx, ny-tempy, cr, cg, cb, 5);
- }
- }
- }
- }
- if (parts[i].type) {
- //Do nothing
- t = parts[i].type;
- nx = (int)(parts[i].x+0.5f);
- ny = (int)(parts[i].y+0.5f);
- glBegin (GL_POINTS);
- glColor3ub (PIXR(ptypes[t].pcolors), PIXG(ptypes[t].pcolors), PIXB(ptypes[t].pcolors));
- glVertex2d (nx, ny);
- glEnd ();
- }
-#else
- if (parts[i].type) {
- t = parts[i].type;
-
- nx = (int)(parts[i].x+0.5f);
- ny = (int)(parts[i].y+0.5f);
-
- if(photons[ny][nx]&0xFF && !(ptypes[t].properties & TYPE_ENERGY))
- continue;
-
-
-
-
- if (t==PT_SOAP)
- {
- if ((parts[i].ctype&7) == 7)
- draw_line(vid, nx, ny, (int)(parts[parts[i].tmp].x+0.5f), (int)(parts[parts[i].tmp].y+0.5f), 245, 245, 220, XRES+BARSIZE);
- }
-
- if(t==PT_WIRE)
- {
- if (parts[i].ctype==0)
- blendpixel(vid, nx, ny, 255, 204, 0, 255);
- else if(parts[i].ctype==1)
- blendpixel(vid, nx, ny, 0, 0, 255, 255);
- else
- blendpixel(vid, nx, ny, 255, 255, 255, 255);
-
- continue;
- }
-
- if (cmode!=CM_HEAT)
- {
- if (t==PT_STKM)
- {
- char buff[20]; //Buffer for HP
- pixel pc;
-
- if (mousex>(nx-3) && mousex<(nx+3) && mousey<(ny+3) && mousey>(ny-3)) //If mous is in the head
- {
- sprintf(buff, "%3d", parts[i].life); //Show HP
- drawtext(vid, mousex-8-2*(parts[i].life<100)-2*(parts[i].life<10), mousey-12, buff, 255, 255, 255, 255);
- }
-
- if ((int)player[2]<PT_NUM) pc = ptypes[(int)player[2]].pcolors;
- else pc = PIXPACK(0xFFFFFF);
- s = XRES+BARSIZE;
- //head
- draw_line(vid , nx-2, ny+2, nx+2, ny+2, PIXR(pc), PIXG(pc), PIXB(pc), s);
- draw_line(vid , nx-2, ny-2, nx+2, ny-2, PIXR(pc), PIXG(pc), PIXB(pc), s);
- draw_line(vid , nx-2, ny-2, nx-2, ny+2, PIXR(pc), PIXG(pc), PIXB(pc), s);
- draw_line(vid , nx+2, ny-2, nx+2, ny+2, PIXR(pc), PIXG(pc), PIXB(pc), s);
- //legs
- draw_line(vid , nx, ny+3, player[3], player[4], 255, 255, 255, s);
- draw_line(vid , player[3], player[4], player[7], player[8], 255, 255, 255, s);
- draw_line(vid , nx, ny+3, player[11], player[12], 255, 255, 255, s);
- draw_line(vid , player[11], player[12], player[15], player[16], 255, 255, 255, s);
- }
- else if (t==PT_STKM2)
- {
- char buff[20]; //Buffer for HP
- pixel pc;
-
- if (mousex>(nx-3) && mousex<(nx+3) && mousey<(ny+3) && mousey>(ny-3)) //If mous is in the head
- {
- sprintf(buff, "%3d", parts[i].life); //Show HP
- drawtext(vid, mousex-8-2*(parts[i].life<100)-2*(parts[i].life<10), mousey-12, buff, 255, 255, 255, 255);
- }
-
- if ((int)player2[2]<PT_NUM) pc = ptypes[(int)player2[2]].pcolors;
- else pc = PIXPACK(0xFFFFFF);
- s = XRES+BARSIZE;
- //head
- draw_line(vid , nx-2, ny+2, nx+2, ny+2, PIXR(pc), PIXG(pc), PIXB(pc), s);
- draw_line(vid , nx-2, ny-2, nx+2, ny-2, PIXR(pc), PIXG(pc), PIXB(pc), s);
- draw_line(vid , nx-2, ny-2, nx-2, ny+2, PIXR(pc), PIXG(pc), PIXB(pc), s);
- draw_line(vid , nx+2, ny-2, nx+2, ny+2, PIXR(pc), PIXG(pc), PIXB(pc), s);
- //legs
- draw_line(vid , nx, ny+3, player2[3], player2[4], 100, 100, 255, s);
- draw_line(vid , player2[3], player2[4], player2[7], player2[8], 100, 100, 255, s);
- draw_line(vid , nx, ny+3, player2[11], player2[12], 100, 100, 255, s);
- draw_line(vid , player2[11], player2[12], player2[15], player2[16], 100, 100, 255, s);
- }
- if (cmode==CM_NOTHING && t!=PT_PIPE && t!=PT_SWCH && t!=PT_LCRY && t!=PT_PUMP && t!=PT_GPMP && t!=PT_PBCN && t!=PT_FILT && t!=PT_HSWC && t!=PT_PCLN && t!=PT_DEUT && t!=PT_WIFI && t!=PT_LIFE && t!=PT_PVOD)//nothing display but show needed color changes
- {
- if (t==PT_PHOT)
- {
- cg = 0;
- cb = 0;
- cr = 0;
- for (x=0; x<12; x++) {
- cr += (parts[i].ctype >> (x+18)) & 1;
- cb += (parts[i].ctype >> x) & 1;
- }
- for (x=0; x<12; x++)
- cg += (parts[i].ctype >> (x+9)) & 1;
- x = 624/(cr+cg+cb+1);
- cr *= x;
- cg *= x;
- cb *= x;
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else
- {
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- }
- else if (cmode==CM_GRAD)
- {
- float frequency = 0.05;
- int q = parts[i].temp-40;
- cr = sin(frequency*q) * 16 + PIXR(ptypes[t].pcolors);
- cg = sin(frequency*q) * 16 + PIXG(ptypes[t].pcolors);
- cb = sin(frequency*q) * 16 + PIXB(ptypes[t].pcolors);
- if (cr>=255)
- cr = 255;
- if (cg>=255)
- cg = 255;
- if (cb>=255)
- cb = 255;
- if (cr<=0)
- cr = 0;
- if (cg<=0)
- cg = 0;
- if (cb<=0)
- cb = 0;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else if (cmode==CM_FANCY && //all fancy mode effects go here, this is a list of exceptions to skip
- t!=PT_FIRE && t!=PT_PLSM && t!=PT_WTRV &&
- t!=PT_HFLM && t!=PT_SPRK && t!=PT_FIRW &&
- t!=PT_DUST && t!=PT_FIRW && t!=PT_FWRK &&
- t!=PT_NEUT && t!=PT_LAVA && t!=PT_BOMB &&
- t!=PT_PHOT && t!=PT_THDR && t!=PT_SMKE &&
- t!=PT_LCRY && t!=PT_SWCH && t!=PT_PCLN &&
- t!=PT_PUMP && t!=PT_HSWC && t!=PT_FILT &&
- t!=PT_GPMP && t!=PT_PBCN && t!=PT_LIFE &&
- t!=PT_O2 && t!=PT_H2 && t!=PT_PVOD)
- {
- if (ptypes[parts[i].type].properties&TYPE_LIQUID) //special effects for liquids in fancy mode
- {
- if (parts[i].type==PT_DEUT)
- {
- cr = PIXR(ptypes[t].pcolors) + parts[i].life*1;
- cg = PIXG(ptypes[t].pcolors) + parts[i].life*2;
- cb = PIXB(ptypes[t].pcolors) + parts[i].life*4;
- if (cr>=255)
- cr = 255;
- if (cg>=255)
- cg = 255;
- if (cb>=255)
- cb = 255;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- for (x=-1; x<=1; x++)
- {
- for (y=-1; y<=1; y++)
- {
- if ((abs(x) == 0) && (abs(y) == 0))
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,100);
- else if (abs(y) != 0 || abs(x) != 0)
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,50);
- }
- }
- }
- else if (parts[i].type==PT_LAVA && parts[i].life)
- {
- cr = parts[i].life * 2 + 0xE0;
- cg = parts[i].life * 1 + 0x50;
- cb = parts[i].life/2 + 0x10;
- if (cr>255) cr = 255;
- if (cg>192) cg = 192;
- if (cb>128) cb = 128;
- for (x=-1; x<=1; x++)
- {
- for (y=-1; y<=1; y++)
- {
- if ((abs(x) == 0) && (abs(y) == 0))
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,100);
- else if (abs(y) != 0 || abs(x) != 0)
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,50);
- }
- }
- }
- else if (parts[i].type==PT_GLOW)
- {
- fr = restrict_flt(parts[i].temp-(275.13f+32.0f), 0, 128)/50.0f;
- fg = restrict_flt(parts[i].ctype, 0, 128)/50.0f;
- fb = restrict_flt(parts[i].tmp, 0, 128)/50.0f;
-
- cr = restrict_flt(64.0f+parts[i].temp-(275.13f+32.0f), 0, 255);
- cg = restrict_flt(64.0f+parts[i].ctype, 0, 255);
- cb = restrict_flt(64.0f+parts[i].tmp, 0, 255);
-
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(cr, cg, cb);
- x = nx/CELL;
- y = ny/CELL;
- fg += fire_g[y][x];
- if (fg > 255) fg = 255;
- fire_g[y][x] = fg;
- fb += fire_b[y][x];
- if (fb > 255) fb = 255;
- fire_b[y][x] = fb;
- fr += fire_r[y][x];
- if (fr > 255) fr = 255;
- fire_r[y][x] = fr;
-
- for (x=-1; x<=1; x++)
- {
- for (y=-1; y<=1; y++)
- {
- if ((abs(x) == 0) && (abs(y) == 0))
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,100);
- else if (abs(y) != 0 || abs(x) != 0)
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,50);
- }
- }
- }
- else
- {
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- for (x=-1; x<=1; x++)
- {
- for (y=-1; y<=1; y++)
- {
- if ((abs(x) == 0) && (abs(y) == 0))
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,100);
- else if (abs(y) != 0 || abs(x) != 0)
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,50);
- }
- }
- }
- }
- else if (ptypes[parts[i].type].properties&TYPE_GAS)
- {
- //if(parts[i].type!=PT_FIRE&&parts[i].type!=PT_SMKE&&parts[i].type!=PT_PLSM&&parts[i].type!=PT_WTRV)
- {
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- for (x=-1; x<=1; x++)
- {
- for (y=-1; y<=1; y++)
- {
- if ((abs(x) == 0) && (abs(y) == 0))
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,180);
- else if (abs(y) != 0 && abs(x) != 0)
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,50);
- else
- blendpixel(vid,x+nx,y+ny,cr,cg,cb,80);
- }
- }
- }
- }
- else if (ptypes[parts[i].type].properties&PROP_RADIOACTIVE)
- {
- int tempx = 0;
- int tempy = 0;
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- //blendpixel(vid, nx, ny, cr, cg, cb, 192);
- //blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- //blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- //blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- //blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- addpixel(vid, nx, ny, cr, cg, cb, 192);
- addpixel(vid, nx+1, ny, cr, cg, cb, 96);
- addpixel(vid, nx-1, ny, cr, cg, cb, 96);
- addpixel(vid, nx, ny+1, cr, cg, cb, 96);
- addpixel(vid, nx, ny-1, cr, cg, cb, 96);
- for (tempx = 2; tempx < 7; tempx++) {
- for (tempy = 2; tempy < 7; tempy++) {
- addpixel(vid, nx+tempx, ny-tempy, cr, cg, cb, 5);
- addpixel(vid, nx-tempx, ny+tempy, cr, cg, cb, 5);
- addpixel(vid, nx+tempx, ny+tempy, cr, cg, cb, 5);
- addpixel(vid, nx-tempx, ny-tempy, cr, cg, cb, 5);
- //blendpixel(vid, nx+tempx, ny-tempy, cr, cg, cb, 5);
- //blendpixel(vid, nx-tempx, ny+tempy, cr, cg, cb, 5);
- //blendpixel(vid, nx+tempx, ny+tempy, cr, cg, cb, 5);
- //blendpixel(vid, nx-tempx, ny-tempy, cr, cg, cb, 5);
- }
- }
- }
- else //if no fancy effects, draw a simple pixel
- {
- vid[ny*(XRES+BARSIZE)+nx] = ptypes[t].pcolors;
- }
- }
- else if (cmode==CM_LIFE)
- {
- float frequency = 0.4;
- int q;
- if (!(parts[i].life<5))
- q = sqrt(parts[i].life);
- else
- q = parts[i].life;
- cr = sin(frequency*q) * 100 + 128;
- cg = sin(frequency*q) * 100 + 128;
- cb = sin(frequency*q) * 100 + 128;
- if (cr>=255)
- cr = 255;
- if (cg>=255)
- cg = 255;
- if (cb>=255)
- cb = 255;
- if (cr<=0)
- cr = 0;
- if (cg<=0)
- cg = 0;
- if (cb<=0)
- cb = 0;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else if (t==PT_QRTZ || t==PT_PQRT)
- {
- int z = parts[i].tmp - 5;//speckles!
- if (parts[i].temp>(ptransitions[t].thv-800.0f))//hotglow for quartz
- {
- float frequency = 3.1415/(2*ptransitions[t].thv-(ptransitions[t].thv-800.0f));
- int q = (parts[i].temp>ptransitions[t].thv)?ptransitions[t].thv-(ptransitions[t].thv-800.0f):parts[i].temp-(ptransitions[t].thv-800.0f);
- cr = sin(frequency*q) * 226 + (z * 16 + PIXR(ptypes[t].pcolors));
- cg = sin(frequency*q*4.55 +3.14) * 34 + (z * 16 + PIXR(ptypes[t].pcolors));
- cb = sin(frequency*q*2.22 +3.14) * 64 + (z * 16 + PIXR(ptypes[t].pcolors));
- if (cr>=255)
- cr = 255;
- if (cg>=255)
- cg = 255;
- if (cb>=255)
- cb = 255;
- if (cr<=0)
- cr = 0;
- if (cg<=0)
- cg = 0;
- if (cb<=0)
- cb = 0;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else
- {
- cr = z * 16 + PIXR(ptypes[t].pcolors);
- cg = z * 16 + PIXG(ptypes[t].pcolors);
- cb = z * 16 + PIXB(ptypes[t].pcolors);
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- }
- else if (t==PT_CLST)
- {
- int z = parts[i].tmp - 5;//speckles!
- cr = z * 16 + PIXR(ptypes[t].pcolors);
- cg = z * 16 + PIXG(ptypes[t].pcolors);
- cb = z * 16 + PIXB(ptypes[t].pcolors);
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else if (t==PT_CBNW)
- {
- int z = parts[i].tmp2 - 20;//speckles!
- cr = z * 1 + PIXR(ptypes[t].pcolors);
- cg = z * 2 + PIXG(ptypes[t].pcolors);
- cb = z * 8 + PIXB(ptypes[t].pcolors);
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else if (t==PT_SPNG)
- {
- cr = PIXR(ptypes[t].pcolors) - parts[i].life*15;
- cg = PIXG(ptypes[t].pcolors) - parts[i].life*15;
- cb = PIXB(ptypes[t].pcolors) - parts[i].life*15;
- if (cr<=50)
- cr = 50;
- if (cg<=50)
- cg = 50;
- if (cb<=20)
- cb = 20;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
-
- }
- else if (t==PT_LIFE && parts[i].ctype>=0 && parts[i].ctype < NGOLALT) {
- pixel pc;
- if (parts[i].ctype==NGT_LOTE)//colors for life states
- {
- if (parts[i].tmp==2)
- pc = PIXRGB(255, 128, 0);
- else if (parts[i].tmp==1)
- pc = PIXRGB(255, 255, 0);
- else
- pc = PIXRGB(255, 0, 0);
- }
- else if (parts[i].ctype==NGT_FRG2)//colors for life states
- {
- if (parts[i].tmp==2)
- pc = PIXRGB(0, 100, 50);
- else
- pc = PIXRGB(0, 255, 90);
- }
- else if (parts[i].ctype==NGT_STAR)//colors for life states
- {
- if (parts[i].tmp==4)
- pc = PIXRGB(0, 0, 128);
- else if (parts[i].tmp==3)
- pc = PIXRGB(0, 0, 150);
- else if (parts[i].tmp==2)
- pc = PIXRGB(0, 0, 190);
- else if (parts[i].tmp==1)
- pc = PIXRGB(0, 0, 230);
- else
- pc = PIXRGB(0, 0, 70);
- }
- else if (parts[i].ctype==NGT_FROG)//colors for life states
- {
- if (parts[i].tmp==2)
- pc = PIXRGB(0, 100, 0);
- else
- pc = PIXRGB(0, 255, 0);
- }
- else if (parts[i].ctype==NGT_BRAN)//colors for life states
- {
- if (parts[i].tmp==1)
- pc = PIXRGB(150, 150, 0);
- else
- pc = PIXRGB(255, 255, 0);
- } else {
- pc = gmenu[parts[i].ctype].colour;
- }
- blendpixel(vid, nx, ny, PIXR(pc), PIXG(pc), PIXB(pc), 255);
- if (cmode==CM_BLOB)
- {
- blendpixel(vid, nx+1, ny, PIXR(pc), PIXG(pc), PIXB(pc), 223);
- blendpixel(vid, nx-1, ny, PIXR(pc), PIXG(pc), PIXB(pc), 223);
- blendpixel(vid, nx, ny+1, PIXR(pc), PIXG(pc), PIXB(pc), 223);
- blendpixel(vid, nx, ny-1, PIXR(pc), PIXG(pc), PIXB(pc), 223);
-
- blendpixel(vid, nx+1, ny-1, PIXR(pc), PIXG(pc), PIXB(pc), 112);
- blendpixel(vid, nx-1, ny-1, PIXR(pc), PIXG(pc), PIXB(pc), 112);
- blendpixel(vid, nx+1, ny+1, PIXR(pc), PIXG(pc), PIXB(pc), 112);
- blendpixel(vid, nx-1, ny+1, PIXR(pc), PIXG(pc), PIXB(pc), 112);
- }
- }
- else if (t==PT_DEUT)
- {
-
- if (parts[i].life>=700&&(cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY))
- {
- x = nx/CELL;
- y = ny/CELL;
- cr = 20;
- cg = 20;
- cb = 20;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- }
- else
- {
- cr = PIXR(ptypes[t].pcolors) + parts[i].life*1;
- cg = PIXG(ptypes[t].pcolors) + parts[i].life*2;
- cb = PIXB(ptypes[t].pcolors) + parts[i].life*4;
- if (cr>=255)
- cr = 255;
- if (cg>=255)
- cg = 255;
- if (cb>=255)
- cb = 255;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
-
- }
-
- }
- else if (t==PT_DUST && parts[i].life >= 1)//dust colors!
- {
- x = nx;
- y = ny;
- cr = parts[i].flags;
- cg = parts[i].tmp;
- cb = parts[i].ctype;
- if (decorations_enable && parts[i].dcolour)
- {
- int a = (parts[i].dcolour>>24)&0xFF;
- cr = (a*((parts[i].dcolour>>16)&0xFF) + (255-a)*cr) >> 8;
- cg = (a*((parts[i].dcolour>>8)&0xFF) + (255-a)*cg) >> 8;
- cb = (a*((parts[i].dcolour)&0xFF) + (255-a)*cb) >> 8;
- }
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(cg,cb,cr);//yes i know this pixel is different color than the glow... i don't know why
- cg = cg/4;
- cb = cb/4;
- cr = cr/4;
- x = nx/CELL;
- y = ny/CELL;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- }
- else
- blendpixel(vid,x,y,cg,cb,cr,255);
- }
- else if (t==PT_GRAV)
- {
- cr = 20;
- cg = 20;
- cb = 20;
- if (parts[i].vx>0)
- {
- cr += (parts[i].vx)*GRAV_R;
- cg += (parts[i].vx)*GRAV_G;
- cb += (parts[i].vx)*GRAV_B;
- }
- if (parts[i].vy>0)
- {
- cr += (parts[i].vy)*GRAV_G;
- cg += (parts[i].vy)*GRAV_B;
- cb += (parts[i].vy)*GRAV_R;
-
- }
- if (parts[i].vx<0)
- {
- cr -= (parts[i].vx)*GRAV_B;
- cg -= (parts[i].vx)*GRAV_R;
- cb -= (parts[i].vx)*GRAV_G;
-
- }
- if (parts[i].vy<0)
- {
- cr -= (parts[i].vy)*GRAV_R2;
- cg -= (parts[i].vy)*GRAV_G2;
- cb -= (parts[i].vy)*GRAV_B2;
- }
- if (cr>255)
- cr=255;
- if (cr<0)
- cr=0;
- if (cg>255)
- cg=255;
- if (cg<0)
- cg=0;
- if (cb>255)
- cb=255;
- if (cb<0)
- cb=0;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else if (t==PT_WIFI)
- {
- float frequency = 0.0628;
- int q = parts[i].tmp;
- cr = sin(frequency*q + 0) * 127 + 128;
- cg = sin(frequency*q + 2) * 127 + 128;
- cb = sin(frequency*q + 4) * 127 + 128;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- if (mousex==(nx) && mousey==(ny) && DEBUG_MODE)//draw lines connecting wifi channels
- {
- int z;
- for (z = 0; z<NPART; z++) {
- if (parts[z].type)
- {
- if (parts[z].type==PT_WIFI&&parts[z].tmp==parts[i].tmp)
- xor_line(nx,ny,(int)(parts[z].x+0.5f),(int)(parts[z].y+0.5f),vid);
- }
- }
- }
- }
- else if (t==PT_PRTI)
- {
- int nxo = 0;
- int nyo = 0;
- int fire_rv = 0;
- float drad = 0.0f;
- float ddist = 0.0f;
- orbitalparts_get(parts[i].life, parts[i].ctype, orbd, orbl);
- for (r = 0; r < 4; r++) {
- ddist = ((float)orbd[r])/16.0f;
- drad = (M_PI * ((float)orbl[r]) / 180.0f)*1.41f;
- nxo = ddist*cos(drad);
- nyo = ddist*sin(drad);
- if (ny+nyo>0 && ny+nyo<YRES && nx+nxo>0 && nx+nxo<XRES) {
- addpixel(vid, nx+nxo, ny+nyo, PIXR(ptypes[t].pcolors), PIXG(ptypes[t].pcolors), PIXB(ptypes[t].pcolors), 255-orbd[r]);
- if (cmode == CM_FIRE && r == 1) {
- fire_rv = fire_r[(ny+nyo)/CELL][(nx+nxo)/CELL];
- fire_rv += 1;
- if (fire_rv>255) fire_rv = 255;
- fire_r[(ny+nyo)/CELL][(nx+nxo)/CELL] = fire_rv;
- }
- }
- addpixel(vid, nx, ny, PIXR(ptypes[t].pcolors), PIXG(ptypes[t].pcolors), PIXB(ptypes[t].pcolors), 200);
- }
- if (DEBUG_MODE) {//draw lines connecting portals
- blendpixel(vid,nx,ny, PIXR(ptypes[t].pcolors), PIXG(ptypes[t].pcolors), PIXB(ptypes[t].pcolors),255);
- if (mousex==(nx) && mousey==(ny))
- {
- int z;
- for (z = 0; z<NPART; z++) {
- if (parts[z].type)
- {
- if (parts[z].type==PT_PRTO&&parts[z].tmp==parts[i].tmp)
- xor_line(nx,ny,(int)(parts[z].x+0.5f),(int)(parts[z].y+0.5f),vid);
- }
- }
- }
- }
- }
- else if (t==PT_PRTO)
- {
- int nxo = 0;
- int nyo = 0;
- int fire_bv = 0;
- float drad = 0.0f;
- float ddist = 0.0f;
- orbitalparts_get(parts[i].life, parts[i].ctype, orbd, orbl);
- for (r = 0; r < 4; r++) {
- ddist = ((float)orbd[r])/16.0f;
- drad = (M_PI * ((float)orbl[r]) / 180.0f)*1.41f;
- nxo = ddist*cos(drad);
- nyo = ddist*sin(drad);
- if (ny+nyo>0 && ny+nyo<YRES && nx+nxo>0 && nx+nxo<XRES) {
- addpixel(vid, nx+nxo, ny+nyo, PIXR(ptypes[t].pcolors), PIXG(ptypes[t].pcolors), PIXB(ptypes[t].pcolors), 255-orbd[r]);
- if (cmode == CM_FIRE && r == 1) {
- fire_bv = fire_b[(ny+nyo)/CELL][(nx+nxo)/CELL];
- fire_bv += 1;
- if (fire_bv>255) fire_bv = 255;
- fire_b[(ny+nyo)/CELL][(nx+nxo)/CELL] = fire_bv;
- }
- }
- addpixel(vid, nx, ny, PIXR(ptypes[t].pcolors), PIXG(ptypes[t].pcolors), PIXB(ptypes[t].pcolors), 200);
- }
- if (DEBUG_MODE) {//draw lines connecting portals
- blendpixel(vid,nx,ny, PIXR(ptypes[t].pcolors), PIXG(ptypes[t].pcolors), PIXB(ptypes[t].pcolors),255);
- if (mousex==(nx) && mousey==(ny))
- {
- int z;
- for (z = 0; z<NPART; z++) {
- if (parts[z].type)
- {
- if (parts[z].type==PT_PRTI&&parts[z].tmp==parts[i].tmp)
- xor_line(nx,ny,(int)(parts[z].x+0.5f),(int)(parts[z].y+0.5f),vid);
- }
- }
- }
- }
- }
- else if ((t==PT_BIZR||t==PT_BIZRG||t==PT_BIZRS)&&parts[i].ctype)
- {
- cg = 0;
- cb = 0;
- cr = 0;
- for (x=0; x<12; x++) {
- cr += (parts[i].ctype >> (x+18)) & 1;
- cb += (parts[i].ctype >> x) & 1;
- }
- for (x=0; x<12; x++)
- cg += (parts[i].ctype >> (x+9)) & 1;
- x = 624/(cr+cg+cb+1);
- cr *= x;
- cg *= x;
- cb *= x;
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- if (fabs(parts[i].vx)+fabs(parts[i].vy)>0 &&(cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)) {
- fg = 0;
- fb = 0;
- fr = 0;
- fg = cg/40 * fabs(parts[i].vx)+fabs(parts[i].vy);
- fb = cb/40 * fabs(parts[i].vx)+fabs(parts[i].vy);
- fr = cr/40 * fabs(parts[i].vx)+fabs(parts[i].vy);
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB((int)restrict_flt(cr, 0, 255), (int)restrict_flt(cg, 0, 255), (int)restrict_flt(cb, 0, 255));
- x = nx/CELL;
- y = ny/CELL;
- fg += fire_g[y][x];
- if (fg > 255) fg = 255;
- fire_g[y][x] = fg;
- fb += fire_b[y][x];
- if (fb > 255) fb = 255;
- fire_b[y][x] = fb;
- fr += fire_r[y][x];
- if (fr > 255) fr = 255;
- fire_r[y][x] = fr;
- }
- else
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else if (t==PT_PIPE)
- {
- if (parts[i].ctype==2)
- {
- cr = 50;
- cg = 1;
- cb = 1;
- }
- else if (parts[i].ctype==3)
- {
- cr = 1;
- cg = 50;
- cb = 1;
- }
- else if (parts[i].ctype==4)
- {
- cr = 1;
- cg = 1;
- cb = 50;
- }
- else if (parts[i].temp<272.15&&parts[i].ctype!=1)
- {
- if (parts[i].temp>173.25&&parts[i].temp<273.15)
- {
- cr = 50;
- cg = 1;
- cb = 1;
- }
- if (parts[i].temp>73.25&&parts[i].temp<=173.15)
- {
- cr = 1;
- cg = 50;
- cb = 1;
- }
- if (parts[i].temp>=0&&parts[i].temp<=73.15)
- {
- cr = 1;
- cg = 1;
- cb = 50;
- }
- }
- else
- {
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- }
- if ((parts[i].tmp&0xFF)>0 && (parts[i].tmp&0xFF)<PT_NUM)
- {
- cr = PIXR(ptypes[parts[i].tmp&0xFF].pcolors);
- cg = PIXG(ptypes[parts[i].tmp&0xFF].pcolors);
- cb = PIXB(ptypes[parts[i].tmp&0xFF].pcolors);
- }
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
-
-
-
- }
- else if (t==PT_INVIS && (pv[ny/CELL][nx/CELL]>4.0f ||pv[ny/CELL][nx/CELL]<-4.0f))
- {
- blendpixel(vid, nx, ny, 15, 0, 150, 100);
- }
- else if (t==PT_ACID)
- {
- if (parts[i].life>75) parts[i].life = 75;
- if (parts[i].life<49) parts[i].life = 49;
- s = (parts[i].life-49)*3;
- if (s==0) s = 1;
- cr = 0x86 + s*4;
- cg = 0x36 + s*1;
- cb = 0x90 + s*2;
-
- if (cr>=255)
- cr = 255;
- if (cg>=255)
- cg = 255;
- if (cb>=255)
- cb = 255;
-
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
-
- if (cmode==CM_BLOB)
- {
- blendpixel(vid, nx+1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 223);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 223);
-
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 112);
- }
- }
- else if (t==PT_NEUT)
- {
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- vid[ny*(XRES+BARSIZE)+nx] = ptypes[t].pcolors;
- cg = 8;
- cb = 12;
- x = nx/CELL;
- y = ny/CELL;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- }
- else
- {
- cr = 0x20;
- cg = 0xE0;
- cb = 0xFF;
- blendpixel(vid, nx, ny, cr, cg, cb, 192);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32);
- }
- }
- else if (t==PT_FILT)
- {
- int temp_bin = (int)((parts[i].temp-273.0f)*0.025f);
- if (temp_bin < 0) temp_bin = 0;
- if (temp_bin > 25) temp_bin = 25;
- parts[i].ctype = 0x1F << temp_bin;
- cg = 0;
- cb = 0;
- cr = 0;
- for (x=0; x<12; x++) {
- cr += (parts[i].ctype >> (x+18)) & 1;
- cb += (parts[i].ctype >> x) & 1;
- }
- for (x=0; x<12; x++)
- cg += (parts[i].ctype >> (x+9)) & 1;
- x = 624/(cr+cg+cb+1);
- cr *= x;
- cg *= x;
- cb *= x;
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- blendpixel(vid, nx, ny, cr, cg, cb, 127);
- }
- else if (t==PT_BRAY && parts[i].tmp==0)
- {
- int trans = parts[i].life * 7;
- if (trans>255) trans = 255;
- if (parts[i].ctype) {
- cg = 0;
- cb = 0;
- cr = 0;
- for (x=0; x<12; x++) {
- cr += (parts[i].ctype >> (x+18)) & 1;
- cb += (parts[i].ctype >> x) & 1;
- }
- for (x=0; x<12; x++)
- cg += (parts[i].ctype >> (x+9)) & 1;
- x = 624/(cr+cg+cb+1);
- cr *= x;
- cg *= x;
- cb *= x;
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- blendpixel(vid, nx, ny, cr, cg, cb, trans);
- } else
- blendpixel(vid, nx, ny, PIXR(ptypes[t].pcolors), PIXG(ptypes[t].pcolors), PIXB(ptypes[t].pcolors), trans);
- }
- else if (t==PT_BRAY && parts[i].tmp==1)
- {
- int trans = parts[i].life/4;
- if (trans>255) trans = 255;
- if (parts[i].ctype) {
- cg = 0;
- cb = 0;
- cr = 0;
- for (x=0; x<12; x++) {
- cr += (parts[i].ctype >> (x+18)) & 1;
- cb += (parts[i].ctype >> x) & 1;
- }
- for (x=0; x<12; x++)
- cg += (parts[i].ctype >> (x+9)) & 1;
- x = 624/(cr+cg+cb+1);
- cr *= x;
- cg *= x;
- cb *= x;
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- blendpixel(vid, nx, ny, cr, cg, cb, trans);
- } else
- blendpixel(vid, nx, ny, PIXR(ptypes[t].pcolors), PIXG(ptypes[t].pcolors), PIXB(ptypes[t].pcolors), trans);
- }
- else if (t==PT_BRAY && parts[i].tmp==2)
- {
- int trans = parts[i].life*100;
- if (trans>255) trans = 255;
- blendpixel(vid, nx, ny, 255, 150, 50, trans);
- }
- else if (t==PT_PHOT)
- {
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- cg = 0;
- cb = 0;
- cr = 0;
- for (x=0; x<12; x++) {
- cr += (parts[i].ctype >> (x+18)) & 1;
- cb += (parts[i].ctype >> x) & 1;
- }
- for (x=0; x<12; x++)
- cg += (parts[i].ctype >> (x+9)) & 1;
- x = 624/(cr+cg+cb+1);
- cr *= x;
- cg *= x;
- cb *= x;
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(cr>255?255:cr,cg>255?255:cg,cb>255?255:cb);
- cr >>= 4;
- cg >>= 4;
- cb >>= 4;
- x = nx/CELL;
- y = ny/CELL;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- }
- else
- {
- cg = 0;
- cb = 0;
- cr = 0;
- for (x=0; x<12; x++) {
- cr += (parts[i].ctype >> (x+18)) & 1;
- cb += (parts[i].ctype >> x) & 1;
- }
- for (x=0; x<12; x++)
- cg += (parts[i].ctype >> (x+9)) & 1;
- x = 624/(cr+cg+cb+1);
- cr *= x;
- cg *= x;
- cb *= x;
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- if(cmode == CM_PERS){
- if(parts[i].pavg[0] && parts[i].pavg[1])
- {
- draw_line(vid, nx, ny, parts[i].pavg[0], parts[i].pavg[1], cr, cg, cb, XRES+BARSIZE);
- }
- else
- {
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(cr, cg, cb);
- }
- } else {
- blendpixel(vid, nx, ny, cr, cg, cb, 192);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32);
- }
- }
- }
- //Life can be 11 too, so don't just check for 10
- else if (t==PT_SWCH && parts[i].life >= 10)
- {
- x = nx;
- y = ny;
- blendpixel(vid,x,y,17,217,24,255);
- }
- else if (t==PT_SMKE)
- {
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- x = nx/CELL;
- y = ny/CELL;
- cg = 10;
- cb = 10;
- cr = 10;
- cg += fire_g[y][x];
- if (cg > 50) cg = 50;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 50) cb = 50;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > 50) cr = 50;
- fire_r[y][x] = cr;
- }
- 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))
- blendpixel(vid,x+nx,y+ny,100,100,100,30);
- if (abs(x)+abs(y) <=3 && abs(x)+abs(y))
- blendpixel(vid,x+nx,y+ny,100,100,100,10);
- if (abs(x)+abs(y) == 2)
- blendpixel(vid,x+nx,y+ny,100,100,100,20);
- }
- }
- }
- }
- else if (t==PT_WTRV)
- {
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- x = nx/CELL;
- y = ny/CELL;
- cg = PIXG(ptypes[t].pcolors)/3;
- cb = PIXB(ptypes[t].pcolors)/3;
- cr = PIXR(ptypes[t].pcolors)/3;
- cg += fire_g[y][x];
- if (cg > PIXG(ptypes[t].pcolors)/2) cg = PIXG(ptypes[t].pcolors)/2;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > PIXB(ptypes[t].pcolors)/2) cb = PIXB(ptypes[t].pcolors)/2;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > PIXR(ptypes[t].pcolors)/2) cr = PIXR(ptypes[t].pcolors)/2;
- fire_r[y][x] = cr;
- }
- 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))
- blendpixel(vid,x+nx,y+ny, PIXR(ptypes[t].pcolors)/1.6, PIXG(ptypes[t].pcolors)/1.6, PIXB(ptypes[t].pcolors)/1.6, 30);
- if (abs(x)+abs(y) <=3 && abs(x)+abs(y))
- blendpixel(vid,x+nx,y+ny, PIXR(ptypes[t].pcolors)/1.6, PIXG(ptypes[t].pcolors)/1.6, PIXB(ptypes[t].pcolors)/1.6, 10);
- if (abs(x)+abs(y) == 2)
- blendpixel(vid,x+nx,y+ny, PIXR(ptypes[t].pcolors)/1.6, PIXG(ptypes[t].pcolors)/1.6, PIXB(ptypes[t].pcolors)/1.6, 20);
- }
- }
- }
- }
- else if (t==PT_O2)
- {
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- x = nx/CELL;
- y = ny/CELL;
- cg = PIXG(ptypes[t].pcolors)/3;
- cb = PIXB(ptypes[t].pcolors)/3;
- cr = PIXR(ptypes[t].pcolors)/3;
- cg += fire_g[y][x];
- if (cg > PIXG(ptypes[t].pcolors)/2) cg = PIXG(ptypes[t].pcolors)/2;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > PIXB(ptypes[t].pcolors)/2) cb = PIXB(ptypes[t].pcolors)/2;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > PIXR(ptypes[t].pcolors)/2) cr = PIXR(ptypes[t].pcolors)/2;
- fire_r[y][x] = cr;
- }
- 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))
- blendpixel(vid,x+nx,y+ny, PIXR(ptypes[t].pcolors)/1.6, PIXG(ptypes[t].pcolors)/1.6, PIXB(ptypes[t].pcolors)/1.6, 30);
- if (abs(x)+abs(y) <=3 && abs(x)+abs(y))
- blendpixel(vid,x+nx,y+ny, PIXR(ptypes[t].pcolors)/1.6, PIXG(ptypes[t].pcolors)/1.6, PIXB(ptypes[t].pcolors)/1.6, 10);
- if (abs(x)+abs(y) == 2)
- blendpixel(vid,x+nx,y+ny, PIXR(ptypes[t].pcolors)/1.6, PIXG(ptypes[t].pcolors)/1.6, PIXB(ptypes[t].pcolors)/1.6, 20);
- }
- }
- }
- }
- else if (t==PT_H2)
- {
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- x = nx/CELL;
- y = ny/CELL;
- cg = PIXG(ptypes[t].pcolors)/3;
- cb = PIXB(ptypes[t].pcolors)/3;
- cr = PIXR(ptypes[t].pcolors)/3;
- cg += fire_g[y][x];
- if (cg > PIXG(ptypes[t].pcolors)/2) cg = PIXG(ptypes[t].pcolors)/2;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > PIXB(ptypes[t].pcolors)/2) cb = PIXB(ptypes[t].pcolors)/2;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > PIXR(ptypes[t].pcolors)/2) cr = PIXR(ptypes[t].pcolors)/2;
- fire_r[y][x] = cr;
- }
- 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))
- blendpixel(vid,x+nx,y+ny, PIXR(ptypes[t].pcolors)/1.6, PIXG(ptypes[t].pcolors)/1.6, PIXB(ptypes[t].pcolors)/1.6, 30);
- if (abs(x)+abs(y) <=3 && abs(x)+abs(y))
- blendpixel(vid,x+nx,y+ny, PIXR(ptypes[t].pcolors)/1.6, PIXG(ptypes[t].pcolors)/1.6, PIXB(ptypes[t].pcolors)/1.6, 10);
- if (abs(x)+abs(y) == 2)
- blendpixel(vid,x+nx,y+ny, PIXR(ptypes[t].pcolors)/1.6, PIXG(ptypes[t].pcolors)/1.6, PIXB(ptypes[t].pcolors)/1.6, 20);
- }
- }
- }
- }
- else if (t==PT_THDR)
- {
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- vid[ny*(XRES+BARSIZE)+nx] = ptypes[t].pcolors;
- cg = 16;
- cb = 20;
- cr = 12;
- x = nx/CELL;
- y = ny/CELL;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- }
- else
- {
- cr = 0xFF;
- cg = 0xFF;
- cb = 0xA0;
- blendpixel(vid, nx, ny, cr, cg, cb, 192);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32);
- }
- }
- else if (t==PT_GLOW)
- {
- fr = restrict_flt(parts[i].temp-(275.13f+32.0f), 0, 128)/50.0f;
- fg = restrict_flt(parts[i].ctype, 0, 128)/50.0f;
- fb = restrict_flt(parts[i].tmp, 0, 128)/50.0f;
-
- cr = restrict_flt(64.0f+parts[i].temp-(275.13f+32.0f), 0, 255);
- cg = restrict_flt(64.0f+parts[i].ctype, 0, 255);
- cb = restrict_flt(64.0f+parts[i].tmp, 0, 255);
-
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(cr, cg, cb);
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- x = nx/CELL;
- y = ny/CELL;
- fg += fire_g[y][x];
- if (fg > 255) fg = 255;
- fire_g[y][x] = fg;
- fb += fire_b[y][x];
- if (fb > 255) fb = 255;
- fire_b[y][x] = fb;
- fr += fire_r[y][x];
- if (fr > 255) fr = 255;
- fire_r[y][x] = fr;
- }
- if (cmode == CM_BLOB) {
- blendpixel(vid, nx+1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 223);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 223);
-
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 112);
- }
- }
- else if (t==PT_LCRY)
- {
- uint8 GR = 0x50+((parts[i].life>10?10:parts[i].life)*10);
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(GR, GR, GR);
- if (cmode == CM_BLOB) {
- blendpixel(vid, nx+1, ny, GR, GR, GR, 223);
- blendpixel(vid, nx-1, ny, GR, GR, GR, 223);
- blendpixel(vid, nx, ny+1, GR, GR, GR, 223);
- blendpixel(vid, nx, ny-1, GR, GR, GR, 223);
-
- blendpixel(vid, nx+1, ny-1, GR, GR, GR, 112);
- blendpixel(vid, nx-1, ny-1, GR, GR, GR, 112);
- blendpixel(vid, nx+1, ny+1, GR, GR, GR, 112);
- blendpixel(vid, nx-1, ny+1, GR, GR, GR, 112);
- }
- }
- else if (t==PT_PCLN)
- {
- uint8 GR = 0x3B+((parts[i].life>10?10:parts[i].life)*19);
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(GR, GR, 10);
- if (cmode == CM_BLOB) {
- blendpixel(vid, nx+1, ny, GR, GR, 10, 223);
- blendpixel(vid, nx-1, ny, GR, GR, 10, 223);
- blendpixel(vid, nx, ny+1, GR, GR, 10, 223);
- blendpixel(vid, nx, ny-1, GR, GR, 10, 223);
-
- blendpixel(vid, nx+1, ny-1, GR, GR, 10, 112);
- blendpixel(vid, nx-1, ny-1, GR, GR, 10, 112);
- blendpixel(vid, nx+1, ny+1, GR, GR, 10, 112);
- blendpixel(vid, nx-1, ny+1, GR, GR, 10, 112);
- }
- }
- else if (t==PT_PBCN)
- {
- uint8 GR = 0x3B+((parts[i].life>10?10:parts[i].life)*19);
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(GR, GR/2, 10);
- if (cmode == CM_BLOB) {
- blendpixel(vid, nx+1, ny, GR, GR/2, 10, 223);
- blendpixel(vid, nx-1, ny, GR, GR/2, 10, 223);
- blendpixel(vid, nx, ny+1, GR, GR/2, 10, 223);
- blendpixel(vid, nx, ny-1, GR, GR/2, 10, 223);
-
- blendpixel(vid, nx+1, ny-1, GR, GR/2, 10, 112);
- blendpixel(vid, nx-1, ny-1, GR, GR/2, 10, 112);
- blendpixel(vid, nx+1, ny+1, GR, GR/2, 10, 112);
- blendpixel(vid, nx-1, ny+1, GR, GR/2, 10, 112);
- }
- }
- else if (t==PT_DLAY)
- {
- int stage = (int)(((float)parts[i].life/(parts[i].temp-273.15))*100.0f);
- cr = PIXR(ptypes[t].pcolors)+stage;
- cg = PIXG(ptypes[t].pcolors)+stage;
- cb = PIXB(ptypes[t].pcolors)+stage;
- if(cr>255)
- cr = 255;
- if(cg>255)
- cg = 255;
- if(cb>255)
- cb = 255;
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(cr, cg, cb);
- if (cmode == CM_BLOB) {
- blendpixel(vid, nx+1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 223);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 223);
-
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 112);
- }
- }
- else if (t==PT_HSWC)
- {
- uint8 GR = 0x3B+((parts[i].life>10?10:parts[i].life)*19);
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(GR, 10, 10);
- if (cmode == CM_BLOB) {
- blendpixel(vid, nx+1, ny, GR, 10, 10, 223);
- blendpixel(vid, nx-1, ny, GR, 10, 10, 223);
- blendpixel(vid, nx, ny+1, GR, 10, 10, 223);
- blendpixel(vid, nx, ny-1, GR, 10, 10, 223);
-
- blendpixel(vid, nx+1, ny-1, GR, 10, 10, 112);
- blendpixel(vid, nx-1, ny-1, GR, 10, 10, 112);
- blendpixel(vid, nx+1, ny+1, GR, 10, 10, 112);
- blendpixel(vid, nx-1, ny+1, GR, 10, 10, 112);
- }
- }
- else if (t==PT_PVOD)
- {
- uint8 GR = 0x3B+((parts[i].life>10?10:parts[i].life)*16);
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(GR, 30, 30);
- if (cmode == CM_BLOB) {
- blendpixel(vid, nx+1, ny, GR, 30, 30, 223);
- blendpixel(vid, nx-1, ny, GR, 30, 30, 223);
- blendpixel(vid, nx, ny+1, GR, 30, 30, 223);
- blendpixel(vid, nx, ny-1, GR, 30, 30, 223);
-
- blendpixel(vid, nx+1, ny-1, GR, 30, 30, 112);
- blendpixel(vid, nx-1, ny-1, GR, 30, 30, 112);
- blendpixel(vid, nx+1, ny+1, GR, 30, 30, 112);
- blendpixel(vid, nx-1, ny+1, GR, 30, 30, 112);
- }
- }
- else if (t==PT_STOR)
- {
- if(parts[i].tmp){
- vid[ny*(XRES+BARSIZE)+nx] = PIXPACK(0x50DFDF);
- } else {
- vid[ny*(XRES+BARSIZE)+nx] = PIXPACK(0x20AFAF);
- }
- }
- else if (t==PT_PUMP)
- {
- uint8 GR = 0x3B+((parts[i].life>10?10:parts[i].life)*19);
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(10, 10, GR);
- if (cmode == CM_BLOB) {
- blendpixel(vid, nx+1, ny, 10, 10, GR, 223);
- blendpixel(vid, nx-1, ny, 10, 10, GR, 223);
- blendpixel(vid, nx, ny+1, 10, 10, GR, 223);
- blendpixel(vid, nx, ny-1, 10, 10, GR, 223);
-
- blendpixel(vid, nx+1, ny-1, 10, 10, GR, 112);
- blendpixel(vid, nx-1, ny-1, 10, 10, GR, 112);
- blendpixel(vid, nx+1, ny+1, 10, 10, GR, 112);
- blendpixel(vid, nx-1, ny+1, 10, 10, GR, 112);
- }
- }
- else if (t==PT_GPMP)
- {
- uint8 GR = 0x3B+((parts[i].life>10?10:parts[i].life)*19);
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(10, GR, GR);
- if (cmode == CM_BLOB) {
- blendpixel(vid, nx+1, ny, 10, GR, GR, 223);
- blendpixel(vid, nx-1, ny, 10, GR, GR, 223);
- blendpixel(vid, nx, ny+1, 10, GR, GR, 223);
- blendpixel(vid, nx, ny-1, 10, GR, GR, 223);
-
- blendpixel(vid, nx+1, ny-1, 10, GR, GR, 112);
- blendpixel(vid, nx-1, ny-1, 10, GR, GR, 112);
- blendpixel(vid, nx+1, ny+1, 10, GR, GR, 112);
- blendpixel(vid, nx-1, ny+1, 10, GR, GR, 112);
- }
- }
- else if (t==PT_PLSM)
- {
- float ttemp = (float)parts[i].life;
- int caddress = restrict_flt(restrict_flt(ttemp, 0.0f, 200.0f)*3, 0.0f, (200.0f*3)-3);
- uint8 R = plasma_data[caddress];
- uint8 G = plasma_data[caddress+1];
- uint8 B = plasma_data[caddress+2];
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- cr = R/8;
- cg = G/8;
- cb = B/8;
- x = nx/CELL;
- y = ny/CELL;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- }
- else
- {
- cr = R;
- cg = G;
- cb = B;
- blendpixel(vid, nx, ny, cr, cg, cb, 192);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32);
- }
- } else if (t==PT_HFLM)
- {
- float ttemp = (float)parts[i].life;
- int caddress = restrict_flt(restrict_flt(ttemp, 0.0f, 200.0f)*3, 0.0f, (200.0f*3)-3);
- uint8 R = hflm_data[caddress];
- uint8 G = hflm_data[caddress+1];
- uint8 B = hflm_data[caddress+2];
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- cr = R/8;
- cg = G/8;
- cb = B/8;
- x = nx/CELL;
- y = ny/CELL;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- }
- else
- {
- cr = R;
- cg = G;
- cb = B;
- blendpixel(vid, nx, ny, cr, cg, cb, 192);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32);
- }
- } else if (t==PT_FIRW&&parts[i].tmp>=3)
- {
- float ttemp = (float)parts[i].tmp-4;
- int caddress = restrict_flt(restrict_flt(ttemp, 0.0f, 200.0f)*3, 0.0f, (200.0f*3)-3);
- uint8 R = firw_data[caddress];
- uint8 G = firw_data[caddress+1];
- uint8 B = firw_data[caddress+2];
- if (decorations_enable && parts[i].dcolour)
- {
- int a = (parts[i].dcolour>>24)&0xFF;
- R = (a*((parts[i].dcolour>>16)&0xFF) + (255-a)*R) >> 8;
- G = (a*((parts[i].dcolour>>8)&0xFF) + (255-a)*G) >> 8;
- B = (a*((parts[i].dcolour)&0xFF) + (255-a)*B) >> 8;
- }
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- cr = R/2;
- cg = G/2;
- cb = B/2;
- x = nx/CELL;
- y = ny/CELL;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- }
- else
- {
- cr = R;
- cg = G;
- cb = B;
- blendpixel(vid, nx, ny, cr, cg, cb, 192);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32);
- }
- }
- else if (t==PT_BOMB)
- {
- if (parts[i].tmp==0) {
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- if (cmode != CM_CRACK) {
- int newx = 0;
- float flicker = rand()%20;
- float gradv = flicker + fabs(parts[i].vx)*17 + fabs(parts[i].vy)*17;
- blendpixel(vid, nx, ny, cr, cg, cb, (gradv*4)>255?255:(gradv*4) );
- blendpixel(vid, nx+1, ny, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
- blendpixel(vid, nx-1, ny, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
- blendpixel(vid, nx, ny+1, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
- blendpixel(vid, nx, ny-1, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
- if (gradv>255) gradv=255;
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, gradv);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, gradv);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, gradv);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, gradv);
- for (newx = 1; gradv>0.5; newx++) {
- addpixel(vid, nx+newx, ny, cr, cg, cb, gradv);
- addpixel(vid, nx-newx, ny, cr, cg, cb, gradv);
-
- addpixel(vid, nx, ny+newx, cr, cg, cb, gradv);
- addpixel(vid, nx, ny-newx, cr, cg, cb, gradv);
- gradv = gradv/1.2f;
- }
- } else {
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- }
- else if (parts[i].tmp==1) {
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- if (cmode != CM_CRACK) {
- int newx = 0;
- float flicker = rand()%20;
- float gradv = 4*parts[i].life + flicker;
- for (newx = 0; gradv>0.5; newx++) {
- addpixel(vid, nx+newx, ny, cr, cg, cb, gradv);
- addpixel(vid, nx-newx, ny, cr, cg, cb, gradv);
-
- addpixel(vid, nx, ny+newx, cr, cg, cb, gradv);
- addpixel(vid, nx, ny-newx, cr, cg, cb, gradv);
- gradv = gradv/1.5f;
- }
- } else {
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- }
- else {
- blendpixel(vid, nx, ny, 255, 255, 255, 255);
- }
-
- }
- else if (t==PT_GBMB)
- {
- if (parts[i].life<=0) {//not yet detonated
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- if (cmode != CM_CRACK) {
- int newx = 0;
- float flicker = rand()%20;
- float gradv = flicker + fabs(parts[i].vx)*17 + fabs(parts[i].vy)*17;
- blendpixel(vid, nx, ny, cr, cg, cb, (gradv*4)>255?255:(gradv*4) );
- blendpixel(vid, nx+1, ny, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
- blendpixel(vid, nx-1, ny, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
- blendpixel(vid, nx, ny+1, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
- blendpixel(vid, nx, ny-1, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
- if (gradv>255) gradv=255;
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, gradv);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, gradv);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, gradv);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, gradv);
- for (newx = 1; gradv>0.5; newx++) {
- addpixel(vid, nx+newx, ny, cr, cg, cb, gradv);
- addpixel(vid, nx-newx, ny, cr, cg, cb, gradv);
-
- addpixel(vid, nx, ny+newx, cr, cg, cb, gradv);
- addpixel(vid, nx, ny-newx, cr, cg, cb, gradv);
- gradv = gradv/1.2f;
- }
- } else {
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- }
- else {//exploding
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- if (cmode != CM_CRACK) {
- int newx = 0;
- float flicker = rand()%20;
- float gradv = 4*parts[i].life + flicker;
- for (newx = 0; gradv>0.5; newx++) {
- addpixel(vid, nx+newx, ny, cr, cg, cb, gradv);
- addpixel(vid, nx-newx, ny, cr, cg, cb, gradv);
-
- addpixel(vid, nx, ny+newx, cr, cg, cb, gradv);
- addpixel(vid, nx, ny-newx, cr, cg, cb, gradv);
- gradv = gradv/1.5f;
- }
- } else {
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- }
- }
- else if (ptypes[t].properties&PROP_HOT_GLOW && parts[i].temp>(ptransitions[t].thv-800.0f))
- {
- float frequency = 3.1415/(2*ptransitions[t].thv-(ptransitions[t].thv-800.0f));
- int q = (parts[i].temp>ptransitions[t].thv)?ptransitions[t].thv-(ptransitions[t].thv-800.0f):parts[i].temp-(ptransitions[t].thv-800.0f);
- cr = sin(frequency*q) * 226 + PIXR(ptypes[t].pcolors);
- cg = sin(frequency*q*4.55 +3.14) * 34 + PIXG(ptypes[t].pcolors);
- cb = sin(frequency*q*2.22 +3.14) * 64 + PIXB(ptypes[t].pcolors);
- if (cr>=255)
- cr = 255;
- if (cg>=255)
- cg = 255;
- if (cb>=255)
- cb = 255;
- if (cr<=0)
- cr = 0;
- if (cg<=0)
- cg = 0;
- if (cb<=0)
- cb = 0;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else if (t==PT_FIRE && parts[i].life)
- {
- float ttemp = (float)((int)(parts[i].life/2));
- int caddress = restrict_flt(restrict_flt(ttemp, 0.0f, 200.0f)*3, 0.0f, (200.0f*3)-3);
- uint8 R = flm_data[caddress];
- uint8 G = flm_data[caddress+1];
- uint8 B = flm_data[caddress+2];
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- cr = R/8;
- cg = G/8;
- cb = B/8;
- x = nx/CELL;
- y = ny/CELL;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- }
- else
- {
- cr = parts[i].life * 8;
- cg = parts[i].life * 2;
- cb = parts[i].life;
- if (cr>255) cr = 255;
- if (cg>192) cg = 212;
- if (cb>128) cb = 192;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32);
- }
- // Older Code
- /*if(cmode == 3||cmode==4 || cmode==6)
- {
- cr = parts[i].life / 4;
- cg = parts[i].life / 16;
- cb = parts[i].life / 32;
- if(cr>255) cr = 255;
- if(cg>192) cg = 212;
- if(cb>128) cb = 192;
- x = nx/CELL;
- y = ny/CELL;
- cr += fire_r[y][x];
- if(cr > 255) cr = 255;
- fire_r[y][x] = cr;
- cg += fire_g[y][x];
- if(cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if(cb > 255) cb = 255;
- fire_b[y][x] = cb;
- }
- else
- {
- cr = parts[i].life * 8;
- cg = parts[i].life * 2;
- cb = parts[i].life;
- if(cr>255) cr = 255;
- if(cg>192) cg = 212;
- if(cb>128) cb = 192;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 96);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 96);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 96);
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 32);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 32);
- }*/
- }
- else if (t==PT_LAVA && parts[i].life)
- {
- cr = parts[i].life * 2 + 0xE0;
- cg = parts[i].life * 1 + 0x50;
- cb = parts[i].life/2 + 0x10;
- if (cr>255) cr = 255;
- if (cg>192) cg = 192;
- if (cb>128) cb = 128;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- blendpixel(vid, nx+1, ny, cr, cg, cb, 64);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 64);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 64);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 64);
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- cr /= 32;
- cg /= 32;
- cb /= 32;
- x = nx/CELL;
- y = ny/CELL;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- }
- }
- else if (t==PT_LAVA || t==PT_SPRK)
- {
- vid[ny*(XRES+BARSIZE)+nx] = ptypes[t].pcolors;
- if (cmode == CM_FIRE||cmode==CM_BLOB || cmode==CM_FANCY)
- {
- if (t == PT_LAVA)
- {
- cr = 3;
- cg = i%2;
- cb = 0;
- }
- else
- {
- cr = 8;
- cg = 12;
- cb = 16;
- }
- x = nx/CELL;
- y = ny/CELL;
- cr += fire_r[y][x];
- if (cr > 255) cr = 255;
- fire_r[y][x] = cr;
- cg += fire_g[y][x];
- if (cg > 255) cg = 255;
- fire_g[y][x] = cg;
- cb += fire_b[y][x];
- if (cb > 255) cb = 255;
- fire_b[y][x] = cb;
- }
- }
- /*else if((t==PT_COAL || t==PT_BCOL) && parts[i].tmp2 > 100.0f-80.0f){
- float frequency = 3.1415/(2*100.0f-(100.0f-80.0f));
- int q = (parts[i].tmp2>100.0f)?100.0f-(100.0f-80.0f):parts[i].tmp2-(100.0f-80.0f);
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
-
- cr += parts[i].tmp2;
- cg += parts[i].tmp2;
- cb += parts[i].tmp2;
-
-
- cr += sin(frequency*q) * 226;
- cg += sin(frequency*q*4.55 +3.14) * 34;
- cb += sin(frequency*q*2.22 +3.14) * 64;
-
- if (cr>=255)
- cr = 255;
- if (cg>=255)
- cg = 255;
- if (cb>=255)
- cb = 255;
- if (cr<=0)
- cr = 0;
- if (cg<=0)
- cg = 0;
- if (cb<=0)
- cb = 0;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }*/
- else if(t==PT_COAL || t==PT_BCOL){
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- //cb = PIXB(ptypes[t].pcolors);
-
- cr += (parts[i].tmp2-295.15f)/3;
- //cg += (parts[i].tmp2-273.15f)/3;
- //cb += (parts[i].tmp2-273.15f)/3;
- if (cr>=170)
- cr = 170;
- if (cr<=cg)
- cr = cg;
-
- cg = cb = cr;
-
- if((parts[i].temp-295.15f) > 300.0f-200.0f)
- {
- float frequency = 3.1415/(2*300.0f-(300.0f-200.0f));
- int q = ((parts[i].temp-295.15f)>300.0f)?300.0f-(300.0f-200.0f):(parts[i].temp-295.15f)-(300.0f-200.0f);
-
- cr += sin(frequency*q) * 226;
- cg += sin(frequency*q*4.55 +3.14) * 34;
- cb += sin(frequency*q*2.22 +3.14) * 64;
- }
-
- if (cr>=255)
- cr = 255;
- if (cg>=255)
- cg = 255;
- if (cb>=255)
- cb = 255;
- if (cr<=0)
- cr = 0;
- if (cg<=0)
- cg = 0;
- if (cb<=0)
- cb = 0;
- blendpixel(vid, nx, ny, cr, cg, cb, 255);
- }
- else //if no special effect, draw a simple pixel
- vid[ny*(XRES+BARSIZE)+nx] = ptypes[t].pcolors;
- }
- else //heat view
- {
- float ttemp = parts[i].temp+(-MIN_TEMP);
- int caddress = restrict_flt((int)( restrict_flt(ttemp, 0.0f, MAX_TEMP+(-MIN_TEMP)) / ((MAX_TEMP+(-MIN_TEMP))/1024) ) *3, 0.0f, (1024.0f*3)-3);
- uint8 R = color_data[caddress];
- uint8 G = color_data[caddress+1];
- uint8 B = color_data[caddress+2];
-
- if (t==PT_STKM) //Stick man should be visible in heat mode
- {
- char buff[10]; //Buffer for HP
-
- if (mousex>(nx-3) && mousex<(nx+3) && mousey<(ny+3) && mousey>(ny-3)) //If mous is in the head
- {
- sprintf(buff, "%3d", parts[i].life); //Show HP
- drawtext(vid, mousex-8-2*(parts[i].life<100)-2*(parts[i].life<10), mousey-12, buff, 255, 255, 255, 255);
- }
-
- for (r=-2; r<=1; r++)
- {
- s = XRES+BARSIZE;
- vid[(ny-2)*s+nx+r] = PIXRGB (R, G, B);
- vid[(ny+2)*s+nx+r+1] = PIXRGB (R, G, B);
- vid[(ny+r+1)*s+nx-2] = PIXRGB (R, G, B);
- vid[(ny+r)*s+nx+2] = PIXRGB (R, G, B);
- }
- draw_line(vid , nx, ny+3, player[3], player[4], R, G, B, s);
- draw_line(vid , player[3], player[4], player[7], player[8], R, G, B, s);
- draw_line(vid , nx, ny+3, player[11], player[12], R, G, B, s);
- draw_line(vid , player[11], player[12], player[15], player[16], R, G, B, s);
- }
- else if (t==PT_STKM2) //Stick man should be visible in heat mode
- {
- char buff[10]; //Buffer for HP
-
- if (mousex>(nx-3) && mousex<(nx+3) && mousey<(ny+3) && mousey>(ny-3)) //If mous is in the head
- {
- sprintf(buff, "%3d", parts[i].life); //Show HP
- drawtext(vid, mousex-8-2*(parts[i].life<100)-2*(parts[i].life<10), mousey-12, buff, 255, 255, 255, 255);
- }
-
- for (r=-2; r<=1; r++)
- {
- s = XRES+BARSIZE;
- vid[(ny-2)*s+nx+r] = PIXRGB (R, G, B);
- vid[(ny+2)*s+nx+r+1] = PIXRGB (R, G, B);
- vid[(ny+r+1)*s+nx-2] = PIXRGB (R, G, B);
- vid[(ny+r)*s+nx+2] = PIXRGB (R, G, B);
- }
- draw_line(vid , nx, ny+3, player2[3], player2[4], R, G, B, s);
- draw_line(vid , player2[3], player2[4], player2[7], player2[8], R, G, B, s);
- draw_line(vid , nx, ny+3, player2[11], player2[12], R, G, B, s);
- draw_line(vid , player2[11], player2[12], player2[15], player2[16], R, G, B, s);
- }
- else
- {
- vid[ny*(XRES+BARSIZE)+nx] = PIXRGB(R, G, B);
- //blendpixel(vid, nx+1, ny, R, G, B, 255);
- }
- }
- //blob view!
- if (cmode == CM_BLOB&&t!=PT_FIRE&&t!=PT_PLSM&&t!=PT_HFLM&&t!=PT_NONE&&t!=PT_ACID&&t!=PT_LCRY&&t!=PT_GLOW&&t!=PT_SWCH&&t!=PT_SMKE&&t!=PT_WTRV&&!(t==PT_FIRW&&parts[i].tmp==3)&&t!=PT_LIFE&&t!=PT_H2&&t!=PT_O2)
- {
- if (t==PT_PHOT) {
- cg = 0;
- cb = 0;
- cr = 0;
- for (x=0; x<12; x++) {
- cr += (parts[i].ctype >> (x+18)) & 1;
- cb += (parts[i].ctype >> x) & 1;
- }
- for (x=0; x<12; x++)
- cg += (parts[i].ctype >> (x+9)) & 1;
- x = 624/(cr+cg+cb+1);
- cr *= x;
- cg *= x;
- cb *= x;
- cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;
- } else {
- cr = PIXR(ptypes[t].pcolors);
- cg = PIXG(ptypes[t].pcolors);
- cb = PIXB(ptypes[t].pcolors);
- }
-
- //if(vid[(ny-1)*YRES+(nx-1)]!=0){
- // blendpixel(vid, nx, ny-1, R, G, B, 46);
- //}
-
- if (decorations_enable && parts[i].dcolour)
- {
- int a = (parts[i].dcolour>>24)&0xFF;
- cr = (a*((parts[i].dcolour>>16)&0xFF) + (255-a)*cr) >> 8;
- cg = (a*((parts[i].dcolour>>8)&0xFF) + (255-a)*cg) >> 8;
- cb = (a*((parts[i].dcolour)&0xFF) + (255-a)*cb) >> 8;
- }
- blendpixel(vid, nx+1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 223);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 223);
-
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 112);
- }
- if (decorations_enable && cmode!=CM_HEAT && cmode!=CM_LIFE && parts[i].dcolour)
- if(t==PT_LCRY){
- cr = (parts[i].dcolour>>16)&0xFF;
- cg = (parts[i].dcolour>>8)&0xFF;
- cb = (parts[i].dcolour)&0xFF;
-
- if(parts[i].life<10){
- cr /= 10-parts[i].life;
- cg /= 10-parts[i].life;
- cb /= 10-parts[i].life;
- }
-
- /*cr = cr>255?255:cr;
- cg = cg>255?255:cg;
- cb = cb>255?255:cb;*/
- blendpixel(vid, nx, ny, cr, cg, cb, (parts[i].dcolour>>24)&0xFF);
- } else {
- blendpixel(vid, nx, ny, (parts[i].dcolour>>16)&0xFF, (parts[i].dcolour>>8)&0xFF, (parts[i].dcolour)&0xFF, (parts[i].dcolour>>24)&0xFF);
- }
- }
-#endif
- }
-#ifdef OpenGL
- glFlush ();
-#endif
-}
void draw_walls(pixel *vid)
{
int x, y, i, j, cr, cg, cb;
@@ -5044,19 +2678,9 @@ int sdl_open(void)
return 0;
}
atexit(SDL_Quit);
-#ifdef OpenGL
+#if defined(OGLR)
sdl_scrn=SDL_SetVideoMode(XRES*sdl_scale + BARSIZE*sdl_scale,YRES*sdl_scale + MENUSIZE*sdl_scale,32,SDL_OPENGL);
SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
- Enable2D ();
- // glBegin(GL_TRIANGLES);
- // glColor3ub (255, 0, 0);
- // glVertex2d (0, 0);
- // glColor3ub (0, 255, 0);
- // glVertex2d (640,0);
- // glColor3ub (0, 0, 255);
- // glVertex2d (50, 50);
- //glEnd ();
- //glFlush ();
#else
#ifdef PIX16
if (kiosk_enable)
@@ -5151,35 +2775,3 @@ int draw_debug_info(pixel* vid, int lm, int lx, int ly, int cx, int cy, int line
drawtext(vid, 10, YRES-22, infobuf, 255, 255, 255, 255);
}
}
-
-#ifdef OpenGL
-void Enable2D ()
-{
- int ViewPort[4]; //Holds screen info
-
- glGetIntegerv (GL_VIEWPORT, ViewPort);
-
- glMatrixMode (GL_PROJECTION);
- glPushMatrix ();
- glLoadIdentity ();
-
- glOrtho (0, ViewPort[2], ViewPort[3], 0, -1, 1);
- glMatrixMode (GL_MODELVIEW);
- glPushMatrix ();
- glLoadIdentity ();
-
- glEnable (GL_BLEND);
- glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- glHint( GL_LINE_SMOOTH_HINT, GL_NICEST);
- glHint( GL_POINT_SMOOTH_HINT, GL_NICEST);
-}
-void RenderScene ()
-{
- SDL_GL_SwapBuffers ();
-}
-void ClearScreen()
-{
- glClear(GL_COLOR_BUFFER_BIT);
-}
-#endif
diff --git a/src/interface.c b/src/interface.c
index d098b3f..6ce057b 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -5046,7 +5046,7 @@ unsigned int decorations_ui(pixel *vid_buf,int *bsx,int *bsy, unsigned int saved
my /= sdl_scale;
memcpy(vid_buf,old_buf,(XRES+BARSIZE)*(YRES+MENUSIZE)*PIXELSIZE);
- draw_parts(vid_buf);
+ render_parts(vid_buf);
ui_edit_process(mx, my, b, &box_R);
ui_edit_process(mx, my, b, &box_G);
ui_edit_process(mx, my, b, &box_B);