285 lines
6.6 KiB
C
285 lines
6.6 KiB
C
/*
|
|
* Elements.h
|
|
*
|
|
* Created on: Jan 5, 2012
|
|
* Author: Simon
|
|
*/
|
|
|
|
//#ifndef ELEMENTS_H_
|
|
//#define ELEMENTS_H_
|
|
|
|
//#include "Config.h"
|
|
//#include "Simulation.h"
|
|
|
|
#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, which is only found and run if ST is given
|
|
#define ST PT_NUM
|
|
|
|
#define R_TEMP 22
|
|
#define MAX_TEMP 9999
|
|
#define MIN_TEMP 0
|
|
#define O_MAX_TEMP 3500
|
|
#define O_MIN_TEMP -273
|
|
|
|
#define TYPE_PART 0x00001 //1 Powders
|
|
#define TYPE_LIQUID 0x00002 //2 Liquids
|
|
#define TYPE_SOLID 0x00004 //4 Solids
|
|
#define TYPE_GAS 0x00008 //8 Gasses (Includes plasma)
|
|
#define TYPE_ENERGY 0x00010 //16 Energy (Thunder, Light, Neutrons etc.)
|
|
#define PROP_CONDUCTS 0x00020 //32 Conducts electricity
|
|
#define PROP_BLACK 0x00040 //64 Absorbs Photons (not currently implemented or used, a photwl attribute might be better)
|
|
#define PROP_NEUTPENETRATE 0x00080 //128 Penetrated by neutrons
|
|
#define PROP_NEUTABSORB 0x00100 //256 Absorbs neutrons, reflect is default
|
|
#define PROP_NEUTPASS 0x00200 //512 Neutrons pass through, such as with glass
|
|
#define PROP_DEADLY 0x00400 //1024 Is deadly for stickman
|
|
#define PROP_HOT_GLOW 0x00800 //2048 Hot Metal Glow
|
|
#define PROP_LIFE 0x01000 //4096 Is a GoL type
|
|
#define PROP_RADIOACTIVE 0x02000 //8192 Radioactive
|
|
#define PROP_LIFE_DEC 0x04000 //2^14 Life decreases by one every frame if > zero
|
|
#define PROP_LIFE_KILL 0x08000 //2^15 Kill when life value is <= zero
|
|
#define PROP_LIFE_KILL_DEC 0x10000 //2^16 Kill when life value is decremented to <= zero
|
|
#define PROP_SPARKSETTLE 0x20000 //2^17 Allow Sparks/Embers to settle
|
|
|
|
#define FLAG_STAGNANT 1
|
|
#define FLAG_SKIPMOVE 0x2 // skip movement for one frame, only implemented for PHOT
|
|
|
|
#define ST_NONE 0
|
|
#define ST_SOLID 1
|
|
#define ST_LIQUID 2
|
|
#define ST_GAS 3
|
|
|
|
#define UPDATE_FUNC_ARGS Simulation* sim, int i, int x, int y, int surround_space, int nt, Particle *parts, int pmap[YRES][XRES]
|
|
// to call another update function with same arguments:
|
|
#define UPDATE_FUNC_SUBCALL_ARGS sim, i, x, y, surround_space, nt, parts, pmap
|
|
|
|
#define GRAPHICS_FUNC_ARGS Renderer * ren, Particle *cpart, int nx, int ny, int *pixel_mode, int* cola, int *colr, int *colg, int *colb, int *firea, int *firer, int *fireg, int *fireb
|
|
#define GRAPHICS_FUNC_SUBCALL_ARGS ren, cpart, nx, ny, pixel_mode, cola, colr, colg, colb, firea, firer, fireg, fireb
|
|
|
|
#define UI_WALLSTART 222
|
|
#define UI_ACTUALSTART 122
|
|
#define UI_WALLCOUNT 25
|
|
|
|
#define WL_WALLELEC 122
|
|
#define WL_EWALL 123
|
|
#define WL_DETECT 124
|
|
#define WL_STREAM 125
|
|
#define WL_SIGN 126
|
|
#define WL_FAN 127
|
|
#define WL_FANHELPER 255
|
|
#define WL_ALLOWLIQUID 128
|
|
#define WL_DESTROYALL 129
|
|
#define WL_ERASE 130
|
|
#define WL_WALL 131
|
|
#define WL_ALLOWAIR 132
|
|
#define WL_ALLOWSOLID 133
|
|
#define WL_ALLOWALLELEC 134
|
|
#define WL_EHOLE 135
|
|
|
|
#define SPC_AIR 236
|
|
#define SPC_HEAT 237
|
|
#define SPC_COOL 238
|
|
#define SPC_VACUUM 239
|
|
#define SPC_WIND 241
|
|
#define SPC_PGRV 243
|
|
#define SPC_NGRV 244
|
|
#define SPC_PROP 246
|
|
|
|
#define WL_ALLOWGAS 140
|
|
#define WL_GRAV 142
|
|
#define WL_ALLOWENERGY 145
|
|
|
|
#define NGT_GOL 0
|
|
#define NGT_HLIF 1
|
|
#define NGT_ASIM 2
|
|
#define NGT_2x2 3
|
|
#define NGT_DANI 4
|
|
#define NGT_AMOE 5
|
|
#define NGT_MOVE 6
|
|
#define NGT_PGOL 7
|
|
#define NGT_DMOE 8
|
|
#define NGT_34 9
|
|
#define NGT_LLIF 10
|
|
#define NGT_STAN 11
|
|
#define NGT_SEED 12
|
|
#define NGT_MAZE 13
|
|
#define NGT_COAG 14
|
|
#define NGT_WALL 15
|
|
#define NGT_GNAR 16
|
|
#define NGT_REPL 17
|
|
#define NGT_MYST 18
|
|
#define NGT_LOTE 19
|
|
#define NGT_FRG2 20
|
|
#define NGT_STAR 21
|
|
#define NGT_FROG 22
|
|
#define NGT_BRAN 23
|
|
|
|
#define PT_NONE 0
|
|
#define PT_DUST 1
|
|
#define PT_WATR 2
|
|
#define PT_OIL 3
|
|
#define PT_FIRE 4
|
|
#define PT_STNE 5
|
|
#define PT_LAVA 6
|
|
#define PT_GUNP 7
|
|
#define PT_NITR 8
|
|
#define PT_CLNE 9
|
|
#define PT_GAS 10
|
|
#define PT_PLEX 11
|
|
#define PT_GOO 12
|
|
#define PT_ICEI 13
|
|
#define PT_METL 14
|
|
#define PT_SPRK 15
|
|
#define PT_SNOW 16
|
|
#define PT_WOOD 17
|
|
#define PT_NEUT 18
|
|
#define PT_PLUT 19
|
|
#define PT_PLNT 20
|
|
#define PT_ACID 21
|
|
#define PT_VOID 22
|
|
#define PT_WTRV 23
|
|
#define PT_CNCT 24
|
|
#define PT_DSTW 25
|
|
#define PT_SALT 26
|
|
#define PT_SLTW 27
|
|
#define PT_DMND 28
|
|
#define PT_BMTL 29
|
|
#define PT_BRMT 30
|
|
#define PT_PHOT 31
|
|
#define PT_URAN 32
|
|
#define PT_WAX 33
|
|
#define PT_MWAX 34
|
|
#define PT_PSCN 35
|
|
#define PT_NSCN 36
|
|
#define PT_LNTG 37
|
|
#define PT_INSL 38
|
|
#define PT_BHOL 39
|
|
#define PT_WHOL 40
|
|
#define PT_RBDM 41
|
|
#define PT_LRBD 42
|
|
#define PT_NTCT 43
|
|
#define PT_SAND 44
|
|
#define PT_GLAS 45
|
|
#define PT_PTCT 46
|
|
#define PT_BGLA 47
|
|
#define PT_THDR 48
|
|
#define PT_PLSM 49
|
|
#define PT_ETRD 50
|
|
#define PT_NICE 51
|
|
#define PT_NBLE 52
|
|
#define PT_BTRY 53
|
|
#define PT_LCRY 54
|
|
#define PT_STKM 55
|
|
#define PT_SWCH 56
|
|
#define PT_SMKE 57
|
|
#define PT_DESL 58
|
|
#define PT_COAL 59
|
|
#define PT_LO2 60
|
|
#define PT_O2 61
|
|
#define PT_INWR 62
|
|
#define PT_YEST 63
|
|
#define PT_DYST 64
|
|
#define PT_THRM 65
|
|
#define PT_GLOW 66
|
|
#define PT_BRCK 67
|
|
#define PT_HFLM 68
|
|
#define PT_FIRW 69
|
|
#define PT_FUSE 70
|
|
#define PT_FSEP 71
|
|
#define PT_AMTR 72
|
|
#define PT_BCOL 73
|
|
#define PT_PCLN 74
|
|
#define PT_HSWC 75
|
|
#define PT_IRON 76
|
|
#define PT_MORT 77
|
|
#define PT_LIFE 78
|
|
#define PT_DLAY 79
|
|
#define PT_CO2 80
|
|
#define PT_DRIC 81
|
|
#define PT_CBNW 82
|
|
#define PT_STOR 83
|
|
#define PT_PVOD 84
|
|
#define PT_CONV 85
|
|
#define PT_CAUS 86
|
|
|
|
#define PT_LIGH 87
|
|
#define PT_TESC 88
|
|
#define PT_DEST 89
|
|
|
|
#define PT_SPNG 90
|
|
#define PT_RIME 91
|
|
#define PT_FOG 92
|
|
#define PT_BCLN 93
|
|
#define PT_LOVE 94
|
|
#define PT_DEUT 95
|
|
#define PT_WARP 96
|
|
#define PT_PUMP 97
|
|
#define PT_FWRK 98
|
|
#define PT_PIPE 99
|
|
#define PT_FRZZ 100
|
|
#define PT_FRZW 101
|
|
#define PT_GRAV 102
|
|
#define PT_BIZR 103
|
|
#define PT_BIZRG 104
|
|
#define PT_BIZRS 105
|
|
#define PT_INST 106
|
|
#define PT_ISOZ 107
|
|
#define PT_ISZS 108
|
|
#define PT_PRTI 109
|
|
#define PT_PRTO 110
|
|
#define PT_PSTE 111
|
|
#define PT_PSTS 112
|
|
#define PT_ANAR 113
|
|
#define PT_VINE 114
|
|
#define PT_INVIS 115
|
|
#define PT_EQUALVEL 116 //all particles equal their velocities
|
|
#define PT_SPAWN2 117
|
|
#define PT_SPAWN 118
|
|
#define PT_SHLD1 119
|
|
#define PT_SHLD2 120
|
|
#define PT_SHLD3 121
|
|
#define PT_SHLD4 122
|
|
#define PT_LOLZ 123
|
|
#define PT_WIFI 124
|
|
#define PT_FILT 125
|
|
#define PT_ARAY 126
|
|
#define PT_BRAY 127
|
|
#define PT_STKM2 128
|
|
#define PT_BOMB 129
|
|
#define PT_C5 130
|
|
#define PT_SING 131
|
|
#define PT_QRTZ 132
|
|
#define PT_PQRT 133
|
|
#define PT_EMP 134
|
|
#define PT_BREC 135
|
|
#define PT_ELEC 136
|
|
#define PT_ACEL 137
|
|
#define PT_DCEL 138
|
|
#define PT_BANG 139
|
|
#define PT_IGNT 140
|
|
#define PT_BOYL 141
|
|
#define PT_GEL 142
|
|
|
|
#define OLD_PT_WIND 147
|
|
#define PT_H2 148
|
|
#define PT_SOAP 149
|
|
#define PT_NBHL 150
|
|
#define PT_NWHL 151
|
|
#define PT_MERC 152
|
|
#define PT_PBCN 153
|
|
#define PT_GPMP 154
|
|
#define PT_CLST 155
|
|
#define PT_WIRE 156
|
|
#define PT_GBMB 157
|
|
#define PT_FIGH 158
|
|
#define PT_FRAY 159
|
|
#define PT_REPL 160
|
|
#define PT_NUM 161
|
|
|
|
|
|
//#endif /* ELEMENTS_H_ */
|