diff options
| author | Simon 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) |
| commit | c3d7f694f2189cad336dbbc64140dda520788fa1 (patch) | |
| tree | aa14635ccd568a068d11e8d1ab3bed4ffaef1367 /src | |
| parent | 592fe333ea611bb62c76829fd1eb7e4d08cc0f66 (diff) | |
| download | powder-c3d7f694f2189cad336dbbc64140dda520788fa1.zip powder-c3d7f694f2189cad336dbbc64140dda520788fa1.tar.gz | |
Make soap clean off decoration (opposite of BIZR)
Diffstat (limited to 'src')
| -rw-r--r-- | src/elements/soap.c | 30 |
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; } |
