diff options
| author | Savely Skresanov <savask@yandex.ru> | 2012-06-02 14:53:38 (GMT) |
|---|---|---|
| committer | Savely Skresanov <savask@yandex.ru> | 2012-06-02 14:59:25 (GMT) |
| commit | 7f5408f196002476c4765f1cae833e1441e4b276 (patch) | |
| tree | 4c5472506662dcb46fd2344c0129443a3a61c3aa /src/elements/newgraphics.c | |
| parent | 939265a77de93fd6e9b5136ad948fc16ce077918 (diff) | |
| download | powder-7f5408f196002476c4765f1cae833e1441e4b276.zip powder-7f5408f196002476c4765f1cae833e1441e4b276.tar.gz | |
Moved soap and stick men graphics things to special functions.
Diffstat (limited to 'src/elements/newgraphics.c')
| -rw-r--r-- | src/elements/newgraphics.c | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/src/elements/newgraphics.c b/src/elements/newgraphics.c index f3d49a7..92a1c94 100644 --- a/src/elements/newgraphics.c +++ b/src/elements/newgraphics.c @@ -563,4 +563,149 @@ int graphics_COAL(GRAPHICS_FUNC_ARGS) //Both COAL and Broken Coal } return 0; } +int graphics_SOAP(GRAPHICS_FUNC_ARGS) +{ + if (decorations_enable && cpart->dcolour) + { + int a = (cpart->dcolour>>24)&0xFF; + *firer = *colr = (a*((cpart->dcolour>>16)&0xFF) + (255-a)**colr) >> 8; + *fireg = *colg = (a*((cpart->dcolour>>8)&0xFF) + (255-a)**colg) >> 8; + *fireb = *colb = (a*((cpart->dcolour)&0xFF) + (255-a)**colb) >> 8; + } + if ((cpart->ctype&7) == 7) + draw_line(vid, nx, ny, (int)(parts[cpart->tmp].x+0.5f), (int)(parts[cpart->tmp].y+0.5f), *colr, *colg, *colb, XRES+BARSIZE); + return 0; +} +int graphics_stickmen(GRAPHICS_FUNC_ARGS) +{ + char buff[20]; //Buffer for HP + int s; + int legr, legg, legb; + playerst *cplayer; + + *pixel_mode = 0; + switch(cpart->type) + { + case PT_STKM: + cplayer = &player; + break; + case PT_STKM2: + cplayer = &player2; + break; + case PT_FIGH: + cplayer = &fighters[(unsigned char)cpart->tmp]; + break; + default: + return 0; + } + + if (mousex>(nx-3) && mousex<(nx+3) && mousey<(ny+3) && mousey>(ny-3)) //If mouse is in the head + { + sprintf(buff, "%3d", cpart->life); //Show HP + drawtext(vid, mousex-8-2*(cpart->life<100)-2*(cpart->life<10), mousey-12, buff, 255, 255, 255, 255); + } + + if (colour_mode!=COLOUR_HEAT) + { + if (cplayer->elem<PT_NUM) + { + colr = PIXR(ptypes[cplayer->elem].pcolors); + colg = PIXG(ptypes[cplayer->elem].pcolors); + colb = PIXB(ptypes[cplayer->elem].pcolors); + } + else + { + colr = 0x80; + colg = 0x80; + colb = 0xFF; + } + } +#ifdef OGLR + glColor4f(((float)colr)/255.0f, ((float)colg)/255.0f, ((float)colb)/255.0f, 1.0f); + glBegin(GL_LINE_STRIP); + if(t==PT_FIGH) + { + glVertex2f(fnx, fny+2); + glVertex2f(fnx+2, fny); + glVertex2f(fnx, fny-2); + glVertex2f(fnx-2, fny); + glVertex2f(fnx, fny+2); + } + else + { + glVertex2f(fnx-2, fny-2); + glVertex2f(fnx+2, fny-2); + glVertex2f(fnx+2, fny+2); + glVertex2f(fnx-2, fny+2); + glVertex2f(fnx-2, fny-2); + } + glEnd(); + glBegin(GL_LINES); + + if (colour_mode!=COLOUR_HEAT) + { + if (t==PT_STKM2) + glColor4f(100.0f/255.0f, 100.0f/255.0f, 1.0f, 1.0f); + else + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + } + + glVertex2f(nx, ny+3); + glVertex2f(cplayer->legs[0], cplayer->legs[1]); + glVertex2f(cplayer->legs[0], cplayer->legs[1]); + glVertex2f(cplayer->legs[4], cplayer->legs[5]); + + glVertex2f(nx, ny+3); + glVertex2f(cplayer->legs[8], cplayer->legs[9]); + + glVertex2f(cplayer->legs[8], cplayer->legs[9]); + glVertex2f(cplayer->legs[12], cplayer->legs[13]); + glEnd(); +#else + s = XRES+BARSIZE; + + if (cpart->type==PT_STKM2) + { + legr = 100; + legg = 100; + legb = 255; + } + else + { + legr = 255; + legg = 255; + legb = 255; + } + + if (colour_mode==COLOUR_HEAT) + { + legr = colr; + legg = colg; + legb = colb; + } + + //head + if(cpart->type==PT_FIGH) + { + draw_line(vid , nx, ny+2, nx+2, ny, colr, colg, colb, s); + draw_line(vid , nx+2, ny, nx, ny-2, colr, colg, colb, s); + draw_line(vid , nx, ny-2, nx-2, ny, colr, colg, colb, s); + draw_line(vid , nx-2, ny, nx, ny+2, colr, colg, colb, s); + } + else + { + draw_line(vid , nx-2, ny+2, nx+2, ny+2, colr, colg, colb, s); + draw_line(vid , nx-2, ny-2, nx+2, ny-2, colr, colg, colb, s); + draw_line(vid , nx-2, ny-2, nx-2, ny+2, colr, colg, colb, s); + draw_line(vid , nx+2, ny-2, nx+2, ny+2, colr, colg, colb, s); + } + //legs + draw_line(vid , nx, ny+3, cplayer->legs[0], cplayer->legs[1], legr, legg, legb, s); + draw_line(vid , cplayer->legs[0], cplayer->legs[1], cplayer->legs[4], cplayer->legs[5], legr, legg, legb, s); + draw_line(vid , nx, ny+3, cplayer->legs[8], cplayer->legs[9], legr, legg, legb, s); + draw_line(vid , cplayer->legs[8], cplayer->legs[9], cplayer->legs[12], cplayer->legs[13], legr, legg, legb, s); +#endif + + return 0; +} |
