summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorjacksonmj <jacksonmj@jacksonmj.none>2011-01-07 14:47:10 (GMT)
committer jacksonmj <jacksonmj@jacksonmj.none>2011-01-07 14:47:10 (GMT)
commitb661418d7ecd44960f0e24eb7abd79cfc5eb5f0e (patch)
treec1a36c06bcb2f97f8324e96b86e3d357ea5ec02a /includes
parent1ab4d328a64c096aecc618dd4d15359cb620bd51 (diff)
downloadpowder-b661418d7ecd44960f0e24eb7abd79cfc5eb5f0e.zip
powder-b661418d7ecd44960f0e24eb7abd79cfc5eb5f0e.tar.gz
Replace pstates and some pressure ifs with array.
Diffstat (limited to 'includes')
-rw-r--r--includes/powder.h180
1 files changed, 179 insertions, 1 deletions
diff --git a/includes/powder.h b/includes/powder.h
index 6504876..dec4599 100644
--- a/includes/powder.h
+++ b/includes/powder.h
@@ -284,8 +284,22 @@ struct part_state
int burn;
float btemp;
};
-
typedef struct part_state part_state;
+
+struct part_transition
+{
+ float plv; // transition occurs if pv is lower than this
+ int plt;
+ float phv; // transition occurs if pv is higher than this
+ int pht;
+ float tlv; // transition occurs if t is lower than this
+ int tlt;
+ float thv; // transition occurs if t is higher than this
+ int tht;
+};
+typedef struct part_transition part_transition;
+
+
//Should probably be const.
/* Weight Help
* 1 = Gas ||
@@ -586,6 +600,170 @@ static part_state pstates[PT_NUM] =
/* GOL */ {ST_NONE, PT_NONE, 0.0f, PT_NONE, 0.0f, PT_NONE, 0.0f, PT_NONE, 0.0f},
/* GOL */ {ST_NONE, PT_NONE, 0.0f, PT_NONE, 0.0f, PT_NONE, 0.0f, PT_NONE, 0.0f},
};
+
+// temporarily define abbreviations for impossible p/t values
+#define IPL -257.0f
+#define IPH 257.0f
+#define ITL MIN_TEMP-1
+#define ITH MAX_TEMP+1
+// no transition (PT_NONE means kill part)
+#define NT -1
+// special transition - lava ctypes etc need extra code
+// TODO: use update_ELEM functions for special transitions, only use this table for the simple ones
+#define ST PT_NUM
+static part_transition ptransitions[PT_NUM] =
+{
+ // Name plv plt phv pht tlv tlt thv tht
+ /* NONE */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* DUST */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* WATR */ {IPL, NT, IPH, NT, 273.15f,PT_ICEI, 373.0f, PT_WTRV},
+ /* OIL */ {IPL, NT, IPH, NT, ITL, NT, 333.0f, PT_GAS},
+ /* FIRE */ {IPL, NT, IPH, NT, ITL, NT, 2773.0f,PT_PLSM},
+ /* STNE */ {IPL, NT, IPH, NT, ITL, NT, 983.0f, PT_LAVA},
+ /* LAVA */ {IPL, NT, IPH, NT, 2573.15f,ST, ITH, NT}, // 2573.15f is highest melt pt of possible ctypes
+ /* GUN */ {IPL, NT, IPH, NT, ITL, NT, 673.0f, PT_FIRE},
+ /* NITR */ {IPL, NT, IPH, NT, ITL, NT, 673.0f, PT_FIRE},
+ /* CLNE */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GAS */ {-6.0f, PT_OIL, 6.0f, PT_OIL, ITL, NT, 573.0f, PT_FIRE},
+ /* C-4 */ {IPL, NT, IPH, NT, ITL, NT, 673.0f, PT_FIRE},
+ /* GOO */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* ICE */ {IPL, NT, 0.8f, PT_SNOW, ITL, NT, 233.0f, ST},
+ /* METL */ {IPL, NT, IPH, NT, ITL, NT, 1273.0f,PT_LAVA},
+ /* SPRK */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* SNOW */ {IPL, NT, IPH, NT, ITL, NT, 273.0f, PT_WATR},
+ /* WOOD */ {IPL, NT, IPH, NT, ITL, NT, 873.0f, PT_FIRE},
+ /* NEUT */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* PLUT */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* PLNT */ {IPL, NT, IPH, NT, ITL, NT, 573.0f, PT_FIRE},
+ /* ACID */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* VOID */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* WTRV */ {IPL, NT, IPH, NT, 371.0f, ST, ITH, NT},
+ /* CNCT */ {IPL, NT, IPH, NT, ITL, NT, 1123.0f,PT_LAVA},
+ /* DSTW */ {IPL, NT, IPH, NT, 273.15f,PT_ICEI, 373.0f, PT_WTRV},
+ /* SALT */ {IPL, NT, IPH, NT, ITL, NT, 1173.0f,PT_LAVA},
+ /* SLTW */ {IPL, NT, IPH, NT, 233.0f, PT_ICEI, 483.0f, ST},
+ /* DMND */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* BMTL */ {IPL, NT, 1.0f, ST, ITL, NT, 1273.0f,PT_LAVA},
+ /* BRMT */ {IPL, NT, IPH, NT, ITL, NT, 1273.0f,PT_LAVA},
+ /* PHOT */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* URAN */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* WAX */ {IPL, NT, IPH, NT, ITL, NT, 319.0f, PT_MWAX},
+ /* MWAX */ {IPL, NT, IPH, NT, 318.0f, PT_WAX, 673.0f, PT_FIRE},
+ /* PSCN */ {IPL, NT, IPH, NT, ITL, NT, 1687.0f,PT_LAVA},
+ /* NSCN */ {IPL, NT, IPH, NT, ITL, NT, 1687.0f,PT_LAVA},
+ /* LNTG */ {IPL, NT, IPH, NT, 63.0f, PT_NICE, 77.0f, PT_NONE},
+ /* INSL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* BHOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* WHOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* RBDM */ {IPL, NT, IPH, NT, ITL, NT, 312.0f, PT_LRBD},//, 961.0f, PT_FIRE},
+ /* LRBD */ {IPL, NT, IPH, NT, 311.0f, PT_RBDM, 961.0f, PT_FIRE},
+ /* NTCT */ {IPL, NT, IPH, NT, ITL, NT, 1687.0f,PT_LAVA},
+ /* SAND */ {IPL, NT, IPH, NT, ITL, NT, 1973.0f,PT_LAVA},
+ /* GLAS */ {IPL, NT, IPH, NT, ITL, NT, 1973.0f,PT_LAVA},
+ /* PTCT */ {IPL, NT, IPH, NT, ITL, NT, 1414.0f,PT_LAVA},
+ /* BGLA */ {IPL, NT, IPH, NT, ITL, NT, 1973.0f,PT_LAVA},
+ /* THDR */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* PLSM */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* ETRD */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* NICE */ {IPL, NT, IPH, NT, ITL, NT, 63.1f, PT_LNTG},
+ /* NBLE */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* BTRY */ {IPL, NT, IPH, NT, ITL, NT, 2273.0f,PT_PLSM},
+ /* LCRY */ {IPL, NT, IPH, NT, ITL, NT, 1273.0f,PT_BGLA},
+ /* STKM */ {IPL, NT, IPH, NT, ITL, NT, 620.0f, PT_FIRE},
+ /* SWCH */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* SMKE */ {IPL, NT, IPH, NT, ITL, NT, 625.0f, PT_FIRE},
+ /* DESL */ {IPL, NT, 5.0f, PT_FIRE, ITL, NT, 335.0f, PT_FIRE},
+ /* COAL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* LO2 */ {IPL, NT, IPH, NT, ITL, NT, 90.1f, PT_O2},
+ /* O2 */ {IPL, NT, IPH, NT, 90.0f, PT_LO2, ITH, NT},
+ /* INWR */ {IPL, NT, IPH, NT, ITL, NT, 1687.0f,PT_LAVA},
+ /* YEST */ {IPL, NT, IPH, NT, ITL, NT, 373.0f, PT_DYST},
+ /* DYST */ {IPL, NT, IPH, NT, ITL, NT, 473.0f, PT_DUST},
+ /* THRM */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GLOW */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* BRCK */ {IPL, NT, 8.8f, PT_STNE, ITL, NT, 1223.0f,PT_LAVA},
+ /* HFLM */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* FIRW */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* FUSE */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* FSEP */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* AMtr */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* BCOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* PCLN */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* HSWC */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* IRON */ {IPL, NT, IPH, NT, ITL, NT, 1687.0f,PT_LAVA},
+ /* MORT */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* SPNG */ {IPL, NT, IPH, NT, ITL, NT, 2730.0f,PT_FIRE},
+ /* RIME */ {IPL, NT, IPH, NT, ITL, NT, 273.15f,PT_WATR},
+ /* FOG */ {IPL, NT, IPH, NT, ITL, NT, 373.15f,PT_WTRV},
+ /* BCLN */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* LOVE */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* WTF */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* WARP */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* PUMP */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* FWRK */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* PIPE */ {IPL, NT, 10.0f, PT_BRMT, ITL, NT, ITH, NT},
+ /* FRZZ */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* FRZW */ {IPL, NT, IPH, NT, ITL, NT, 53.0f, PT_ICEI},
+ /* GRAV */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* BIZR */ {IPL, NT, IPH, NT, 100.0f, PT_BIZRG, 400.0f, PT_BIZRS},
+ /* BIZRG*/ {IPL, NT, IPH, NT, ITL, NT, 100.0f, PT_BIZR},//, 400.0f, PT_BIZRS},
+ /* BIZRS*/ {IPL, NT, IPH, NT, 400.0f, PT_BIZR, ITH, NT},// 100.0f, PT_BIZRG},
+ /* INST */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* ISOZ */ {IPL, NT, IPH, NT, 160.0f, PT_ISZS, ITH, NT},
+ /* ISZS */ {IPL, NT, IPH, NT, ITL, NT, 300.0f, PT_ISOZ},
+ /* PRTI */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* PRTO */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* PSTE */ {IPL, NT, 0.5f, PT_PSTS, ITL, NT, 747.0f, PT_BRCK},
+ /* PSTS */ {0.5f, PT_PSTE, IPH, NT, ITL, NT, ITH, NT},
+ /* ANAR */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* VINE */ {IPL, NT, IPH, NT, ITL, NT, 573.0f, PT_FIRE},
+ /* INVS */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* EQVE */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* SPWN2*/ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* SPAWN*/ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* SHLD1*/ {IPL, NT, 7.0f, PT_NONE, ITL, NT, ITH, NT},
+ /* SHLD2*/ {IPL, NT, 15.0f, PT_NONE, ITL, NT, ITH, NT},
+ /* SHLD3*/ {IPL, NT, 25.0f, PT_NONE, ITL, NT, ITH, NT},
+ /* SHLD4*/ {IPL, NT, 40.0f, PT_NONE, ITL, NT, ITH, NT},
+ /* LOlZ */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* WIFI */ {IPL, NT, 15.0f, PT_BRMT, ITL, NT, ITH, NT},
+ /* FILT */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* ARAY */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* BRAY */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* STKM2*/ {IPL, NT, IPH, NT, ITL, NT, 620.0f, PT_FIRE},
+ /* BOMB */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* C-5 */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* SING */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* QRTZ */ {IPL, NT, IPH, NT, ITL, NT, 2573.15f,PT_LAVA},
+ /* PQRT */ {IPL, NT, IPH, NT, ITL, NT, 2573.15f,PT_LAVA},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+ /* GOL */ {IPL, NT, IPH, NT, ITL, NT, ITH, NT},
+};
+#undef IPL
+#undef IPH
+#undef ITL
+#undef ITH
+#undef NT
+#undef ST
+
+
static int grule[NGOL][9] =
{
// 0,1,2,3,4,5,6,7,8 live=1 spawn=2 spawn&live=3