#define setBit( x, n ) ( x |= (1<<n) ) //puts bit n in x on true (n=3, 10110 | 01000 = 11110 )
#define resetBit( x, n ) ( x ^= (1<<n) ) //puts bit n in x on false (n=3, 10110 ^ 00100 = 10010)

#define getBit( x, n ) ( x & (1<<n) ) //returns true when bit n in x is set (n=3, 10110 & 00100 = 00100 so TRUE ) (n=4, 10110 & 01000 = 00000 so FALSE)

int weaponsFired = 0;
setBit( weaponsFired, 3 ); //player 3 has fired (0000 | 0100 = 0100)
setBit( weaponsFired, 1 ); //player 1 has fired (0100 | 0001 = 0101)

if( getBit( weaponsFired, 3 ) ) { die(); } //we die due to player 3 (0101 & 0100 = TRUE)

resetBit( weaponsFired, 3 ); //player 3 stopped shooting, player 1 not (0101 ^ 0100 = 0001)

Last edited by Joozey; 07/22/09 22:13.

Click and join the 3dgs irc community!
Room: #3dgs