mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-08-30 03:09:53 +02:00
Replace pstates and some pressure ifs with array.
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user