From 0b1f05f2e65d994b38c913c9a09caf0bc504e57e Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Thu, 3 Jan 2008 08:54:38 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1543 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- docs/package_copyrights.txt | 4 +++ packages/misc/bullethole.png | Bin 0 -> 19417 bytes packages/misc/hole.png | Bin 6380 -> 0 bytes source/src/menus.cpp | 12 +++++---- source/src/renderparticles.cpp | 43 ++++++++++++++++++++++++--------- source/src/texture.cpp | 37 ++++++++++++++++++++++++++-- 6 files changed, 78 insertions(+), 18 deletions(-) create mode 100644 packages/misc/bullethole.png delete mode 100644 packages/misc/hole.png diff --git a/docs/package_copyrights.txt b/docs/package_copyrights.txt index b2db1e00..0e161a37 100644 --- a/docs/package_copyrights.txt +++ b/docs/package_copyrights.txt @@ -21,6 +21,10 @@ packages/misc/crosshairs Mostly by makkE, some by the Death Illustrated team (topher), permission to use given by Pushplay (thanks!!) +packages/misc/bullethole.png + +made by leileilol of OpenArena (licensed under GPL) + ------------TEXTURES-------------------- --------------packages/textures/arcitool diff --git a/packages/misc/bullethole.png b/packages/misc/bullethole.png new file mode 100644 index 0000000000000000000000000000000000000000..e5cdbbfe972ef8565169b94924b4526c517275d4 GIT binary patch literal 19417 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 bpE;z{aJj;U?@NIvaWQzh`njxgN@xNAjLAKw literal 0 HcmV?d00001 diff --git a/packages/misc/hole.png b/packages/misc/hole.png deleted file mode 100644 index aaf8c8202504f2ed79d8745044043283c723eff4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6380 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 -} \ No newline at end of file +} + diff --git a/source/src/renderparticles.cpp b/source/src/renderparticles.cpp index 17560f38..900ed216 100644 --- a/source/src/renderparticles.cpp +++ b/source/src/renderparticles.cpp @@ -199,7 +199,7 @@ void particleinit() parttex[0] = textureload("packages/misc/base.png"); parttex[1] = textureload("packages/misc/smoke.png"); parttex[2] = textureload("packages/misc/explosion.jpg"); - parttex[3] = textureload("packages/misc/hole.png"); + parttex[3] = textureload("packages/misc/bullethole.png"); parttex[4] = textureload("packages/misc/blood.png"); parttex[5] = textureload("packages/misc/scorch.png"); } @@ -247,22 +247,23 @@ enum PT_FIREBALL, PT_SHOTLINE, PT_DECAL, + PT_BULLETHOLE, PT_BLOOD, PT_STAIN }; static struct parttype { int type; float r, g, b; int gr, tex; float sz; } parttypes[] = { - { 0, 0.4f, 0.4f, 0.4f, 2, 0, 0.06f }, // yellow: sparks - { 0, 1.0f, 1.0f, 1.0f, 20, 1, 0.15f }, // grey: small smoke - { 0, 0.2f, 0.2f, 1.0f, 20, 0, 0.08f }, // blue: edit mode entities - { PT_BLOOD, 0.5f, 0.0f, 0.0f, 1, 4, 0.3f }, // red: blood spats - { 0, 1.0f, 0.1f, 0.1f, 0, 1, 0.2f }, // red: demotrack - { PT_FIREBALL, 1.0f, 0.5f, 0.5f, 0, 2, 7.0f }, // explosion fireball - { PT_SHOTLINE, 1.0f, 1.0f, 0.7f, 0, -1, 0.0f }, // yellow: shotline - { PT_DECAL, 1.0f, 1.0f, 1.0f, 0, 3, 0.1f }, // hole decal - { PT_STAIN, 0.5f, 0.0f, 0.0f, 0, 4, 0.6f }, // red: blood stain - { PT_DECAL, 1.0f, 1.0f, 1.0f, 0, 5, 1.5f }, // scorch decal + { 0, 0.4f, 0.4f, 0.4f, 2, 0, 0.06f }, // yellow: sparks + { 0, 1.0f, 1.0f, 1.0f, 20, 1, 0.15f }, // grey: small smoke + { 0, 0.2f, 0.2f, 1.0f, 20, 0, 0.08f }, // blue: edit mode entities + { PT_BLOOD, 0.5f, 0.0f, 0.0f, 1, 4, 0.3f }, // red: blood spats + { 0, 1.0f, 0.1f, 0.1f, 0, 1, 0.2f }, // red: demotrack + { PT_FIREBALL, 1.0f, 0.5f, 0.5f, 0, 2, 7.0f }, // explosion fireball + { PT_SHOTLINE, 1.0f, 1.0f, 0.7f, 0, -1, 0.0f }, // yellow: shotline + { PT_BULLETHOLE, 1.0f, 1.0f, 1.0f, 0, 3, 0.3f }, // hole decal + { PT_STAIN, 0.5f, 0.0f, 0.0f, 0, 4, 0.6f }, // red: blood stain + { PT_DECAL, 1.0f, 1.0f, 1.0f, 0, 5, 1.5f }, // scorch decal }; VAR(particlesize, 20, 100, 500); @@ -312,6 +313,11 @@ void render_particles(int time) glBegin(GL_QUADS); break; + case PT_BULLETHOLE: + glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); + glBegin(GL_QUADS); + break; + case PT_BLOOD: glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); glColor3f(1-pt.r, 1-pt.g, 1-pt.b); @@ -378,6 +384,20 @@ void render_particles(int time) break; } + case PT_BULLETHOLE: + { + float blend = max(0.0f, min((p->millis+p->fade - lastmillis)/1000.0f, 1.0f)); + glColor4f(pt.r*blend, pt.g*blend, pt.b*blend, blend); + vec dx(0, 0, 0), dy(0, 0, 0); + loopk(3) if(p->d[k]) { dx[(k+1)%3] = -1; dy[(k+2)%3] = p->d[k]; break; } + glTexCoord2i(0, 1); glVertex3f(p->o.x+(-dx.x+dy.x)*pt.sz, p->o.y+(-dx.y+dy.y)*pt.sz, p->o.z+(-dx.z+dy.z)*pt.sz); + glTexCoord2i(1, 1); glVertex3f(p->o.x+( dx.x+dy.x)*pt.sz, p->o.y+( dx.y+dy.y)*pt.sz, p->o.z+( dx.z+dy.z)*pt.sz); + glTexCoord2i(1, 0); glVertex3f(p->o.x+( dx.x-dy.x)*pt.sz, p->o.y+( dx.y-dy.y)*pt.sz, p->o.z+( dx.z-dy.z)*pt.sz); + glTexCoord2i(0, 0); glVertex3f(p->o.x+(-dx.x-dy.x)*pt.sz, p->o.y+(-dx.y-dy.y)*pt.sz, p->o.z+(-dx.z-dy.z)*pt.sz); + xtraverts += 4; + break; + } + case PT_BLOOD: { int n = detrnd((size_t)p, 4), o = detrnd((size_t)p, 11);; @@ -441,6 +461,7 @@ void render_particles(int time) case PT_PART: case PT_SHOTLINE: case PT_DECAL: + case PT_BULLETHOLE: case PT_BLOOD: case PT_STAIN: glEnd(); diff --git a/source/src/texture.cpp b/source/src/texture.cpp index 16ef145e..f178d7ef 100644 --- a/source/src/texture.cpp +++ b/source/src/texture.cpp @@ -50,23 +50,56 @@ GLenum texformat(int bpp) { switch(bpp) { + case 8: return GL_LUMINANCE; + case 16: return GL_LUMINANCE_ALPHA; case 24: return GL_RGB; case 32: return GL_RGBA; default: return 0; } } +SDL_Surface *texdecal(SDL_Surface *s) +{ + SDL_Surface *m = SDL_CreateRGBSurface(SDL_SWSURFACE, s->w, s->h, 16, 0, 0, 0, 0); + if(!m) fatal("create surface"); + uchar *dst = (uchar *)m->pixels, *src = (uchar *)s->pixels; + loopi(s->h*s->w) + { + *dst++ = *src; + *dst++ = 255 - *src; + src += s->format->BytesPerPixel; + } + SDL_FreeSurface(s); + return m; +} + GLuint loadsurface(const char *texname, int &xs, int &ys, int &bpp, int clamp) { - SDL_Surface *s = IMG_Load(findfile(texname, "rb")); + const char *file = texname; + if(texname[0]=='<') + { + file = strchr(texname, '>'); + if(!file) { conoutf("could not load texture %s", texname); return 0; } + file++; + } + + SDL_Surface *s = IMG_Load(findfile(file, "rb")); if(!s) { conoutf("couldn't load texture %s", texname); return 0; } GLenum format = texformat(s->format->BitsPerPixel); if(!format) { SDL_FreeSurface(s); - conoutf("texture must be 24bpp or 32bpp: %s", texname); + conoutf("texture must be 8, 16, 24, or 32 bpp: %s", texname); return 0; } + + if(texname[0]=='<') + { + const char *cmd = &texname[1], *arg1 = strchr(cmd, ':');//, *arg2 = arg1 ? strchr(arg1, ',') : NULL; + if(!arg1) arg1 = strchr(cmd, '>'); + if(!strncmp(cmd, "decal", arg1-cmd)) { s = texdecal(s); format = texformat(s->format->BitsPerPixel); } + } + GLuint tnum; glGenTextures(1, &tnum); createtexture(tnum, s->w, s->h, s->pixels, clamp, true, format);