summaryrefslogtreecommitdiff
path: root/src/simulation/elements/SPNG.cpp
diff options
context:
space:
mode:
authorcracker64 <cracker642@gmail.com>2013-02-28 05:40:36 (GMT)
committer cracker64 <cracker642@gmail.com>2013-02-28 05:40:36 (GMT)
commitc65081d3ed44a97cea0f41a63e9ec07cf0feb5f2 (patch)
tree90744a56bc618c12aab5ef617445b283ce2d6d57 /src/simulation/elements/SPNG.cpp
parent08d1a68ce091b6ba53788224fd1bda92c1895ca6 (diff)
downloadpowder-c65081d3ed44a97cea0f41a63e9ec07cf0feb5f2.zip
powder-c65081d3ed44a97cea0f41a63e9ec07cf0feb5f2.tar.gz
Finished first pass-through for all elements.
Will get a few more places later.
Diffstat (limited to 'src/simulation/elements/SPNG.cpp')
-rw-r--r--src/simulation/elements/SPNG.cpp57
1 files changed, 35 insertions, 22 deletions
diff --git a/src/simulation/elements/SPNG.cpp b/src/simulation/elements/SPNG.cpp
index 95dd12f..de32c24 100644
--- a/src/simulation/elements/SPNG.cpp
+++ b/src/simulation/elements/SPNG.cpp
@@ -59,30 +59,43 @@ int Element_SPNG::update(UPDATE_FUNC_ARGS)
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_WATR || (r&0xFF)==PT_DSTW || (r&0xFF)==PT_FRZW) && parts[i].life<limit && 500>rand()%absorbChanceDenom)
+ switch (r&0xFF)
{
- parts[i].life++;
- sim->kill_part(r>>8);
- }
- if ((r&0xFF)==PT_SLTW && parts[i].life<limit && 50>rand()%absorbChanceDenom)
- {
- parts[i].life++;
- if (rand()%4)
+ case PT_WATR:
+ case PT_DSTW:
+ case PT_FRZW:
+ if (parts[i].life<limit && 500>rand()%absorbChanceDenom)
+ {
+ parts[i].life++;
sim->kill_part(r>>8);
- else
- sim->part_change_type(r>>8, x+rx, y+ry, PT_SALT);
- }
- if ((r&0xFF)==PT_CBNW && parts[i].life<limit && 100>rand()%absorbChanceDenom)
- {
- parts[i].life++;
- sim->part_change_type(r>>8, x+rx, y+ry, PT_CO2);
- }
- if ((r&0xFF)==PT_PSTE && parts[i].life<limit && 20>rand()%absorbChanceDenom)
- {
- parts[i].life++;
- sim->create_part(r>>8, x+rx, y+ry, PT_CLST);
+ }
+ break;
+ case PT_SLTW:
+ if (parts[i].life<limit && 50>rand()%absorbChanceDenom)
+ {
+ parts[i].life++;
+ if (rand()%4)
+ sim->kill_part(r>>8);
+ else
+ sim->part_change_type(r>>8, x+rx, y+ry, PT_SALT);
+ }
+ break;
+ case PT_CBNW:
+ if (parts[i].life<limit && 100>rand()%absorbChanceDenom)
+ {
+ parts[i].life++;
+ sim->part_change_type(r>>8, x+rx, y+ry, PT_CO2);
+ }
+ break;
+ case PT_PSTE:
+ if (parts[i].life<limit && 20>rand()%absorbChanceDenom)
+ {
+ parts[i].life++;
+ sim->create_part(r>>8, x+rx, y+ry, PT_CLST);
+ }
+ break;
+ default:
+ continue;
}
}
}