summaryrefslogtreecommitdiff
path: root/src/simulation/elements/H2.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-08-21 00:09:37 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-08-21 00:09:37 (GMT)
commitc9997f8aeaacf3c823c56a66835552d2b4c0372e (patch)
tree591badfddeeffe0a173f460c5136ca2124c971b4 /src/simulation/elements/H2.cpp
parentba1ce66968c4e8c016e463cb52d928f0b018b005 (diff)
parentadd4226f316b2e7abd0b988ef27cb4a7ca143c31 (diff)
downloadpowder-c9997f8aeaacf3c823c56a66835552d2b4c0372e.zip
powder-c9997f8aeaacf3c823c56a66835552d2b4c0372e.tar.gz
Merge branch 'master' of github.com:FacialTurd/PowderToypp
Diffstat (limited to 'src/simulation/elements/H2.cpp')
-rw-r--r--src/simulation/elements/H2.cpp121
1 files changed, 70 insertions, 51 deletions
diff --git a/src/simulation/elements/H2.cpp b/src/simulation/elements/H2.cpp
index f7244b0..7861113 100644
--- a/src/simulation/elements/H2.cpp
+++ b/src/simulation/elements/H2.cpp
@@ -2,48 +2,48 @@
//#TPT-Directive ElementClass Element_H2 PT_H2 148
Element_H2::Element_H2()
{
- Identifier = "DEFAULT_PT_H2";
- Name = "HYGN";
- Colour = PIXPACK(0x5070FF);
- MenuVisible = 1;
- MenuSection = SC_GAS;
- Enabled = 1;
-
- Advection = 2.0f;
- AirDrag = 0.00f * CFDS;
- AirLoss = 0.99f;
- Loss = 0.30f;
- Collision = -0.10f;
- Gravity = 0.00f;
- Diffusion = 3.00f;
- HotAir = 0.000f * CFDS;
- Falldown = 0;
-
- Flammable = 0;
- Explosive = 0;
- Meltable = 0;
- Hardness = 0;
-
- Weight = 1;
-
- Temperature = R_TEMP+0.0f +273.15f;
- HeatConduct = 251;
- Description = "Combines with O2 to make WATR";
-
- State = ST_GAS;
- Properties = TYPE_GAS;
-
- LowPressure = IPL;
- LowPressureTransition = NT;
- HighPressure = IPH;
- HighPressureTransition = NT;
- LowTemperature = ITL;
- LowTemperatureTransition = NT;
- HighTemperature = ITH;
- HighTemperatureTransition = NT;
-
- Update = &Element_H2::update;
-
+ Identifier = "DEFAULT_PT_H2";
+ Name = "HYGN";
+ Colour = PIXPACK(0x5070FF);
+ MenuVisible = 1;
+ MenuSection = SC_GAS;
+ Enabled = 1;
+
+ Advection = 2.0f;
+ AirDrag = 0.00f * CFDS;
+ AirLoss = 0.99f;
+ Loss = 0.30f;
+ Collision = -0.10f;
+ Gravity = 0.00f;
+ Diffusion = 3.00f;
+ HotAir = 0.000f * CFDS;
+ Falldown = 0;
+
+ Flammable = 0;
+ Explosive = 0;
+ Meltable = 0;
+ Hardness = 0;
+
+ Weight = 1;
+
+ Temperature = R_TEMP+0.0f +273.15f;
+ HeatConduct = 251;
+ Description = "Combines with O2 to make WATR";
+
+ State = ST_GAS;
+ Properties = TYPE_GAS;
+
+ LowPressure = IPL;
+ LowPressureTransition = NT;
+ HighPressure = IPH;
+ HighPressureTransition = NT;
+ LowTemperature = ITL;
+ LowTemperatureTransition = NT;
+ HighTemperature = ITH;
+ HighTemperatureTransition = NT;
+
+ Update = &Element_H2::update;
+
}
//#TPT-Directive ElementHeader Element_H2 static int update(UPDATE_FUNC_ARGS)
@@ -66,22 +66,25 @@ int Element_H2::update(UPDATE_FUNC_ARGS)
sim->part_change_type(r>>8,x+rx,y+ry,PT_WATR);
sim->part_change_type(i,x,y,PT_OIL);
}
- if (parts[r>>8].temp > 2273.15)// && pv[y/CELL][x/CELL] > 50.0f)
+ if (parts[r>>8].temp > 2273.15 && sim->pv[y/CELL][x/CELL] > 45)// && pv[y/CELL][x/CELL] > 50.0f)
continue;
- if (parts[i].temp < 2273.15)
+ if (sim->pv[x/CELL][y/CELL]<45)
{
if (rt==PT_FIRE)
{
parts[r>>8].temp=2473.15;
if(parts[r>>8].tmp&0x02)
- parts[r>>8].temp=3473;
+ parts[r>>8].temp=3473;
parts[r>>8].tmp |= 1;
}
if (rt==PT_FIRE || rt==PT_PLSM || rt==PT_LAVA)
{
+ if(parts[r>>8].tmp&8&&rt==PT_PLSM)
+ continue;
sim->create_part(i,x,y,PT_FIRE);
- parts[i].temp+=(rand()/(RAND_MAX/100));
+ parts[i].temp+=(rand()%250);
parts[i].tmp |= 1;
+ sim->pv[y/CELL][x/CELL] +=0.1f;
}
}
}
@@ -93,11 +96,27 @@ int Element_H2::update(UPDATE_FUNC_ARGS)
float temp = parts[i].temp;
sim->create_part(i,x,y,PT_NBLE);
- j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_NEUT); if (j != -1) parts[j].temp = temp;
- if (!(rand()%10)) { j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_ELEC); if (j != -1) parts[j].temp = temp; }
- j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PHOT); if (j != -1) { parts[j].ctype = 0xFFFF00; parts[j].temp = temp; }
-
- j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PLSM); if (j != -1) parts[j].temp = temp;
+ j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_NEUT);
+ if (j != -1)
+ parts[j].temp = temp;
+ if (!(rand()%10))
+ {
+ j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_ELEC);
+ if (j != -1)
+ parts[j].temp = temp;
+ }
+ j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PHOT);
+ if (j != -1)
+ {
+ parts[j].ctype = 0xFFFF00;
+ parts[j].temp = temp;
+ }
+ j = sim->create_part(-3,x+rand()%3-1,y+rand()%3-1,PT_PLSM);
+ if (j != -1)
+ {
+ parts[j].temp = temp;
+ parts[j].tmp |=8;
+ }
parts[i].temp = temp+750+rand()%500;
sim->pv[y/CELL][x/CELL] += 30;