TPT: Implement PROP_NEUTABSORB bdf277e687
This commit is contained in:
parent
c261030cef
commit
25ce83d5bf
@ -34,9 +34,9 @@
|
|||||||
#define PROP_CONDUCTS 0x00020 //32 Conducts electricity
|
#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_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_NEUTPENETRATE 0x00080 //128 Penetrated by neutrons
|
||||||
#define PROP_NEUTABSORB 0x00100 //256 Absorbs neutrons, reflect is default (not currently implemented or used)
|
#define PROP_NEUTABSORB 0x00100 //256 Absorbs neutrons, reflect is default
|
||||||
#define PROP_NEUTPASS 0x00200 //512 Neutrons pass through, such as with glass
|
#define PROP_NEUTPASS 0x00200 //512 Neutrons pass through, such as with glass
|
||||||
#define PROP_DEADLY 0x00400 //1024 Is deadly for stickman (not currently implemented or used)
|
#define PROP_DEADLY 0x00400 //1024 Is deadly for stickman
|
||||||
#define PROP_HOT_GLOW 0x00800 //2048 Hot Metal Glow
|
#define PROP_HOT_GLOW 0x00800 //2048 Hot Metal Glow
|
||||||
#define PROP_LIFE 0x01000 //4096 Is a GoL type
|
#define PROP_LIFE 0x01000 //4096 Is a GoL type
|
||||||
#define PROP_RADIOACTIVE 0x02000 //8192 Radioactive
|
#define PROP_RADIOACTIVE 0x02000 //8192 Radioactive
|
||||||
|
@ -1126,6 +1126,8 @@ void Simulation::init_can_move()
|
|||||||
if (ptypes[t].weight <= ptypes[rt].weight) can_move[t][rt] = 0;
|
if (ptypes[t].weight <= ptypes[rt].weight) can_move[t][rt] = 0;
|
||||||
if (t==PT_NEUT && (ptypes[rt].properties&PROP_NEUTPASS))
|
if (t==PT_NEUT && (ptypes[rt].properties&PROP_NEUTPASS))
|
||||||
can_move[t][rt] = 2;
|
can_move[t][rt] = 2;
|
||||||
|
if (t==PT_NEUT && (ptypes[rt].properties&PROP_NEUTABSORB))
|
||||||
|
can_move[t][rt] = 1;
|
||||||
if (t==PT_NEUT && (ptypes[rt].properties&PROP_NEUTPENETRATE))
|
if (t==PT_NEUT && (ptypes[rt].properties&PROP_NEUTPENETRATE))
|
||||||
can_move[t][rt] = 1;
|
can_move[t][rt] = 1;
|
||||||
if ((ptypes[t].properties&PROP_NEUTPENETRATE) && rt==PT_NEUT)
|
if ((ptypes[t].properties&PROP_NEUTPENETRATE) && rt==PT_NEUT)
|
||||||
@ -1345,6 +1347,11 @@ int Simulation::try_move(int i, int x, int y, int nx, int ny)
|
|||||||
}
|
}
|
||||||
//else e=1 , we are trying to swap the particles, return 0 no swap/move, 1 is still overlap/move, because the swap takes place later
|
//else e=1 , we are trying to swap the particles, return 0 no swap/move, 1 is still overlap/move, because the swap takes place later
|
||||||
|
|
||||||
|
if (parts[i].type == PT_NEUT && (ptypes[r & 0xFF].properties & PROP_NEUTABSORB))
|
||||||
|
{
|
||||||
|
parts[i].type = PT_NONE;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if ((r&0xFF)==PT_VOID || (r&0xFF)==PT_PVOD) //this is where void eats particles
|
if ((r&0xFF)==PT_VOID || (r&0xFF)==PT_PVOD) //this is where void eats particles
|
||||||
{
|
{
|
||||||
if (parts[i].type == PT_STKM)
|
if (parts[i].type == PT_STKM)
|
||||||
|
Reference in New Issue
Block a user