summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2011-09-21 11:41:52 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-09-21 11:41:52 (GMT)
commitc3d7f694f2189cad336dbbc64140dda520788fa1 (patch)
treeaa14635ccd568a068d11e8d1ab3bed4ffaef1367 /src
parent592fe333ea611bb62c76829fd1eb7e4d08cc0f66 (diff)
downloadpowder-c3d7f694f2189cad336dbbc64140dda520788fa1.zip
powder-c3d7f694f2189cad336dbbc64140dda520788fa1.tar.gz
Make soap clean off decoration (opposite of BIZR)
Diffstat (limited to 'src')
-rw-r--r--src/elements/soap.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/elements/soap.c b/src/elements/soap.c
index 6cf25cd..fbc5e37 100644
--- a/src/elements/soap.c
+++ b/src/elements/soap.c
@@ -2,8 +2,10 @@
int update_SOAP(UPDATE_FUNC_ARGS)
{
- int r, rx, ry;
-
+ int r, rx, ry, nr, ng, nb, na;
+ float tr, tg, tb, ta;
+ float blend;
+
//0x01 - bubble on/off
//0x02 - first mate yes/no
//0x04 - "back" mate yes/no
@@ -203,6 +205,30 @@ int update_SOAP(UPDATE_FUNC_ARGS)
}
}
}
+
+ for (rx=-2; rx<3; rx++)
+ for (ry=-2; ry<3; ry++)
+ if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry))
+ {
+ r = pmap[y+ry][x+rx];
+ if (!r)
+ continue;
+ if ((r&0xFF)!=PT_SOAP)
+ {
+ blend = 0.85f;
+ tr = (parts[r>>8].dcolour>>16)&0xFF;
+ tg = (parts[r>>8].dcolour>>8)&0xFF;
+ tb = (parts[r>>8].dcolour)&0xFF;
+ ta = (parts[r>>8].dcolour>>24)&0xFF;
+
+ nr = (tr*blend);
+ ng = (tg*blend);
+ nb = (tb*blend);
+ na = (ta*blend);
+
+ parts[r>>8].dcolour = nr<<16 | ng<<8 | nb | na<<24;
+ }
+ }
return 0;
}