From c65081d3ed44a97cea0f41a63e9ec07cf0feb5f2 Mon Sep 17 00:00:00 2001 From: cracker64 Date: Thu, 28 Feb 2013 00:40:36 -0500 Subject: [PATCH] Finished first pass-through for all elements. Will get a few more places later. --- .../elements/{dcel.cpp => DCEL.cpp} | 26 ++--- src/simulation/elements/EXOT.cpp | 2 +- src/simulation/elements/PCLN.cpp | 13 ++- src/simulation/elements/PLNT.cpp | 66 ++++++----- src/simulation/elements/PLUT.cpp | 6 +- src/simulation/elements/PPIP.cpp | 6 +- src/simulation/elements/PQRT.cpp | 23 +--- src/simulation/elements/PRTI.cpp | 4 +- src/simulation/elements/PRTO.cpp | 7 +- src/simulation/elements/PSTN.cpp | 106 +++++++++--------- src/simulation/elements/PUMP.cpp | 9 +- src/simulation/elements/PVOD.cpp | 17 +-- src/simulation/elements/QRTZ.cpp | 24 ++-- src/simulation/elements/REPL.cpp | 6 +- src/simulation/elements/RIME.cpp | 6 +- src/simulation/elements/SHLD1.cpp | 6 +- src/simulation/elements/SHLD2.cpp | 12 +- src/simulation/elements/SHLD3.cpp | 10 +- src/simulation/elements/SHLD4.cpp | 7 +- src/simulation/elements/SING.cpp | 4 +- src/simulation/elements/SLTW.cpp | 45 +++++--- src/simulation/elements/SNOW.cpp | 2 +- src/simulation/elements/SOAP.cpp | 86 +++++--------- src/simulation/elements/SPNG.cpp | 57 ++++++---- src/simulation/elements/SPRK.cpp | 70 ++++++------ src/simulation/elements/THDR.cpp | 18 +-- src/simulation/elements/THRM.cpp | 4 +- src/simulation/elements/TRON.cpp | 1 - src/simulation/elements/TSNS.cpp | 4 +- src/simulation/elements/VIBR.cpp | 14 +-- src/simulation/elements/VINE.cpp | 8 +- src/simulation/elements/WARP.cpp | 2 +- src/simulation/elements/WATR.cpp | 12 +- src/simulation/elements/WIRE.cpp | 57 +++++----- src/simulation/elements/WTRV.cpp | 4 +- src/simulation/elements/YEST.cpp | 4 +- 36 files changed, 367 insertions(+), 381 deletions(-) rename src/simulation/elements/{dcel.cpp => DCEL.cpp} (78%) diff --git a/src/simulation/elements/dcel.cpp b/src/simulation/elements/DCEL.cpp similarity index 78% rename from src/simulation/elements/dcel.cpp rename to src/simulation/elements/DCEL.cpp index 0fe7c787e..e6bf79d88 100644 --- a/src/simulation/elements/dcel.cpp +++ b/src/simulation/elements/DCEL.cpp @@ -48,7 +48,7 @@ Element_DCEL::Element_DCEL() //#TPT-Directive ElementHeader Element_DCEL static int update(UPDATE_FUNC_ARGS) int Element_DCEL::update(UPDATE_FUNC_ARGS) - { +{ int r, rx, ry; float multiplier; if (parts[i].life!=0) @@ -60,18 +60,18 @@ int Element_DCEL::update(UPDATE_FUNC_ARGS) { multiplier = 1.0f/1.1f; } - parts[i].tmp = 0; - for (rx=-1; rx<2; rx++) - for (ry=-1; ry<2; ry++) - if (x+rx>=0 && y+ry>0 && x+rxphotons[y+ry][x+rx]; - if ((r>>8)>=NPART || !r) - continue; - if(sim->elements[r&0xFF].Properties & (TYPE_PART | TYPE_LIQUID | TYPE_GAS | TYPE_ENERGY)) - { + parts[i].tmp = 0; + for (rx=-1; rx<2; rx++) + for (ry=-1; ry<2; ry++) + if (x+rx>=0 && y+ry>0 && x+rxphotons[y+ry][x+rx]; + if (!r) + continue; + if (sim->elements[r&0xFF].Properties & (TYPE_PART | TYPE_LIQUID | TYPE_GAS | TYPE_ENERGY)) + { parts[r>>8].vx *= multiplier; parts[r>>8].vy *= multiplier; parts[i].tmp = 1; diff --git a/src/simulation/elements/EXOT.cpp b/src/simulation/elements/EXOT.cpp index 8cf0161f5..466fb9caf 100644 --- a/src/simulation/elements/EXOT.cpp +++ b/src/simulation/elements/EXOT.cpp @@ -75,7 +75,7 @@ int Element_EXOT::update(UPDATE_FUNC_ARGS) { } } if ((parts[i].tmp>245) && (parts[i].life>1000)) - if (rt!=PT_EXOT && rt!=PT_BREC && rt!=PT_DMND && rt!=PT_CLNE && rt!=PT_PRTI && rt!=PT_PRTO && rt!=PT_PCLN && rt!=PT_PHOT && rt!=PT_VOID && rt!=PT_NBHL && rt!=PT_WARP && rt!=PT_NEUT) + if (rt!=PT_EXOT && rt!=PT_BREC && rt!=PT_DMND && rt!=PT_CLNE && rt!=PT_PRTI && rt!=PT_PRTO && rt!=PT_PCLN && rt!=PT_VOID && rt!=PT_NBHL && rt!=PT_WARP) { sim->create_part(i, x, y, rt); return 0; diff --git a/src/simulation/elements/PCLN.cpp b/src/simulation/elements/PCLN.cpp index 926b2329f..afee3cba4 100644 --- a/src/simulation/elements/PCLN.cpp +++ b/src/simulation/elements/PCLN.cpp @@ -59,12 +59,15 @@ int Element_PCLN::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if ((r&0xFF)==PT_SPRK && parts[r>>8].life>0 && parts[r>>8].life<4) + if ((r&0xFF)==PT_SPRK) { - if (parts[r>>8].ctype==PT_PSCN) - parts[i].life = 10; - else if (parts[r>>8].ctype==PT_NSCN) - parts[i].life = 9; + if (parts[r>>8].life>0 && parts[r>>8].life<4) + { + if (parts[r>>8].ctype==PT_PSCN) + parts[i].life = 10; + else if (parts[r>>8].ctype==PT_NSCN) + parts[i].life = 9; + } } else if ((r&0xFF)==PT_PCLN) { diff --git a/src/simulation/elements/PLNT.cpp b/src/simulation/elements/PLNT.cpp index 6e8202ca0..dd8928c76 100644 --- a/src/simulation/elements/PLNT.cpp +++ b/src/simulation/elements/PLNT.cpp @@ -55,36 +55,48 @@ int Element_PLNT::update(UPDATE_FUNC_ARGS) if (x+rx>=0 && y+ry>0 && x+rx(rand()%250)) + switch (r&0xFF) { - np = sim->create_part(r>>8,x+rx,y+ry,PT_PLNT); - if (np<0) continue; - parts[np].life = 0; - } - else if ((r&0xFF)==PT_LAVA && 1>(rand()%250)) - { - sim->part_change_type(i,x,y,PT_FIRE); - parts[i].life = 4; - } - else if (((r&0xFF)==PT_SMKE || (r&0xFF)==PT_CO2) && (1>rand()%250)) - { - sim->kill_part(r>>8); - parts[i].life = rand()%60 + 60; - } - else if (surround_space && ((r&0xFF)==PT_WOOD) && (1>rand()%20) && (abs(rx+ry)<=2) && (sim->VINE_MODE || parts[i].tmp==1) ) - { - int nnx = rand()%3 -1; - int nny = rand()%3 -1; - if (x+rx+nnx>=0 && y+ry+nny>0 && x+rx+nnxcreate_part(-1,x+rx+nnx,y+ry+nny,PT_VINE); + np = sim->create_part(r>>8,x+rx,y+ry,PT_PLNT); if (np<0) continue; - parts[np].temp = parts[i].temp; + parts[np].life = 0; } + break; + case PT_LAVA: + if (!(rand()%250)) + { + sim->part_change_type(i,x,y,PT_FIRE); + parts[i].life = 4; + } + break; + case PT_SMKE: + case PT_CO2: + if (!(rand()%250)) + { + sim->kill_part(r>>8); + parts[i].life = rand()%60 + 60; + } + break; + case PT_WOOD: + if (surround_space && !(rand()%20) && (abs(rx+ry)<=2) && (sim->VINE_MODE || parts[i].tmp==1)) + { + int nnx = rand()%3 -1; + int nny = rand()%3 -1; + if (x+rx+nnx>=0 && y+ry+nny>0 && x+rx+nnxcreate_part(-1,x+rx+nnx,y+ry+nny,PT_VINE); + if (np<0) continue; + parts[np].temp = parts[i].temp; + } + } + break; + default: + continue; } } if (parts[i].life==2) @@ -123,4 +135,4 @@ int Element_PLNT::graphics(GRAPHICS_FUNC_ARGS) } -Element_PLNT::~Element_PLNT() {} \ No newline at end of file +Element_PLNT::~Element_PLNT() {} diff --git a/src/simulation/elements/PLUT.cpp b/src/simulation/elements/PLUT.cpp index c9b759acc..9f5f806eb 100644 --- a/src/simulation/elements/PLUT.cpp +++ b/src/simulation/elements/PLUT.cpp @@ -48,8 +48,8 @@ Element_PLUT::Element_PLUT() //#TPT-Directive ElementHeader Element_PLUT static int update(UPDATE_FUNC_ARGS) int Element_PLUT::update(UPDATE_FUNC_ARGS) - { - if (1>rand()%100 && ((int)(5.0f*sim->pv[y/CELL][x/CELL]))>(rand()%1000)) +{ + if (!(rand()%100) && ((int)(5.0f*sim->pv[y/CELL][x/CELL]))>(rand()%1000)) { sim->create_part(i, x, y, PT_NEUT); } @@ -57,4 +57,4 @@ int Element_PLUT::update(UPDATE_FUNC_ARGS) } -Element_PLUT::~Element_PLUT() {} \ No newline at end of file +Element_PLUT::~Element_PLUT() {} diff --git a/src/simulation/elements/PPIP.cpp b/src/simulation/elements/PPIP.cpp index 03830a789..a5948d3a3 100644 --- a/src/simulation/elements/PPIP.cpp +++ b/src/simulation/elements/PPIP.cpp @@ -85,7 +85,7 @@ void Element_PPIP::flood_trigger(Simulation * sim, int x, int y, int sparkedBy) else if (sparkedBy==PT_INST) prop = PPIP_TMPFLAG_TRIGGER_REVERSE << 3; if (prop==0 || (pmap[y][x]&0xFF)!=PT_PPIP || (parts[pmap[y][x]>>8].tmp & prop)) - return; + return; coord_stack = new unsigned short[coord_stack_limit][2]; coord_stack[coord_stack_size][0] = x; @@ -103,7 +103,7 @@ void Element_PPIP::flood_trigger(Simulation * sim, int x, int y, int sparkedBy) { if ((pmap[y][x1-1]&0xFF)!=PT_PPIP) { - break; + break; } x1--; } @@ -112,7 +112,7 @@ void Element_PPIP::flood_trigger(Simulation * sim, int x, int y, int sparkedBy) { if ((pmap[y][x2+1]&0xFF)!=PT_PPIP) { - break; + break; } x2++; } diff --git a/src/simulation/elements/PQRT.cpp b/src/simulation/elements/PQRT.cpp index 8c5194744..bb03f087a 100644 --- a/src/simulation/elements/PQRT.cpp +++ b/src/simulation/elements/PQRT.cpp @@ -49,17 +49,7 @@ Element_PQRT::Element_PQRT() //#TPT-Directive ElementHeader Element_PQRT static int update(UPDATE_FUNC_ARGS) int Element_PQRT::update(UPDATE_FUNC_ARGS) { - int r, tmp, trade, rx, ry, np, t; - t = parts[i].type; - if (t == PT_QRTZ) - { - parts[i].pavg[0] = parts[i].pavg[1]; - parts[i].pavg[1] = sim->pv[y/CELL][x/CELL]; - if (parts[i].pavg[1]-parts[i].pavg[0] > 0.05*(parts[i].temp/3) || parts[i].pavg[1]-parts[i].pavg[0] < -0.05*(parts[i].temp/3)) - { - sim->part_change_type(i,x,y,PT_PQRT); - } - } + int r, tmp, trade, rx, ry, np; // absorb SLTW if (parts[i].ctype!=-1) for (rx=-2; rx<3; rx++) @@ -69,7 +59,7 @@ int Element_PQRT::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - else if ((r&0xFF)==PT_SLTW && (1>rand()%2500)) + else if ((r&0xFF)==PT_SLTW && !(rand()%2500)) { sim->kill_part(r>>8); parts[i].ctype ++; @@ -92,15 +82,14 @@ int Element_PQRT::update(UPDATE_FUNC_ARGS) { parts[np].tmp = parts[i].tmp; parts[i].ctype--; - if (5>rand()%10) + if (rand()%2) { parts[np].ctype=-1;//dead qrtz } - else if (!parts[i].ctype && 1>rand()%15) + else if (!parts[i].ctype && !(rand()%15)) { parts[i].ctype=-1; } - break; } } @@ -119,7 +108,7 @@ int Element_PQRT::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if ((r&0xFF)==t && (parts[i].ctype>parts[r>>8].ctype) && parts[r>>8].ctype>=0 )//diffusion + if ((r&0xFF)==PT_PQRT && (parts[i].ctype>parts[r>>8].ctype) && parts[r>>8].ctype>=0 )//diffusion { tmp = parts[i].ctype - parts[r>>8].ctype; if (tmp ==1) @@ -165,4 +154,4 @@ int Element_PQRT::graphics(GRAPHICS_FUNC_ARGS) } -Element_PQRT::~Element_PQRT() {} \ No newline at end of file +Element_PQRT::~Element_PQRT() {} diff --git a/src/simulation/elements/PRTI.cpp b/src/simulation/elements/PRTI.cpp index e2dadedbe..23def7b17 100644 --- a/src/simulation/elements/PRTI.cpp +++ b/src/simulation/elements/PRTI.cpp @@ -71,10 +71,10 @@ int Element_PRTI::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) fe = 1; - if (!r || (r&0xFF)==PT_PRTI || (r&0xFF)==PT_PRTO || (!(sim->elements[r&0xFF].Properties & (TYPE_PART | TYPE_LIQUID | TYPE_GAS | TYPE_ENERGY)) && (r&0xFF)!=PT_SPRK)) + if (!r || (!(sim->elements[r&0xFF].Properties & (TYPE_PART | TYPE_LIQUID | TYPE_GAS | TYPE_ENERGY)) && (r&0xFF)!=PT_SPRK)) { r = sim->photons[y+ry][x+rx]; - if (!r || (r&0xFF)==PT_PRTI || (r&0xFF)==PT_PRTO || (!(sim->elements[r&0xFF].Properties & (TYPE_PART | TYPE_LIQUID | TYPE_GAS | TYPE_ENERGY)) && (r&0xFF)!=PT_SPRK)) + if (!r) continue; } diff --git a/src/simulation/elements/PRTO.cpp b/src/simulation/elements/PRTO.cpp index 4a516572c..e3d693872 100644 --- a/src/simulation/elements/PRTO.cpp +++ b/src/simulation/elements/PRTO.cpp @@ -69,12 +69,9 @@ int Element_PRTO::update(UPDATE_FUNC_ARGS) if (x+rx>=0 && y+ry>0 && x+rx= 0 && y+nyi+nyy >= 0)) { - break; - } - r = pmap[y+nyi+nyy][x+nxi+nxx]; - if((r&0xFF)==PT_PSTN) { - if(parts[r>>8].ctype) - armCount++; - else if (armCount) - { - pistonEndX = x+nxi+nxx; - pistonEndY = y+nyi+nyy; - foundEnd = true; - break; - } - else - pistonCount++; - } else { + for (nxx = 0, nyy = 0, nxi = directionX, nyi = directionY; ; nyy += nyi, nxx += nxi) { + if (!(x+nxi+nxx= 0 && y+nyi+nyy >= 0)) { + break; + } + r = pmap[y+nyi+nyy][x+nxi+nxx]; + if((r&0xFF)==PT_PSTN) { + if(parts[r>>8].ctype) + armCount++; + else if (armCount) + { pistonEndX = x+nxi+nxx; pistonEndY = y+nyi+nyy; foundEnd = true; break; } + else + pistonCount++; + } else { + pistonEndX = x+nxi+nxx; + pistonEndY = y+nyi+nyy; + foundEnd = true; + break; } - if(foundEnd) { - if(state == PISTON_EXTEND) { - if(armCount+pistonCount > armLimit) - pistonCount = armLimit-armCount; - if(pistonCount > 0) { - newSpace = MoveStack(sim, pistonEndX, pistonEndY, directionX, directionY, maxSize, pistonCount, false); - if(newSpace) { - //Create new piston section - for(int j = 0; j < newSpace; j++) { - int nr = sim->create_part(-3, pistonEndX+(nxi*j), pistonEndY+(nyi*j), PT_PSTN); - if (nr!=-1) { - parts[nr].ctype = 1; - } + } + if(foundEnd) { + if(state == PISTON_EXTEND) { + if(armCount+pistonCount > armLimit) + pistonCount = armLimit-armCount; + if(pistonCount > 0) { + newSpace = MoveStack(sim, pistonEndX, pistonEndY, directionX, directionY, maxSize, pistonCount, false); + if(newSpace) { + //Create new piston section + for(int j = 0; j < newSpace; j++) { + int nr = sim->create_part(-3, pistonEndX+(nxi*j), pistonEndY+(nyi*j), PT_PSTN); + if (nr!=-1) { + parts[nr].ctype = 1; } - movedPiston = true; } + movedPiston = true; } - } else if(state == PISTON_RETRACT) { - if(pistonCount > armCount) - pistonCount = armCount; - if(armCount) { - //Remove arm section - int lastPistonX = pistonEndX - nxi; //Go back to the very last piston arm particle - int lastPistonY = pistonEndY - nyi; - for(int j = 0; j < pistonCount; j++) { - sim->delete_part(lastPistonX+(nxi*-j), lastPistonY+(nyi*-j), 0); - } - MoveStack(sim, pistonEndX, pistonEndY, directionX, directionY, maxSize, pistonCount, true); - //newSpace = MoveStack(sim, pistonEndX, pistonEndY, directionX, directionY, maxSize, pistonCount, true); - movedPiston = true; + } + } else if(state == PISTON_RETRACT) { + if(pistonCount > armCount) + pistonCount = armCount; + if(armCount) { + //Remove arm section + int lastPistonX = pistonEndX - nxi; //Go back to the very last piston arm particle + int lastPistonY = pistonEndY - nyi; + for(int j = 0; j < pistonCount; j++) { + sim->delete_part(lastPistonX+(nxi*-j), lastPistonY+(nyi*-j), 0); } + MoveStack(sim, pistonEndX, pistonEndY, directionX, directionY, maxSize, pistonCount, true); + //newSpace = MoveStack(sim, pistonEndX, pistonEndY, directionX, directionY, maxSize, pistonCount, true); + movedPiston = true; } } } - if (movedPiston) break; } @@ -328,4 +326,4 @@ int Element_PSTN::graphics(GRAPHICS_FUNC_ARGS) return 0; } -Element_PSTN::~Element_PSTN() {} \ No newline at end of file +Element_PSTN::~Element_PSTN() {} diff --git a/src/simulation/elements/PUMP.cpp b/src/simulation/elements/PUMP.cpp index 2d62799ff..c8d48ff18 100644 --- a/src/simulation/elements/PUMP.cpp +++ b/src/simulation/elements/PUMP.cpp @@ -50,9 +50,12 @@ Element_PUMP::Element_PUMP() int Element_PUMP::update(UPDATE_FUNC_ARGS) { int r, rx, ry; - if (parts[i].life>0 && parts[i].life!=10) - parts[i].life--; - if (parts[i].life==10) + if (parts[i].life!=10) + { + if (parts[i].life>0) + parts[i].life--; + } + else { if (parts[i].temp>=256.0+273.15) parts[i].temp=256.0+273.15; diff --git a/src/simulation/elements/PVOD.cpp b/src/simulation/elements/PVOD.cpp index 267c7bdd6..2478a7cc7 100644 --- a/src/simulation/elements/PVOD.cpp +++ b/src/simulation/elements/PVOD.cpp @@ -59,14 +59,17 @@ int Element_PVOD::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if ((r&0xFF)==PT_SPRK && parts[r>>8].life>0 && parts[r>>8].life<4) + if ((r&0xFF)==PT_SPRK) { - if (parts[r>>8].ctype==PT_PSCN) - parts[i].life = 10; - else if (parts[r>>8].ctype==PT_NSCN) - parts[i].life = 9; + if (parts[r>>8].life>0 && parts[r>>8].life<4) + { + if (parts[r>>8].ctype==PT_PSCN) + parts[i].life = 10; + else if (parts[r>>8].ctype==PT_NSCN) + parts[i].life = 9; + } } - if ((r&0xFF)==PT_PVOD) + else if ((r&0xFF)==PT_PVOD) { if (parts[i].life==10&&parts[r>>8].life<10&&parts[r>>8].life>0) parts[i].life = 9; @@ -88,4 +91,4 @@ int Element_PVOD::graphics(GRAPHICS_FUNC_ARGS) } -Element_PVOD::~Element_PVOD() {} \ No newline at end of file +Element_PVOD::~Element_PVOD() {} diff --git a/src/simulation/elements/QRTZ.cpp b/src/simulation/elements/QRTZ.cpp index 20aa97dce..e38e11b9c 100644 --- a/src/simulation/elements/QRTZ.cpp +++ b/src/simulation/elements/QRTZ.cpp @@ -49,16 +49,12 @@ Element_QRTZ::Element_QRTZ() //#TPT-Directive ElementHeader Element_QRTZ static int update(UPDATE_FUNC_ARGS) int Element_QRTZ::update(UPDATE_FUNC_ARGS) { - int r, tmp, trade, rx, ry, np, t; - t = parts[i].type; - if (t == PT_QRTZ) + int r, tmp, trade, rx, ry, np; + parts[i].pavg[0] = parts[i].pavg[1]; + parts[i].pavg[1] = sim->pv[y/CELL][x/CELL]; + if (parts[i].pavg[1]-parts[i].pavg[0] > 0.05*(parts[i].temp/3) || parts[i].pavg[1]-parts[i].pavg[0] < -0.05*(parts[i].temp/3)) { - parts[i].pavg[0] = parts[i].pavg[1]; - parts[i].pavg[1] = sim->pv[y/CELL][x/CELL]; - if (parts[i].pavg[1]-parts[i].pavg[0] > 0.05*(parts[i].temp/3) || parts[i].pavg[1]-parts[i].pavg[0] < -0.05*(parts[i].temp/3)) - { - sim->part_change_type(i,x,y,PT_PQRT); - } + sim->part_change_type(i,x,y,PT_PQRT); } // absorb SLTW if (parts[i].ctype!=-1) @@ -69,7 +65,7 @@ int Element_QRTZ::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - else if ((r&0xFF)==PT_SLTW && (1>rand()%2500)) + else if ((r&0xFF)==PT_SLTW && !(rand()%2500)) { sim->kill_part(r>>8); parts[i].ctype ++; @@ -92,11 +88,11 @@ int Element_QRTZ::update(UPDATE_FUNC_ARGS) { parts[np].tmp = parts[i].tmp; parts[i].ctype--; - if (5>rand()%10) + if (rand()%2) { parts[np].ctype=-1;//dead qrtz } - else if (!parts[i].ctype && 1>rand()%15) + else if (!parts[i].ctype && !(rand()%15)) { parts[i].ctype=-1; } @@ -119,7 +115,7 @@ int Element_QRTZ::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if ((r&0xFF)==t && (parts[i].ctype>parts[r>>8].ctype) && parts[r>>8].ctype>=0 )//diffusion + if ((r&0xFF)==PT_QRTZ && (parts[i].ctype>parts[r>>8].ctype) && parts[r>>8].ctype>=0 )//diffusion { tmp = parts[i].ctype - parts[r>>8].ctype; if (tmp ==1) @@ -165,4 +161,4 @@ int Element_QRTZ::graphics(GRAPHICS_FUNC_ARGS) } -Element_QRTZ::~Element_QRTZ() {} \ No newline at end of file +Element_QRTZ::~Element_QRTZ() {} diff --git a/src/simulation/elements/REPL.cpp b/src/simulation/elements/REPL.cpp index b2deaee57..0b68487b5 100644 --- a/src/simulation/elements/REPL.cpp +++ b/src/simulation/elements/REPL.cpp @@ -52,8 +52,8 @@ int Element_REPL::update(UPDATE_FUNC_ARGS) int r, rx, ry, ri; for(ri = 0; ri <= 10; ri++) { - rx = (rand()%20)-10; - ry = (rand()%20)-10; + rx = (rand()%21)-10; + ry = (rand()%21)-10; if (x+rx>=0 && y+ry>0 && x+rx=0 && y+ry>0 && x+rxrand()%200&&parts[i].life==0) + if (11>rand()%40) { sim->part_change_type(i,x,y,PT_SHLD2); parts[i].life = 7; @@ -74,7 +74,7 @@ int Element_SHLD1::update(UPDATE_FUNC_ARGS) } } } - else if ((r&0xFF)==PT_SHLD3&&4>rand()%10) + else if ((r&0xFF)==PT_SHLD3&&2>rand()%5) { sim->part_change_type(i,x,y,PT_SHLD2); parts[i].life = 7; @@ -85,4 +85,4 @@ int Element_SHLD1::update(UPDATE_FUNC_ARGS) -Element_SHLD1::~Element_SHLD1() {} \ No newline at end of file +Element_SHLD1::~Element_SHLD1() {} diff --git a/src/simulation/elements/SHLD2.cpp b/src/simulation/elements/SHLD2.cpp index c00e4c9c0..c5f3504d1 100644 --- a/src/simulation/elements/SHLD2.cpp +++ b/src/simulation/elements/SHLD2.cpp @@ -55,13 +55,15 @@ int Element_SHLD2::update(UPDATE_FUNC_ARGS) if (x+rx>=0 && y+ry>0 && x+rx0) - sim->create_part(-1,x+rx,y+ry,PT_SHLD1); if (!r) + { + if ( parts[i].life>0) + sim->create_part(-1,x+rx,y+ry,PT_SHLD1); continue; + } else if ((r&0xFF)==PT_SPRK&&parts[i].life==0) { - if (25>rand()%200&&parts[i].life==0) + if (!(rand()%8)) { sim->part_change_type(i,x,y,PT_SHLD3); parts[i].life = 7; @@ -77,7 +79,7 @@ int Element_SHLD2::update(UPDATE_FUNC_ARGS) } } } - else if ((r&0xFF)==PT_SHLD4&&4>rand()%10) + else if ((r&0xFF)==PT_SHLD4&&2>rand()%5) { sim->part_change_type(i,x,y,PT_SHLD3); parts[i].life = 7; @@ -88,4 +90,4 @@ int Element_SHLD2::update(UPDATE_FUNC_ARGS) -Element_SHLD2::~Element_SHLD2() {} \ No newline at end of file +Element_SHLD2::~Element_SHLD2() {} diff --git a/src/simulation/elements/SHLD3.cpp b/src/simulation/elements/SHLD3.cpp index 633a8c42b..64a9c1f8f 100644 --- a/src/simulation/elements/SHLD3.cpp +++ b/src/simulation/elements/SHLD3.cpp @@ -57,16 +57,14 @@ int Element_SHLD3::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) { - if (1>rand()%2500) + if (!(rand()%2500)) { np = sim->create_part(-1,x+rx,y+ry,PT_SHLD1); if (np<0) continue; parts[np].life=7; sim->part_change_type(i,x,y,PT_SHLD2); } - else - continue; - + continue; } if ((r&0xFF)==PT_SHLD1 && parts[i].life>3) { @@ -75,7 +73,7 @@ int Element_SHLD3::update(UPDATE_FUNC_ARGS) } else if ((r&0xFF)==PT_SPRK&&parts[i].life==0) { - if (18>rand()%3000&&parts[i].life==0) + if (3>rand()%500) { sim->part_change_type(i,x,y,PT_SHLD4); parts[i].life = 7; @@ -98,4 +96,4 @@ int Element_SHLD3::update(UPDATE_FUNC_ARGS) -Element_SHLD3::~Element_SHLD3() {} \ No newline at end of file +Element_SHLD3::~Element_SHLD3() {} diff --git a/src/simulation/elements/SHLD4.cpp b/src/simulation/elements/SHLD4.cpp index 95c8ae4a3..3ce498876 100644 --- a/src/simulation/elements/SHLD4.cpp +++ b/src/simulation/elements/SHLD4.cpp @@ -57,15 +57,14 @@ int Element_SHLD4::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) { - if (1>rand()%5500) + if (!(rand()%5500)) { np = sim->create_part(-1,x+rx,y+ry,PT_SHLD1); if (np<0) continue; parts[np].life=7; sim->part_change_type(i,x,y,PT_SHLD2); } - else - continue; + continue; } if ((r&0xFF)==PT_SHLD2 && parts[i].life>3) @@ -89,4 +88,4 @@ int Element_SHLD4::update(UPDATE_FUNC_ARGS) } -Element_SHLD4::~Element_SHLD4() {} \ No newline at end of file +Element_SHLD4::~Element_SHLD4() {} diff --git a/src/simulation/elements/SING.cpp b/src/simulation/elements/SING.cpp index 78641a85a..878dac3b6 100644 --- a/src/simulation/elements/SING.cpp +++ b/src/simulation/elements/SING.cpp @@ -121,7 +121,7 @@ int Element_SING::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if ((r&0xFF)!=PT_DMND&&33>=rand()/(RAND_MAX/100)+1) + if ((r&0xFF)!=PT_DMND&& !(rand()%3)) { if ((r&0xFF)==PT_SING && parts[r>>8].life >10) { @@ -133,7 +133,7 @@ int Element_SING::update(UPDATE_FUNC_ARGS) { if (parts[i].life+3 > 255) { - if (parts[r>>8].type!=PT_SING && 1>rand()%100) + if (parts[r>>8].type!=PT_SING && !(rand()%100)) { int np; np = sim->create_part(r>>8,x+rx,y+ry,PT_SING); diff --git a/src/simulation/elements/SLTW.cpp b/src/simulation/elements/SLTW.cpp index 1a7586fdb..7ff1b0be9 100644 --- a/src/simulation/elements/SLTW.cpp +++ b/src/simulation/elements/SLTW.cpp @@ -55,24 +55,37 @@ int Element_SLTW::update(UPDATE_FUNC_ARGS) if (x+rx>=0 && y+ry>0 && x+rx(rand()%10000)) - sim->part_change_type(r>>8,x+rx,y+ry,PT_SLTW); - if ((r&0xFF)==PT_PLNT&&5>(rand()%1000)) - sim->kill_part(r>>8); - if (((r&0xFF)==PT_RBDM||(r&0xFF)==PT_LRBD) && (sim->legacy_enable||parts[i].temp>(273.15f+12.0f)) && 1>(rand()%500)) + switch (r&0xFF) { - sim->part_change_type(i,x,y,PT_FIRE); - parts[i].life = 4; - parts[i].ctype = PT_WATR; - } - if ((r&0xFF)==PT_FIRE && parts[r>>8].ctype!=PT_WATR){ - sim->kill_part(r>>8); - if(1>(rand()%150)){ - sim->kill_part(i); - return 1; + case PT_SALT: + if (!(rand()%10000)) + sim->part_change_type(r>>8,x+rx,y+ry,PT_SLTW); + break; + case PT_PLNT: + if (!(rand()%200)) + sim->kill_part(r>>8); + break; + case PT_RBDM: + case PT_LRBD: + if ((sim->legacy_enable||parts[i].temp>(273.15f+12.0f)) && !(rand()%500)) + { + sim->part_change_type(i,x,y,PT_FIRE); + parts[i].life = 4; + parts[i].ctype = PT_WATR; } + break; + case PT_FIRE: + if (parts[r>>8].ctype!=PT_WATR) + { + sim->kill_part(r>>8); + if(!(rand()%150)){ + sim->kill_part(i); + return 1; + } + } + break; + default: + continue; } } return 0; diff --git a/src/simulation/elements/SNOW.cpp b/src/simulation/elements/SNOW.cpp index 4e592f77c..4d46a6a34 100644 --- a/src/simulation/elements/SNOW.cpp +++ b/src/simulation/elements/SNOW.cpp @@ -61,7 +61,7 @@ int Element_SNOW::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if (((r&0xFF)==PT_SALT || (r&0xFF)==PT_SLTW) && 1>(rand()%1000)) + if (((r&0xFF)==PT_SALT || (r&0xFF)==PT_SLTW) && !(rand()%1000)) { sim->part_change_type(i,x,y,PT_SLTW); sim->part_change_type(r>>8,x+rx,y+ry,PT_SLTW); diff --git a/src/simulation/elements/SOAP.cpp b/src/simulation/elements/SOAP.cpp index 1d3a55b71..b03f6a5c8 100644 --- a/src/simulation/elements/SOAP.cpp +++ b/src/simulation/elements/SOAP.cpp @@ -89,9 +89,7 @@ int Element_SOAP::update(UPDATE_FUNC_ARGS) if ((parts[i].ctype&6) != 6 && (parts[i].ctype&6)) { int target; - target = i; - while((parts[target].ctype&6) != 6 && (parts[target].ctype&6)) { if (parts[target].ctype&2) @@ -99,7 +97,6 @@ int Element_SOAP::update(UPDATE_FUNC_ARGS) target = parts[target].tmp; sim->detach(target); } - if (parts[target].ctype&4) { target = parts[target].tmp2; @@ -107,20 +104,14 @@ int Element_SOAP::update(UPDATE_FUNC_ARGS) } } } - if ((parts[i].ctype&6) != 6) parts[i].ctype = 0; - if ((parts[i].ctype&6) == 6 && (parts[parts[i].tmp].ctype&6) == 6 && parts[parts[i].tmp].tmp == i) sim->detach(i); } - - parts[i].vy -= 0.1f; - - parts[i].vy *= 0.5f; + parts[i].vy = (parts[i].vy-0.1f)*0.5f; parts[i].vx *= 0.5f; } - if(!(parts[i].ctype&2)) { for (rx=-2; rx<3; rx++) @@ -130,7 +121,6 @@ int Element_SOAP::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if ((parts[r>>8].type == PT_SOAP) && (parts[r>>8].ctype&1) && !(parts[r>>8].ctype&4)) Element_SOAP::attach(parts, i, r>>8); } @@ -145,73 +135,59 @@ int Element_SOAP::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r && !sim->bmap[(y+ry)/CELL][(x+rx)/CELL]) continue; - if (parts[i].temp>0) { if (sim->bmap[(y+ry)/CELL][(x+rx)/CELL] - || (r && sim->elements[r&0xFF].State != ST_GAS - && (r&0xFF) != PT_SOAP && (r&0xFF) != PT_GLAS)) + || (r && sim->elements[r&0xFF].State != ST_GAS + && (r&0xFF) != PT_SOAP && (r&0xFF) != PT_GLAS)) { sim->detach(i); continue; } } - - if ((r&0xFF) == PT_SOAP && parts[r>>8].ctype == 1) + if ((r&0xFF) == PT_SOAP) { - int buf; - - buf = parts[i].tmp; - - parts[i].tmp = r>>8; - parts[buf].tmp2 = r>>8; - parts[r>>8].tmp2 = i; - parts[r>>8].tmp = buf; - parts[r>>8].ctype = 7; - } - - if ((r&0xFF) == PT_SOAP && parts[r>>8].ctype == 7 && parts[i].tmp != r>>8 && parts[i].tmp2 != r>>8) - { - int buf; - - parts[parts[i].tmp].tmp2 = parts[r>>8].tmp2; - parts[parts[r>>8].tmp2].tmp = parts[i].tmp; - parts[r>>8].tmp2 = i; - parts[i].tmp = r>>8; + if (parts[r>>8].ctype == 1) + { + int buf; + buf = parts[i].tmp; + parts[i].tmp = r>>8; + parts[buf].tmp2 = r>>8; + parts[r>>8].tmp2 = i; + parts[r>>8].tmp = buf; + parts[r>>8].ctype = 7; + } + else if (parts[r>>8].ctype == 7 && parts[i].tmp != r>>8 && parts[i].tmp2 != r>>8) + { + int buf; + parts[parts[i].tmp].tmp2 = parts[r>>8].tmp2; + parts[parts[r>>8].tmp2].tmp = parts[i].tmp; + parts[r>>8].tmp2 = i; + parts[i].tmp = r>>8; + } } } } - if(parts[i].ctype&2) { float d, dx, dy; - dx = parts[i].x - parts[parts[i].tmp].x; dy = parts[i].y - parts[parts[i].tmp].y; - d = 9/(pow(dx, 2)+pow(dy, 2)+9)-0.5; - parts[parts[i].tmp].vx -= dx*d; parts[parts[i].tmp].vy -= dy*d; - parts[i].vx += dx*d; parts[i].vy += dy*d; - if ((parts[parts[i].tmp].ctype&2) && (parts[parts[i].tmp].ctype&1) && (parts[parts[parts[i].tmp].tmp].ctype&2) && (parts[parts[parts[i].tmp].tmp].ctype&1)) { int ii; - ii = parts[parts[parts[i].tmp].tmp].tmp; - dx = parts[ii].x - parts[parts[i].tmp].x; dy = parts[ii].y - parts[parts[i].tmp].y; - d = 81/(pow(dx, 2)+pow(dy, 2)+81)-0.5; - parts[parts[i].tmp].vx -= dx*d*0.5f; parts[parts[i].tmp].vy -= dy*d*0.5f; - parts[ii].vx += dx*d*0.5f; parts[ii].vy += dy*d*0.5f; } @@ -224,7 +200,6 @@ int Element_SOAP::update(UPDATE_FUNC_ARGS) parts[i].ctype = 1; parts[i].life = 10; } - for (rx=-2; rx<3; rx++) for (ry=-2; ry<3; ry++) if (x+rx>=0 && y+ry>0 && x+rx>8].vx)/2; ay = (parts[i].vy + parts[r>>8].vy)/2; - - parts[i].vx = ax; - parts[i].vy = ay; - parts[r>>8].vx = ax; - parts[r>>8].vy = ay; + parts[i].vx = parts[r>>8].vx = ax; + parts[i].vy = parts[r>>8].vy = ay; } } } - for (rx=-2; rx<3; rx++) for (ry=-2; ry<3; ry++) if (x+rx>=0 && y+ry>0 && x+rx>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; } } diff --git a/src/simulation/elements/SPNG.cpp b/src/simulation/elements/SPNG.cpp index 95dd12f62..de32c24b6 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+rxrand()%absorbChanceDenom) + switch (r&0xFF) { - parts[i].life++; - sim->kill_part(r>>8); - } - if ((r&0xFF)==PT_SLTW && parts[i].liferand()%absorbChanceDenom) - { - parts[i].life++; - if (rand()%4) + case PT_WATR: + case PT_DSTW: + case PT_FRZW: + if (parts[i].liferand()%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].liferand()%absorbChanceDenom) - { - parts[i].life++; - sim->part_change_type(r>>8, x+rx, y+ry, PT_CO2); - } - if ((r&0xFF)==PT_PSTE && parts[i].liferand()%absorbChanceDenom) - { - parts[i].life++; - sim->create_part(r>>8, x+rx, y+ry, PT_CLST); + } + break; + case PT_SLTW: + if (parts[i].liferand()%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].liferand()%absorbChanceDenom) + { + parts[i].life++; + sim->part_change_type(r>>8, x+rx, y+ry, PT_CO2); + } + break; + case PT_PSTE: + if (parts[i].liferand()%absorbChanceDenom) + { + parts[i].life++; + sim->create_part(r>>8, x+rx, y+ry, PT_CLST); + } + break; + default: + continue; } } } diff --git a/src/simulation/elements/SPRK.cpp b/src/simulation/elements/SPRK.cpp index 09638ff87..cedbaa97c 100644 --- a/src/simulation/elements/SPRK.cpp +++ b/src/simulation/elements/SPRK.cpp @@ -78,29 +78,35 @@ int Element_SPRK::update(UPDATE_FUNC_ARGS) { Element_NTCT::update(UPDATE_FUNC_SUBCALL_ARGS); } - else if (ct==PT_ETRD&&parts[i].life==1) + else if (ct==PT_ETRD) { - nearp = sim->nearest_part(i, PT_ETRD, -1); - if (nearp!=-1 && sim->parts_avg(i, nearp, PT_INSL)!=PT_INSL) + if (parts[i].life==1) { - sim->CreateLine(x, y, (int)(parts[nearp].x+0.5f), (int)(parts[nearp].y+0.5f), 0, 0, PT_PLSM, 0); - sim->part_change_type(i,x,y,ct); - ct = parts[i].ctype = PT_NONE; - parts[i].life = 20; - sim->part_change_type(nearp,(int)(parts[nearp].x+0.5f),(int)(parts[nearp].y+0.5f),PT_SPRK); - parts[nearp].life = 9; - parts[nearp].ctype = PT_ETRD; + nearp = sim->nearest_part(i, PT_ETRD, -1); + if (nearp!=-1 && sim->parts_avg(i, nearp, PT_INSL)!=PT_INSL) + { + sim->CreateLine(x, y, (int)(parts[nearp].x+0.5f), (int)(parts[nearp].y+0.5f), 0, 0, PT_PLSM, 0); + sim->part_change_type(i,x,y,ct); + ct = parts[i].ctype = PT_NONE; + parts[i].life = 20; + sim->part_change_type(nearp,(int)(parts[nearp].x+0.5f),(int)(parts[nearp].y+0.5f),PT_SPRK); + parts[nearp].life = 9; + parts[nearp].ctype = PT_ETRD; + } } } - else if (ct==PT_NBLE&&parts[i].life<=1&&parts[i].tmp!=1) + else if (ct==PT_NBLE) { - parts[i].life = rand()%150+50; - sim->part_change_type(i,x,y,PT_PLSM); - parts[i].ctype = PT_NBLE; - if (parts[i].temp > 5273.15) - parts[i].tmp |= 4; - parts[i].temp = 3500; - sim->pv[y/CELL][x/CELL] += 1; + if (parts[i].life<=1&&parts[i].tmp!=1) + { + parts[i].life = rand()%150+50; + sim->part_change_type(i,x,y,PT_PLSM); + parts[i].ctype = PT_NBLE; + if (parts[i].temp > 5273.15) + parts[i].tmp |= 4; + parts[i].temp = 3500; + sim->pv[y/CELL][x/CELL] += 1; + } } else if (ct==PT_TESC) // tesla coil code { @@ -162,7 +168,7 @@ int Element_SPRK::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - rt = parts[r>>8].type; + rt = r&0xFF; conduct_sprk = 1; @@ -211,28 +217,28 @@ int Element_SPRK::update(UPDATE_FUNC_ARGS) } if (ct==PT_NTCT && !(rt==PT_PSCN || rt==PT_NTCT || (rt==PT_NSCN&&parts[i].temp>373.0f))) conduct_sprk = 0; - if (ct==PT_PTCT && !(rt==PT_PSCN || rt==PT_PTCT || (rt==PT_NSCN&&parts[i].temp<373.0f))) + else if (ct==PT_PTCT && !(rt==PT_PSCN || rt==PT_PTCT || (rt==PT_NSCN&&parts[i].temp<373.0f))) conduct_sprk = 0; - if (ct==PT_INWR && !(rt==PT_NSCN || rt==PT_INWR || rt==PT_PSCN)) + else if (ct==PT_INWR && !(rt==PT_NSCN || rt==PT_INWR || rt==PT_PSCN)) conduct_sprk = 0; - if (ct==PT_NSCN && rt==PT_PSCN) + else if (ct==PT_NSCN && rt==PT_PSCN) conduct_sprk = 0; - if (ct==PT_ETRD && !(rt==PT_METL||rt==PT_ETRD||rt==PT_BMTL||rt==PT_BRMT||rt==PT_LRBD||rt==PT_RBDM||rt==PT_PSCN||rt==PT_NSCN)) + else if (ct==PT_ETRD && !(rt==PT_METL||rt==PT_ETRD||rt==PT_BMTL||rt==PT_BRMT||rt==PT_LRBD||rt==PT_RBDM||rt==PT_PSCN||rt==PT_NSCN)) conduct_sprk = 0; - if (ct==PT_INST&&rt!=PT_NSCN) conduct_sprk = 0; - if (ct==PT_SWCH && (rt==PT_PSCN||rt==PT_NSCN||rt==PT_WATR||rt==PT_SLTW||rt==PT_NTCT||rt==PT_PTCT||rt==PT_INWR)) + else if (ct==PT_INST && rt!=PT_NSCN) conduct_sprk = 0; + else if (ct==PT_SWCH && (rt==PT_PSCN||rt==PT_NSCN||rt==PT_WATR||rt==PT_SLTW||rt==PT_NTCT||rt==PT_PTCT||rt==PT_INWR)) conduct_sprk = 0; - if (rt==PT_QRTZ && !((ct==PT_NSCN||ct==PT_METL||ct==PT_PSCN||ct==PT_QRTZ) && (parts[r>>8].temp<173.15||sim->pv[(y+ry)/CELL][(x+rx)/CELL]>8))) + else if (rt==PT_QRTZ && !((ct==PT_NSCN||ct==PT_METL||ct==PT_PSCN||ct==PT_QRTZ) && (parts[r>>8].temp<173.15||sim->pv[(y+ry)/CELL][(x+rx)/CELL]>8))) conduct_sprk = 0; - if (rt==PT_NTCT && !(ct==PT_NSCN || ct==PT_NTCT || (ct==PT_PSCN&&parts[r>>8].temp>373.0f))) + else if (rt==PT_NTCT && !(ct==PT_NSCN || ct==PT_NTCT || (ct==PT_PSCN&&parts[r>>8].temp>373.0f))) conduct_sprk = 0; - if (rt==PT_PTCT && !(ct==PT_NSCN || ct==PT_PTCT || (ct==PT_PSCN&&parts[r>>8].temp<373.0f))) + else if (rt==PT_PTCT && !(ct==PT_NSCN || ct==PT_PTCT || (ct==PT_PSCN&&parts[r>>8].temp<373.0f))) conduct_sprk = 0; - if (rt==PT_INWR && !(ct==PT_NSCN || ct==PT_INWR || ct==PT_PSCN)) + else if (rt==PT_INWR && !(ct==PT_NSCN || ct==PT_INWR || ct==PT_PSCN)) conduct_sprk = 0; - if (rt==PT_INST&&ct!=PT_PSCN) + else if (rt==PT_INST && ct!=PT_PSCN) conduct_sprk = 0; - if (rt == PT_NBLE && parts[r>>8].tmp == 1) + else if (rt==PT_NBLE && parts[r>>8].tmp == 1) conduct_sprk = 0; if (conduct_sprk) { @@ -287,4 +293,4 @@ int Element_SPRK::graphics(GRAPHICS_FUNC_ARGS) } -Element_SPRK::~Element_SPRK() {} \ No newline at end of file +Element_SPRK::~Element_SPRK() {} diff --git a/src/simulation/elements/THDR.cpp b/src/simulation/elements/THDR.cpp index 6ee1dea6c..9d35b5212 100644 --- a/src/simulation/elements/THDR.cpp +++ b/src/simulation/elements/THDR.cpp @@ -48,8 +48,9 @@ Element_THDR::Element_THDR() //#TPT-Directive ElementHeader Element_THDR static int update(UPDATE_FUNC_ARGS) int Element_THDR::update(UPDATE_FUNC_ARGS) - { - int r, rx, ry; +{ + int r, rx, ry, rt; + bool kill; for (rx=-2; rx<3; rx++) for (ry=-2; ry<3; ry++) if (x+rx>=0 && y+ry>0 && x+rxelements[r&0xFF].Properties&PROP_CONDUCTS) && parts[r>>8].life==0 && !((r&0xFF)==PT_WATR||(r&0xFF)==PT_SLTW) && parts[r>>8].ctype!=PT_SPRK) + rt = r&0xFF; + if ((sim->elements[r&0xFF].Properties&PROP_CONDUCTS) && parts[r>>8].life==0 && !(rt==PT_WATR||rt==PT_SLTW) && parts[r>>8].ctype!=PT_SPRK) { - parts[i].type = PT_NONE; parts[r>>8].ctype = parts[r>>8].type; sim->part_change_type(r>>8,x+rx,y+ry,PT_SPRK); parts[r>>8].life = 4; + kill = true; } - else if ((r&0xFF)!=PT_CLNE&&(r&0xFF)!=PT_THDR&&(r&0xFF)!=PT_SPRK&&(r&0xFF)!=PT_DMND&&(r&0xFF)!=PT_FIRE&&(r&0xFF)!=PT_NEUT&&(r&0xFF)!=PT_PHOT&&(r&0xFF)) + else if (rt!=PT_CLNE&&rt!=PT_THDR&&rt!=PT_SPRK&&rt!=PT_DMND&&rt!=PT_FIRE) { sim->pv[y/CELL][x/CELL] += 100.0f; if (sim->legacy_enable&&1>(rand()%200)) @@ -73,12 +75,10 @@ int Element_THDR::update(UPDATE_FUNC_ARGS) sim->part_change_type(i,x,y,PT_FIRE); } else - { - parts[i].type = PT_NONE; - } + kill=true; } } - if (parts[i].type==PT_NONE) { + if (kill) { sim->kill_part(i); return 1; } diff --git a/src/simulation/elements/THRM.cpp b/src/simulation/elements/THRM.cpp index e7d1dde8e..bd1469263 100644 --- a/src/simulation/elements/THRM.cpp +++ b/src/simulation/elements/THRM.cpp @@ -59,7 +59,7 @@ int Element_THRM::update(UPDATE_FUNC_ARGS) continue; if (((r&0xFF)==PT_FIRE || (r&0xFF)==PT_PLSM || (r&0xFF)==PT_LAVA)) // TODO: could this go in update_PYRO? { - if (1>(rand()%500)) { + if (!(rand()%500)) { sim->part_change_type(i,x,y,PT_LAVA); parts[i].ctype = PT_BMTL; parts[i].temp = 3500.0f; @@ -77,4 +77,4 @@ int Element_THRM::update(UPDATE_FUNC_ARGS) } -Element_THRM::~Element_THRM() {} \ No newline at end of file +Element_THRM::~Element_THRM() {} diff --git a/src/simulation/elements/TRON.cpp b/src/simulation/elements/TRON.cpp index 51f1f7365..e31d77fbc 100644 --- a/src/simulation/elements/TRON.cpp +++ b/src/simulation/elements/TRON.cpp @@ -91,7 +91,6 @@ void Element_TRON::init_graphics() //#TPT-Directive ElementHeader Element_TRON static int update(UPDATE_FUNC_ARGS) int Element_TRON::update(UPDATE_FUNC_ARGS) { - int r, rx, ry, np; if (parts[i].tmp&TRON_WAIT) { parts[i].tmp &= ~TRON_WAIT; diff --git a/src/simulation/elements/TSNS.cpp b/src/simulation/elements/TSNS.cpp index ae390058c..0463a01e1 100644 --- a/src/simulation/elements/TSNS.cpp +++ b/src/simulation/elements/TSNS.cpp @@ -61,7 +61,7 @@ int Element_TSNS::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - rt = parts[r>>8].type; + rt = r&0xFF; if (sim->parts_avg(i,r>>8,PT_INSL) != PT_INSL) { if ((sim->elements[rt].Properties&PROP_CONDUCTS) && !(rt==PT_WATR||rt==PT_SLTW||rt==PT_NTCT||rt==PT_PTCT||rt==PT_INWR) && parts[r>>8].life==0) @@ -82,7 +82,7 @@ int Element_TSNS::update(UPDATE_FUNC_ARGS) r = sim->photons[y+ry][x+rx]; if(!r) continue; - if (parts[r>>8].temp > parts[i].temp && parts[r>>8].type != PT_TSNS && parts[r>>8].type != PT_METL) + if ((r&0xFF)!=PT_TSNS && (r&0xFF)!=PT_METL && parts[r>>8].temp > parts[i].temp) parts[i].life = 1; } return 0; diff --git a/src/simulation/elements/VIBR.cpp b/src/simulation/elements/VIBR.cpp index 7a8c30c2f..a5ad8b1ac 100644 --- a/src/simulation/elements/VIBR.cpp +++ b/src/simulation/elements/VIBR.cpp @@ -50,15 +50,7 @@ Element_VIBR::Element_VIBR() int Element_VIBR::update(UPDATE_FUNC_ARGS) { int r, rx, ry; int trade, transfer; - if (parts[i].ctype == 1) //leaving in, just because - { - if (sim->pv[y/CELL][x/CELL] > -2.5 || parts[i].tmp) - { - parts[i].ctype = 0; - sim->part_change_type(i, x, y, PT_VIBR); - } - } - else if (!parts[i].life) //if not exploding + if (!parts[i].life) //if not exploding { //Heat absorption code if (parts[i].temp > 274.65f) @@ -158,12 +150,12 @@ int Element_VIBR::update(UPDATE_FUNC_ARGS) { sim->part_change_type(i,x,y,PT_BVBR); sim->pv[y/CELL][x/CELL] -= 1; } - else if (parts[i].life && ((r&0xFF)==PT_VIBR || (r&0xFF)==PT_BVBR) && !parts[r>>8].life) + else if (((r&0xFF)==PT_VIBR || (r&0xFF)==PT_BVBR) && parts[i].life && !parts[r>>8].life) { parts[r>>8].tmp += 10; } //Absorbs energy particles - if ((sim->elements[r&0xFF].Properties & TYPE_ENERGY) && !parts[i].life) + else if ((sim->elements[r&0xFF].Properties & TYPE_ENERGY) && !parts[i].life) { parts[i].tmp += 20; sim->kill_part(r>>8); diff --git a/src/simulation/elements/VINE.cpp b/src/simulation/elements/VINE.cpp index e31c8cd8e..973aad63f 100644 --- a/src/simulation/elements/VINE.cpp +++ b/src/simulation/elements/VINE.cpp @@ -48,19 +48,19 @@ Element_VINE::Element_VINE() //#TPT-Directive ElementHeader Element_VINE static int update(UPDATE_FUNC_ARGS) int Element_VINE::update(UPDATE_FUNC_ARGS) - { +{ int r, np, rx =(rand()%3)-1, ry=(rand()%3)-1; if (x+rx>=0 && y+ry>0 && x+rxrand()%15) + if (!(rand()%15)) sim->part_change_type(i,x,y,PT_PLNT); else if (!r) { np = sim->create_part(-1,x+rx,y+ry,PT_VINE); if (np<0) return 0; parts[np].temp = parts[i].temp; - parts[i].tmp = 1; + parts[i].tmp = 1; sim->part_change_type(i,x,y,PT_PLNT); } } @@ -88,4 +88,4 @@ int Element_VINE::graphics(GRAPHICS_FUNC_ARGS) } -Element_VINE::~Element_VINE() {} \ No newline at end of file +Element_VINE::~Element_VINE() {} diff --git a/src/simulation/elements/WARP.cpp b/src/simulation/elements/WARP.cpp index 5dd19c510..312e2e6ab 100644 --- a/src/simulation/elements/WARP.cpp +++ b/src/simulation/elements/WARP.cpp @@ -54,7 +54,7 @@ int Element_WARP::update(UPDATE_FUNC_ARGS) { parts[i].temp = 10000; sim->pv[y/CELL][x/CELL] += (parts[i].tmp2/5000) * CFDS; - if (2>rand()%100) + if (!(rand()%50)) sim->create_part(-3, x, y, PT_ELEC); } for ( trade = 0; trade<5; trade ++) diff --git a/src/simulation/elements/WATR.cpp b/src/simulation/elements/WATR.cpp index f0fde66d8..513ab6012 100644 --- a/src/simulation/elements/WATR.cpp +++ b/src/simulation/elements/WATR.cpp @@ -57,22 +57,22 @@ int Element_WATR::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if ((r&0xFF)==PT_SALT && 1>(rand()%250)) + if ((r&0xFF)==PT_SALT && !(rand()%250)) { sim->part_change_type(i,x,y,PT_SLTW); // on average, convert 3 WATR to SLTW before SALT turns into SLTW - if (rand()%3==0) - sim->part_change_type(r>>8,x+rx,y+ry,PT_SLTW); + if (!(rand()%3)) + sim->part_change_type(r>>8,x+rx,y+ry,PT_SLTW); } - if (((r&0xFF)==PT_RBDM||(r&0xFF)==PT_LRBD) && (sim->legacy_enable||parts[i].temp>(273.15f+12.0f)) && 1>(rand()%500)) + else if (((r&0xFF)==PT_RBDM||(r&0xFF)==PT_LRBD) && (sim->legacy_enable||parts[i].temp>(273.15f+12.0f)) && !(rand()%500)) { sim->part_change_type(i,x,y,PT_FIRE); parts[i].life = 4; parts[i].ctype = PT_WATR; } - if ((r&0xFF)==PT_FIRE && parts[r>>8].ctype!=PT_WATR){ + else if ((r&0xFF)==PT_FIRE && parts[r>>8].ctype!=PT_WATR){ sim->kill_part(r>>8); - if(1>(rand()%150)){ + if(!(rand()%150)){ sim->kill_part(i); return 1; } diff --git a/src/simulation/elements/WIRE.cpp b/src/simulation/elements/WIRE.cpp index d381c733e..c4ccd252e 100644 --- a/src/simulation/elements/WIRE.cpp +++ b/src/simulation/elements/WIRE.cpp @@ -48,46 +48,47 @@ Element_WIRE::Element_WIRE() //#TPT-Directive ElementHeader Element_WIRE static int update(UPDATE_FUNC_ARGS) int Element_WIRE::update(UPDATE_FUNC_ARGS) - { - int s,r,rx,ry,count; - /* - 0: wire - 1: spark head - 2: spark tail +{ + int s,r,rx,ry,count; + /* + 0: wire + 1: spark head + 2: spark tail - tmp is previous state, ctype is current state - */ - //parts[i].tmp=parts[i].ctype; - parts[i].ctype=0; - if(parts[i].tmp==1) + tmp is previous state, ctype is current state + */ + //parts[i].tmp=parts[i].ctype; + parts[i].ctype=0; + if (parts[i].tmp==1) { parts[i].ctype=2; } - if(parts[i].tmp==2) + else if (parts[i].tmp==2) { parts[i].ctype=0; } - - count=0; - for(rx=-1; rx<2; rx++) - for(ry=-1; ry<2; ry++) - { - if(x+rx>=0 && y+ry>0 && x+rx=0 && y+ry>0 && x+rx>8].life==3 && parts[r>>8].ctype==PT_PSCN) + if ((r&0xFF)==PT_SPRK && parts[r>>8].life==3 && parts[r>>8].ctype==PT_PSCN) { parts[i].ctype=1; return 0; } - else if((r&0xFF)==PT_NSCN && parts[i].tmp==1){sim->create_part(-1, x+rx, y+ry, PT_SPRK);} - else if((r&0xFF)==PT_WIRE && parts[r>>8].tmp==1 && !parts[i].tmp){count++;} - } - } - if(count==1 || count==2) - parts[i].ctype=1; + else if ((r&0xFF)==PT_NSCN && parts[i].tmp==1) + sim->create_part(-1, x+rx, y+ry, PT_SPRK); + else if ((r&0xFF)==PT_WIRE && parts[r>>8].tmp==1 && !parts[i].tmp) + count++; + } + } + if (count==1 || count==2) + parts[i].ctype=1; return 0; } @@ -124,4 +125,4 @@ int Element_WIRE::graphics(GRAPHICS_FUNC_ARGS) } -Element_WIRE::~Element_WIRE() {} \ No newline at end of file +Element_WIRE::~Element_WIRE() {} diff --git a/src/simulation/elements/WTRV.cpp b/src/simulation/elements/WTRV.cpp index fb72db8dc..d58b371bd 100644 --- a/src/simulation/elements/WTRV.cpp +++ b/src/simulation/elements/WTRV.cpp @@ -57,7 +57,7 @@ int Element_WTRV::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if (((r&0xFF)==PT_RBDM||(r&0xFF)==PT_LRBD) && !sim->legacy_enable && parts[i].temp>(273.15f+12.0f) && 1>(rand()%500)) + if (((r&0xFF)==PT_RBDM||(r&0xFF)==PT_LRBD) && !sim->legacy_enable && parts[i].temp>(273.15f+12.0f) && !(rand()%500)) { sim->part_change_type(i,x,y,PT_FIRE); parts[i].life = 4; @@ -70,4 +70,4 @@ int Element_WTRV::update(UPDATE_FUNC_ARGS) } -Element_WTRV::~Element_WTRV() {} \ No newline at end of file +Element_WTRV::~Element_WTRV() {} diff --git a/src/simulation/elements/YEST.cpp b/src/simulation/elements/YEST.cpp index 99df265f0..f54419248 100644 --- a/src/simulation/elements/YEST.cpp +++ b/src/simulation/elements/YEST.cpp @@ -57,7 +57,7 @@ int Element_YEST::update(UPDATE_FUNC_ARGS) r = pmap[y+ry][x+rx]; if (!r) continue; - if ((r&0xFF)==PT_DYST && 1>(rand()%30) && !sim->legacy_enable) + if ((r&0xFF)==PT_DYST && !(rand()%30) && !sim->legacy_enable) { sim->part_change_type(i,x,y,PT_DYST); } @@ -69,4 +69,4 @@ int Element_YEST::update(UPDATE_FUNC_ARGS) } -Element_YEST::~Element_YEST() {} \ No newline at end of file +Element_YEST::~Element_YEST() {}