summaryrefslogtreecommitdiff
path: root/includes/powder.h
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-11-17 19:43:59 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-11-17 19:43:59 (GMT)
commite3594aba9e05c6865d396418c028049cda92c2f3 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /includes/powder.h
parentfb43f7d23e99765ae093fc45608901cb5907d1d8 (diff)
downloadpowder-e3594aba9e05c6865d396418c028049cda92c2f3.zip
powder-e3594aba9e05c6865d396418c028049cda92c2f3.tar.gz
Remove old code
Diffstat (limited to 'includes/powder.h')
-rw-r--r--includes/powder.h855
1 files changed, 0 insertions, 855 deletions
diff --git a/includes/powder.h b/includes/powder.h
deleted file mode 100644
index 5c54290..0000000
--- a/includes/powder.h
+++ /dev/null
@@ -1,855 +0,0 @@
-/**
- * Powder Toy - particle simulation (header)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef POWDER_H
-#define POWDER_H
-
-#include "air.h"
-#include "graphics.h"
-#include "defines.h"
-#include "interface.h"
-#include "misc.h"
-
-#define CM_COUNT 11
-#define CM_CRACK 10
-#define CM_LIFE 9
-#define CM_GRAD 8
-#define CM_NOTHING 7
-#define CM_FANCY 6
-#define CM_HEAT 5
-#define CM_BLOB 4
-#define CM_FIRE 3
-#define CM_PERS 2
-#define CM_PRESS 1
-#define CM_VEL 0
-
-#define BRUSH_REPLACEMODE 0x1
-#define BRUSH_SPECIFIC_DELETE 0x2
-
-#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 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_BREL 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 PT_TRON 143
-#define PT_TTAN 144
-#define PT_EXOT 145
-
-#define OLD_PT_WIND 147
-#define PT_EMBR 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_PPIP 161
-#define PT_DTEC 162
-#define PT_NUM 163
-
-#define R_TEMP 22
-#define MAX_TEMP 9999
-#define MIN_TEMP 0
-#define O_MAX_TEMP 3500
-#define O_MIN_TEMP -273
-
-#define ST_NONE 0
-#define ST_SOLID 1
-#define ST_LIQUID 2
-#define ST_GAS 3
-/*
- TODO: We should start to implement these.
-*/
-#define TYPE_PART 0x00001 //1 Powders
-#define TYPE_LIQUID 0x00002 //2 Liquids
-#define TYPE_SOLID 0x00004 //4 Solids
-#define TYPE_GAS 0x00008 //8 Gases (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 PROP_NOAMBHEAT 0x40000 //2^18 Don't transfer or receive heat from ambient heat.
-
-#define FLAG_STAGNANT 1
-#define FLAG_SKIPMOVE 0x2 // skip movement for one frame, only implemented for PHOT
-#define FLAG_MOVABLE 0x4 // if can move
-
-#define GRAPHICS_FUNC_ARGS 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 cpart, nx, ny, pixel_mode, cola, colr, colg, colb, firea, firer, fireg, fireb
-
-
-struct particle
-{
- int type;
- int life, ctype;
- float x, y, vx, vy;
-#ifdef OGLR
- float lastX, lastY;
-#endif
- float temp;
- float pavg[2];
- int flags;
- int tmp;
- int tmp2;
- unsigned int dcolour;
-};
-typedef struct particle particle;
-
-int graphics_DEFAULT(GRAPHICS_FUNC_ARGS);
-int graphics_FIRE(GRAPHICS_FUNC_ARGS);
-int graphics_SMKE(GRAPHICS_FUNC_ARGS);
-int graphics_PLSM(GRAPHICS_FUNC_ARGS);
-int graphics_DEUT(GRAPHICS_FUNC_ARGS);
-int graphics_PHOT(GRAPHICS_FUNC_ARGS);
-int graphics_NEUT(GRAPHICS_FUNC_ARGS);
-int graphics_LAVA(GRAPHICS_FUNC_ARGS);
-int graphics_SPRK(GRAPHICS_FUNC_ARGS);
-int graphics_QRTZ(GRAPHICS_FUNC_ARGS);
-int graphics_CLST(GRAPHICS_FUNC_ARGS);
-int graphics_CBNW(GRAPHICS_FUNC_ARGS);
-int graphics_SPNG(GRAPHICS_FUNC_ARGS);
-int graphics_LIFE(GRAPHICS_FUNC_ARGS);
-int graphics_GRAV(GRAPHICS_FUNC_ARGS);
-int graphics_WIFI(GRAPHICS_FUNC_ARGS);
-int graphics_PRTI(GRAPHICS_FUNC_ARGS);
-int graphics_PRTO(GRAPHICS_FUNC_ARGS);
-int graphics_BIZR(GRAPHICS_FUNC_ARGS);
-int graphics_PIPE(GRAPHICS_FUNC_ARGS);
-int graphics_INVS(GRAPHICS_FUNC_ARGS);
-int graphics_ACID(GRAPHICS_FUNC_ARGS);
-int graphics_FILT(GRAPHICS_FUNC_ARGS);
-int graphics_BRAY(GRAPHICS_FUNC_ARGS);
-int graphics_SWCH(GRAPHICS_FUNC_ARGS);
-int graphics_THDR(GRAPHICS_FUNC_ARGS);
-int graphics_GLOW(GRAPHICS_FUNC_ARGS);
-int graphics_LCRY(GRAPHICS_FUNC_ARGS);
-int graphics_PCLN(GRAPHICS_FUNC_ARGS);
-int graphics_PBCN(GRAPHICS_FUNC_ARGS);
-int graphics_DLAY(GRAPHICS_FUNC_ARGS);
-int graphics_HSWC(GRAPHICS_FUNC_ARGS);
-int graphics_PVOD(GRAPHICS_FUNC_ARGS);
-int graphics_STOR(GRAPHICS_FUNC_ARGS);
-int graphics_PUMP(GRAPHICS_FUNC_ARGS);
-int graphics_GPMP(GRAPHICS_FUNC_ARGS);
-int graphics_HFLM(GRAPHICS_FUNC_ARGS);
-int graphics_FIRW(GRAPHICS_FUNC_ARGS);
-int graphics_BOMB(GRAPHICS_FUNC_ARGS);
-int graphics_GBMB(GRAPHICS_FUNC_ARGS);
-int graphics_COAL(GRAPHICS_FUNC_ARGS);
-int graphics_STKM(GRAPHICS_FUNC_ARGS);
-int graphics_DEST(GRAPHICS_FUNC_ARGS);
-int graphics_EMP(GRAPHICS_FUNC_ARGS);
-int graphics_LIGH(GRAPHICS_FUNC_ARGS);
-int graphics_ELEC(GRAPHICS_FUNC_ARGS);
-int graphics_WIRE(GRAPHICS_FUNC_ARGS);
-int graphics_ACEL(GRAPHICS_FUNC_ARGS);
-int graphics_DCEL(GRAPHICS_FUNC_ARGS);
-int graphics_GEL(GRAPHICS_FUNC_ARGS);
-int graphics_TRON(GRAPHICS_FUNC_ARGS);
-int graphics_SOAP(GRAPHICS_FUNC_ARGS);
-int graphics_EXOT(GRAPHICS_FUNC_ARGS);
-int graphics_WARP(GRAPHICS_FUNC_ARGS);
-int graphics_EMBR(GRAPHICS_FUNC_ARGS);
-int graphics_BRCK(GRAPHICS_FUNC_ARGS);
-int graphics_WOOD(GRAPHICS_FUNC_ARGS);
-int graphics_PLNT(GRAPHICS_FUNC_ARGS);
-
-void TRON_init_graphics();
-
-#define UPDATE_FUNC_ARGS int i, int x, int y, int surround_space, int nt
-// to call another update function with same arguments:
-#define UPDATE_FUNC_SUBCALL_ARGS i, x, y, surround_space, nt
-
-struct playerst
-{
- char comm; //command cell
- char pcomm; //previous command
- int elem; //element power
- float legs[16]; //legs' positions
- float accs[8]; //accelerations
- char spwn; //if stick man was spawned
- unsigned int frames; //frames since last particle spawn - used when spawning LIGH
-};
-typedef struct playerst playerst;
-
-int update_ACID(UPDATE_FUNC_ARGS);
-int update_ANAR(UPDATE_FUNC_ARGS);
-int update_AMTR(UPDATE_FUNC_ARGS);
-int update_ARAY(UPDATE_FUNC_ARGS);
-int update_BCLN(UPDATE_FUNC_ARGS);
-int update_BCOL(UPDATE_FUNC_ARGS);
-int update_BMTL(UPDATE_FUNC_ARGS);
-int update_BRMT(UPDATE_FUNC_ARGS);
-int update_BOMB(UPDATE_FUNC_ARGS);
-int update_BOYL(UPDATE_FUNC_ARGS);
-int update_BTRY(UPDATE_FUNC_ARGS);
-int update_C5(UPDATE_FUNC_ARGS);
-int update_CLNE(UPDATE_FUNC_ARGS);
-int update_COAL(UPDATE_FUNC_ARGS);
-int update_DEUT(UPDATE_FUNC_ARGS);
-int update_DSTW(UPDATE_FUNC_ARGS);
-int update_DTEC(UPDATE_FUNC_ARGS);
-int update_EMBR(UPDATE_FUNC_ARGS);
-int update_FOG(UPDATE_FUNC_ARGS);
-int update_FRZW(UPDATE_FUNC_ARGS);
-int update_FRZZ(UPDATE_FUNC_ARGS);
-int update_FSEP(UPDATE_FUNC_ARGS);
-int update_FUSE(UPDATE_FUNC_ARGS);
-int update_FIRW(UPDATE_FUNC_ARGS);
-int update_FWRK(UPDATE_FUNC_ARGS);
-int update_GEL(UPDATE_FUNC_ARGS);
-int update_GLAS(UPDATE_FUNC_ARGS);
-int update_GLOW(UPDATE_FUNC_ARGS);
-int update_GOO(UPDATE_FUNC_ARGS);
-int update_HSWC(UPDATE_FUNC_ARGS);
-int update_IRON(UPDATE_FUNC_ARGS);
-int update_ICEI(UPDATE_FUNC_ARGS);
-int update_ISZ(UPDATE_FUNC_ARGS);
-int update_LCRY(UPDATE_FUNC_ARGS);
-int update_MORT(UPDATE_FUNC_ARGS);
-int update_NBLE(UPDATE_FUNC_ARGS);
-int update_NEUT(UPDATE_FUNC_ARGS);
-int update_NPTCT(UPDATE_FUNC_ARGS);
-int update_PCLN(UPDATE_FUNC_ARGS);
-int update_PHOT(UPDATE_FUNC_ARGS);
-int update_PIPE(UPDATE_FUNC_ARGS);
-int update_PLNT(UPDATE_FUNC_ARGS);
-int update_PLUT(UPDATE_FUNC_ARGS);
-int update_PRTI(UPDATE_FUNC_ARGS);
-int update_PRTO(UPDATE_FUNC_ARGS);
-int update_PYRO(UPDATE_FUNC_ARGS);
-int update_PUMP(UPDATE_FUNC_ARGS);
-int update_QRTZ(UPDATE_FUNC_ARGS);
-int update_RIME(UPDATE_FUNC_ARGS);
-int update_SHLD1(UPDATE_FUNC_ARGS);
-int update_SHLD2(UPDATE_FUNC_ARGS);
-int update_SHLD3(UPDATE_FUNC_ARGS);
-int update_SHLD4(UPDATE_FUNC_ARGS);
-int update_SING(UPDATE_FUNC_ARGS);
-int update_SLTW(UPDATE_FUNC_ARGS);
-int update_SPAWN(UPDATE_FUNC_ARGS);
-int update_SPAWN2(UPDATE_FUNC_ARGS);
-int update_SPNG(UPDATE_FUNC_ARGS);
-int update_SPRK(UPDATE_FUNC_ARGS);
-int update_STKM(UPDATE_FUNC_ARGS);
-int update_STKM2(UPDATE_FUNC_ARGS);
-int update_SWCH(UPDATE_FUNC_ARGS);
-int update_THDR(UPDATE_FUNC_ARGS);
-int update_THRM(UPDATE_FUNC_ARGS);
-int update_URAN(UPDATE_FUNC_ARGS);
-int update_VINE(UPDATE_FUNC_ARGS);
-int update_WARP(UPDATE_FUNC_ARGS);
-int update_WATR(UPDATE_FUNC_ARGS);
-int update_WIFI(UPDATE_FUNC_ARGS);
-int update_WOOD(UPDATE_FUNC_ARGS);
-int update_WTRV(UPDATE_FUNC_ARGS);
-int update_YEST(UPDATE_FUNC_ARGS);
-int update_SOAP(UPDATE_FUNC_ARGS);
-int update_O2(UPDATE_FUNC_ARGS);
-int update_H2(UPDATE_FUNC_ARGS);
-int update_NBHL(UPDATE_FUNC_ARGS);
-int update_NWHL(UPDATE_FUNC_ARGS);
-int update_MERC(UPDATE_FUNC_ARGS);
-int update_PBCN(UPDATE_FUNC_ARGS);
-int update_GPMP(UPDATE_FUNC_ARGS);
-int update_CLST(UPDATE_FUNC_ARGS);
-int update_DLAY(UPDATE_FUNC_ARGS);
-int update_WIRE(UPDATE_FUNC_ARGS);
-int update_GBMB(UPDATE_FUNC_ARGS);
-int update_CO2(UPDATE_FUNC_ARGS);
-int update_CBNW(UPDATE_FUNC_ARGS);
-int update_STOR(UPDATE_FUNC_ARGS);
-int update_BIZR(UPDATE_FUNC_ARGS);
-int update_PVOD(UPDATE_FUNC_ARGS);
-int update_CONV(UPDATE_FUNC_ARGS);
-int update_CAUS(UPDATE_FUNC_ARGS);
-int update_DEST(UPDATE_FUNC_ARGS);
-int update_EMP(UPDATE_FUNC_ARGS);
-int update_LIGH(UPDATE_FUNC_ARGS);
-int update_FIGH(UPDATE_FUNC_ARGS);
-int update_ELEC(UPDATE_FUNC_ARGS);
-int update_ACEL(UPDATE_FUNC_ARGS);
-int update_DCEL(UPDATE_FUNC_ARGS);
-int update_BANG(UPDATE_FUNC_ARGS);
-int update_IGNT(UPDATE_FUNC_ARGS);
-int update_FRAY(UPDATE_FUNC_ARGS);
-int update_REPL(UPDATE_FUNC_ARGS);
-int update_TRON(UPDATE_FUNC_ARGS);
-int update_TTAN(UPDATE_FUNC_ARGS);
-int update_BREL(UPDATE_FUNC_ARGS);
-int update_EXOT(UPDATE_FUNC_ARGS);
-
-int update_MISC(UPDATE_FUNC_ARGS);
-int update_legacy_PYRO(UPDATE_FUNC_ARGS);
-int update_legacy_all(UPDATE_FUNC_ARGS);
-int run_stickman(playerst* playerp, UPDATE_FUNC_ARGS);
-void STKM_init_legs(playerst* playerp, int i);
-void STKM_interact(playerst* playerp, int i, int x, int y);
-void PPIP_flood_trigger(int x, int y, int sparkedBy);
-
-struct part_type
-{
- char *name;
- pixel pcolors;
- float advection;
- float airdrag;
- float airloss;
- float loss;
- float collision;
- float gravity;
- float diffusion;
- float hotair;
- int falldown;
- int flammable;
- int explosive;
- int meltable;
- int hardness;
- int menu;
- int enabled;
- int weight;
- int menusection;
- float heat;
- unsigned char hconduct;
- char *descs;
- char state;
- unsigned int properties;
- int (*update_func) (UPDATE_FUNC_ARGS);
- int (*graphics_func) (GRAPHICS_FUNC_ARGS);
-};
-typedef struct part_type part_type;
-
-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;
-
-// TODO: falldown, properties, state - should at least one of these be removed?
-extern part_type ptypes[PT_NUM];
-extern unsigned int platent[PT_NUM];
-
-// 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, which is only found and run if ST is given
-#define ST PT_NUM
-extern part_transition ptransitions[PT_NUM];
-
-//Old IDs for GOL types
-#define GT_GOL 78
-#define GT_HLIF 79
-#define GT_ASIM 80
-#define GT_2x2 81
-#define GT_DANI 82
-#define GT_AMOE 83
-#define GT_MOVE 84
-#define GT_PGOL 85
-#define GT_DMOE 86
-#define GT_34 87
-#define GT_LLIF 88
-#define GT_STAN 89
-#define GT_SEED 134
-#define GT_MAZE 135
-#define GT_COAG 136
-#define GT_WALL 137
-#define GT_GNAR 138
-#define GT_REPL 139
-#define GT_MYST 140
-#define GT_LOTE 142
-#define GT_FRG2 143
-#define GT_STAR 144
-#define GT_FROG 145
-#define GT_BRAN 146
-
-//New IDs for GOL types
-#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
-
-struct gol_menu
-{
- const char *name;
- pixel colour;
- int goltype;
- const char *description;
-};
-typedef struct gol_menu gol_menu;
-
-static gol_menu gmenu[NGOL] =
-{
- {"GOL", PIXPACK(0x0CAC00), 0, "Game Of Life B3/S23"},
- {"HLIF", PIXPACK(0xFF0000), 1, "High Life B36/S23"},
- {"ASIM", PIXPACK(0x0000FF), 2, "Assimilation B345/S4567"},
- {"2x2", PIXPACK(0xFFFF00), 3, "2x2 B36/S125"},
- {"DANI", PIXPACK(0x00FFFF), 4, "Day and Night B3678/S34678"},
- {"AMOE", PIXPACK(0xFF00FF), 5, "Amoeba B357/S1358"},
- {"MOVE", PIXPACK(0xFFFFFF), 6, "'Move' particles. Does not move things.. it is a life type B368/S245"},
- {"PGOL", PIXPACK(0xE05010), 7, "Pseudo Life B357/S238"},
- {"DMOE", PIXPACK(0x500000), 8, "Diamoeba B35678/S5678"},
- {"34", PIXPACK(0x500050), 9, "34 B34/S34"},
- {"LLIF", PIXPACK(0x505050), 10, "Long Life B345/S5"},
- {"STAN", PIXPACK(0x5000FF), 11, "Stains B3678/S235678"},
- {"SEED", PIXPACK(0xFBEC7D), 12, "B2/S"},
- {"MAZE", PIXPACK(0xA8E4A0), 13, "B3/S12345"},
- {"COAG", PIXPACK(0x9ACD32), 14, "B378/S235678"},
- {"WALL", PIXPACK(0x0047AB), 15, "B45678/S2345"},
- {"GNAR", PIXPACK(0xE5B73B), 16, "B1/S1"},
- {"REPL", PIXPACK(0x259588), 17, "B1357/S1357"},
- {"MYST", PIXPACK(0x0C3C00), 18, "B3458/S05678"},
- {"LOTE", PIXPACK(0xFF0000), 19, "Behaves kinda like Living on the Edge S3458/B37/4"},
- {"FRG2", PIXPACK(0x00FF00), 20, "Like Frogs rule S124/B3/3"},
- {"STAR", PIXPACK(0x0000FF), 21, "Like Star Wars rule S3456/B278/6"},
- {"FROG", PIXPACK(0x00AA00), 22, "Frogs S12/B34/3"},
- {"BRAN", PIXPACK(0xCCCC00), 23, "Brian 6 S6/B246/3"}
-};
-
-static int grule[NGOL+1][10] =
-{
-// 0,1,2,3,4,5,6,7,8,STATES live=1 spawn=2 spawn&live=3 States are kind of how long until it dies, normal ones use two states(living,dead) for others the intermediate states live but do nothing
- {0,0,0,0,0,0,0,0,0,2},//blank
- {0,0,1,3,0,0,0,0,0,2},//GOL
- {0,0,1,3,0,0,2,0,0,2},//HLIF
- {0,0,0,2,3,3,1,1,0,2},//ASIM
- {0,1,1,2,0,1,2,0,0,2},//2x2
- {0,0,0,3,1,0,3,3,3,2},//DANI
- {0,1,0,3,0,3,0,2,1,2},//AMOE
- {0,0,1,2,1,1,2,0,2,2},//MOVE
- {0,0,1,3,0,2,0,2,1,2},//PGOL
- {0,0,0,2,0,3,3,3,3,2},//DMOE
- {0,0,0,3,3,0,0,0,0,2},//34
- {0,0,0,2,2,3,0,0,0,2},//LLIF
- {0,0,1,3,0,1,3,3,3,2},//STAN
- {0,0,2,0,0,0,0,0,0,2},//SEED
- {0,1,1,3,1,1,0,0,0,2},//MAZE
- {0,0,1,3,0,1,1,3,3,2},//COAG
- {0,0,1,1,3,3,2,2,2,2},//WALL
- {0,3,0,0,0,0,0,0,0,2},//GNAR
- {0,3,0,3,0,3,0,3,0,2},//REPL
- {1,0,0,2,2,3,1,1,3,2},//MYST
- {0,0,0,3,1,1,0,2,1,4},//LOTE
- {0,1,1,2,1,0,0,0,0,3},//FRG2
- {0,0,2,1,1,1,1,2,2,6},//STAR
- {0,1,1,2,2,0,0,0,0,3},//FROG
- {0,0,2,0,2,0,3,0,0,3},//BRAN
-};
-static int goltype[NGOL] =
-{
- GT_GOL,
- GT_HLIF,
- GT_ASIM,
- GT_2x2,
- GT_DANI,
- GT_AMOE,
- GT_MOVE,
- GT_PGOL,
- GT_DMOE,
- GT_34,
- GT_LLIF,
- GT_STAN,
- GT_SEED,
- GT_MAZE,
- GT_COAG,
- GT_WALL,
- GT_GNAR,
- GT_REPL,
- GT_MYST,
- GT_LOTE,
- GT_FRG2,
- GT_STAR,
- GT_FROG,
- GT_BRAN,
-};
-static int loverule[9][9] =
-{
- {0,0,1,1,0,0,0,0,0},
- {0,1,0,0,1,1,0,0,0},
- {1,0,0,0,0,0,1,0,0},
- {1,0,0,0,0,0,0,1,0},
- {0,1,0,0,0,0,0,0,1},
- {1,0,0,0,0,0,0,1,0},
- {1,0,0,0,0,0,1,0,0},
- {0,1,0,0,1,1,0,0,0},
- {0,0,1,1,0,0,0,0,0},
-};
-static int lolzrule[9][9] =
-{
- {0,0,0,0,0,0,0,0,0},
- {1,0,0,0,0,0,1,0,0},
- {1,0,0,0,0,0,1,0,0},
- {1,0,0,1,1,0,0,1,0},
- {1,0,1,0,0,1,0,1,0},
- {1,0,1,0,0,1,0,1,0},
- {0,1,0,1,1,0,0,1,0},
- {0,1,0,0,0,0,0,1,0},
- {0,1,0,0,0,0,0,1,0},
-};
-
-struct wall_type
-{
- pixel colour;
- pixel eglow; // if emap set, add this to fire glow
- int drawstyle;
- const char *descs;
-};
-typedef struct wall_type wall_type;
-
-static wall_type wtypes[] =
-{
- {PIXPACK(0xC0C0C0), PIXPACK(0x101010), 0, "Wall. Indestructible. Blocks everything. Conductive."},
- {PIXPACK(0x808080), PIXPACK(0x808080), 0, "E-Wall. Becomes transparent when electricity is connected."},
- {PIXPACK(0xFF8080), PIXPACK(0xFF2008), 1, "Detector. Generates electricity when a particle is inside."},
- {PIXPACK(0x808080), PIXPACK(0x000000), 0, "Streamline. Set start point of a streamline."},
- {PIXPACK(0x808080), PIXPACK(0x000000), 0, "Sign. Click on a sign to edit it or anywhere else to place a new one."},
- {PIXPACK(0x8080FF), PIXPACK(0x000000), 1, "Fan. Accelerates air. Use line tool to set direction and strength."},
- {PIXPACK(0xC0C0C0), PIXPACK(0x101010), 2, "Wall. Blocks most particles but lets liquids through. Conductive."},
- {PIXPACK(0x808080), PIXPACK(0x000000), 1, "Wall. Absorbs particles but lets air currents through."},
- {PIXPACK(0x808080), PIXPACK(0x000000), 0, "Erases walls."},
- {PIXPACK(0x808080), PIXPACK(0x000000), 3, "Wall. Indestructible. Blocks everything."},
- {PIXPACK(0x3C3C3C), PIXPACK(0x000000), 1, "Wall. Indestructible. Blocks particles, allows air"},
- {PIXPACK(0x575757), PIXPACK(0x000000), 1, "Wall. Indestructible. Blocks liquids and gases, allows powders"},
- {PIXPACK(0xFFFF22), PIXPACK(0x101010), 2, "Conductor, allows particles, conducts electricity"},
- {PIXPACK(0x242424), PIXPACK(0x101010), 0, "E-Hole, absorbs particles, release them when powered"},
- {PIXPACK(0xFFFFFF), PIXPACK(0x000000), -1, "Air, creates airflow and pressure"},
- {PIXPACK(0xFFBB00), PIXPACK(0x000000), -1, "Heats the targeted element."},
- {PIXPACK(0x00BBFF), PIXPACK(0x000000), -1, "Cools the targeted element."},
- {PIXPACK(0x303030), PIXPACK(0x000000), -1, "Vacuum, reduces air pressure."},
- {PIXPACK(0x579777), PIXPACK(0x000000), 1, "Wall. Indestructible. Blocks liquids and solids, allows gases"},
- {PIXPACK(0x000000), PIXPACK(0x000000), -1, "Drag tool"},
- {PIXPACK(0xFFEE00), PIXPACK(0xAA9900), 4, "Gravity wall"},
- {PIXPACK(0x0000BB), PIXPACK(0x000000), -1, "Positive gravity tool."},
- {PIXPACK(0x000099), PIXPACK(0x000000), -1, "Negative gravity tool."},
- {PIXPACK(0xFFAA00), PIXPACK(0xAA5500), 4, "Energy wall, allows only energy type particles to pass"},
- {PIXPACK(0xFFAA00), PIXPACK(0xAA5500), -1, "Property edit tool"},
-};
-
-#define CHANNELS ((int)(MAX_TEMP-73)/100+2)
-particle portalp[CHANNELS][8][80];
-const particle emptyparticle;
-int wireless[CHANNELS][2];
-extern int portal_rx[8];
-extern int portal_ry[8];
-
-extern int wire_placed;
-extern int force_stacking_check;
-extern int ppip_changed;
-
-extern playerst player;
-extern playerst player2;
-
-extern playerst fighters[256];
-extern unsigned char fighcount;
-
-extern int airMode;
-
-extern particle *parts;
-extern particle *cb_parts;
-extern int parts_lastActiveIndex;
-
-extern unsigned char bmap[YRES/CELL][XRES/CELL];
-extern unsigned char emap[YRES/CELL][XRES/CELL];
-
-extern unsigned char cb_bmap[YRES/CELL][XRES/CELL];
-extern unsigned char cb_emap[YRES/CELL][XRES/CELL];
-
-extern int pfree;
-
-extern unsigned pmap[YRES][XRES];
-unsigned cb_pmap[YRES][XRES];
-
-unsigned photons[YRES][XRES];
-
-int do_move(int i, int x, int y, float nxf, float nyf);
-int try_move(int i, int x, int y, int nx, int ny);
-int eval_move(int pt, int nx, int ny, unsigned *rr);
-void init_can_move();
-
-static void create_cherenkov_photon(int pp);
-static void create_gain_photon(int pp);
-
-void kill_part(int i);
-
-int flood_prop(int x, int y, size_t propoffset, void * propvalue, int proptype);
-
-void detach(int i);
-
-void part_change_type(int i, int x, int y, int t);
-
-void get_gravity_field(int x, int y, float particleGrav, float newtonGrav, float *pGravX, float *pGravY);
-
-int InCurrentBrush(int i, int j, int rx, int ry);
-
-int get_brush_flags();
-
-int create_part(int p, int x, int y, int t);
-
-void delete_part(int x, int y, int flags);
-
-int is_wire(int x, int y);
-
-int is_wire_off(int x, int y);
-
-void set_emap(int x, int y);
-
-int parts_avg(int ci, int ni, int t);
-
-void create_arc(int sx, int sy, int dx, int dy, int midpoints, int variance, int type, int flags);
-
-int nearest_part(int ci, int t, int max_d);
-
-void update_particles_i(pixel *vid, int start, int inc);
-
-void update_particles(pixel *vid);
-
-void rotate_area(int area_x, int area_y, int area_w, int area_h, int invert);
-
-void clear_area(int area_x, int area_y, int area_w, int area_h);
-
-void create_box(int x1, int y1, int x2, int y2, int c, int flags);
-
-int flood_parts(int x, int y, int c, int cm, int bm, int flags);
-
-int flood_INST(int x, int y, int fullc, int cm);
-
-int create_parts(int x, int y, int rx, int ry, int c, int flags, int fill);
-
-void create_line(int x1, int y1, int x2, int y2, int rx, int ry, int c, int flags);
-
-void orbitalparts_get(int block1, int block2, int resblock1[], int resblock2[]);
-
-void orbitalparts_set(int *block1, int *block2, int resblock1[], int resblock2[]);
-
-#endif