From 8bbe48b4bd09a618f6c604b8e7952f76cf5a93a8 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Sun, 4 Sep 2011 14:23:31 +0200 Subject: [PATCH] Use bitwise operations for flags. --- code/ai.cpp | 24 +++++++----------- code/aliens.cpp | 60 +++++++++++++++++++++----------------------- code/bullets.cpp | 14 +++++------ code/collectable.cpp | 10 ++------ code/missions.cpp | 2 +- code/player.cpp | 47 +++++++++++----------------------- code/weapons.cpp | 12 ++++----- 7 files changed, 67 insertions(+), 102 deletions(-) diff --git a/code/ai.cpp b/code/ai.cpp index b4b0eab..b744a79 100644 --- a/code/ai.cpp +++ b/code/ai.cpp @@ -112,7 +112,7 @@ void setKlineAttackMethod(object *theEnemy) { theEnemy->maxShield -= 500; if (theEnemy->maxShield == 0) - theEnemy->flags -= FL_CANNOTDIE; + theEnemy->flags &= ~FL_CANNOTDIE; if (theEnemy->maxShield == 1000) { @@ -127,14 +127,14 @@ void setKlineAttackMethod(object *theEnemy) theEnemy->weaponType[1] = W_DIRSHOCKMISSILE; theEnemy->chance[0] = 2; theEnemy->chance[1] = 2; - theEnemy->flags += FL_AIMS; + theEnemy->flags |= FL_AIMS; } else if (theEnemy->maxShield == 0) { setRadioMessage(FACE_KLINE, "ENOUGH!! THIS ENDS NOW!!!", 1); theEnemy->weaponType[0] = W_AIMED_SHOT; theEnemy->weaponType[1] = W_MICRO_HOMING_MISSILES; - theEnemy->flags += FL_CANCLOAK; + theEnemy->flags |= FL_CANCLOAK; theEnemy->chance[0] = 100; theEnemy->chance[1] = 2; } @@ -152,8 +152,7 @@ void setKlineAI(object *theEnemy) { if (currentGame.area != 26) { - if (theEnemy->flags & FL_AIMS) - theEnemy->flags -= FL_AIMS; + theEnemy->flags &= ~FL_AIMS; switch(rand() % 2) { @@ -162,24 +161,19 @@ void setKlineAI(object *theEnemy) break; case 1: theEnemy->weaponType[0] = W_AIMED_SHOT; - theEnemy->flags += FL_AIMS; + theEnemy->flags |= FL_AIMS; break; } } } - if (theEnemy->flags & FL_CIRCLES) - theEnemy->flags -= FL_CIRCLES; - if (theEnemy->flags & FL_CONTINUOUS_FIRE) - theEnemy->flags -= FL_CONTINUOUS_FIRE; - if (theEnemy->flags & FL_DROPMINES) - theEnemy->flags -= FL_DROPMINES; + theEnemy->flags &= ~(FL_CIRCLES | FL_CONTINUOUS_FIRE | FL_DROPMINES); switch(rand() % 10) { case 0: if ((theEnemy->weaponType[0] != W_DIRSHOCKMISSILE) && (theEnemy->weaponType[1] != W_MICRO_HOMING_MISSILES)) - theEnemy->flags += FL_CONTINUOUS_FIRE; + theEnemy->flags |= FL_CONTINUOUS_FIRE; theEnemy->dx = ((theEnemy->x - theEnemy->target->x) / ((300 / theEnemy->speed) + rand() % 100)); theEnemy->dy = ((theEnemy->y - theEnemy->target->y) / ((300 / theEnemy->speed) + rand() % 100)); break; @@ -187,11 +181,11 @@ void setKlineAI(object *theEnemy) case 2: // Kline only attacks then he is ready! if ((!(theEnemy->flags & FL_NOFIRE)) && (currentGame.area == 11)) - theEnemy->flags += FL_DROPMINES; + theEnemy->flags |= FL_DROPMINES; break; case 3: case 4: - theEnemy->flags += FL_CIRCLES; + theEnemy->flags |= FL_CIRCLES; break; default: setEnemyAI(theEnemy); diff --git a/code/aliens.cpp b/code/aliens.cpp index 8e219eb..9a6bce6 100644 --- a/code/aliens.cpp +++ b/code/aliens.cpp @@ -278,7 +278,7 @@ bool addAlien() enemy[index].ammo[0] = 0; if (currentGame.area == 18) - enemy[index].flags += FL_HASMINIMUMSPEED; + enemy[index].flags |= FL_HASMINIMUMSPEED; return true; } @@ -351,7 +351,7 @@ static void getPreDefinedAliens() { enemy[index].active = false; enemy[index].maxShield = enemy[index].shield = 400; - enemy[index].flags -= FL_RUNSAWAY; + enemy[index].flags &= ~FL_RUNSAWAY; enemy[index].speed = 3; } @@ -375,11 +375,11 @@ static void getPreDefinedAliens() if ((currentGame.area == 17) && (enemy[index].classDef == CD_BOSS)) { enemy[index].imageIndex[1] = 29; - enemy[index].flags += FL_IMMORTAL; + enemy[index].flags |= FL_IMMORTAL; } if (currentGame.area == 18) - enemy[index].flags += FL_HASMINIMUMSPEED; + enemy[index].flags |= FL_HASMINIMUMSPEED; if (currentGame.area == 23) { @@ -492,7 +492,7 @@ static void addFriendly(int type) // For the sake of it being the final battle :) if (currentGame.area == 25) - enemy[type].flags += FL_IMMORTAL; + enemy[type].flags |= FL_IMMORTAL; } void setTarget(int index) @@ -594,9 +594,7 @@ void initAliens() if (currentGame.area == 26) { - enemy[WC_KLINE].flags += FL_IMMORTAL; - enemy[WC_KLINE].flags += FL_NOFIRE; - enemy[WC_KLINE].flags += FL_NOMOVE; + enemy[WC_KLINE].flags |= FL_IMMORTAL | FL_NOFIRE | FL_NOMOVE; enemy[WC_KLINE].x = 600; enemy[WC_KLINE].y = 300; @@ -980,7 +978,7 @@ void doAliens() } else { - theEnemy->flags -= FL_IMMORTAL; + theEnemy->flags &= ~FL_IMMORTAL; theEnemy->owner = theEnemy; theEnemy->chance[0] = 25; } @@ -1463,7 +1461,7 @@ void defineAliens() defEnemy[CD_FRIGATE_WING1].collectChance = 100; defEnemy[CD_FRIGATE_WING1].collectType = P_ANYTHING; defEnemy[CD_FRIGATE_WING1].collectValue = 250; - defEnemy[CD_FRIGATE_WING1].flags = FL_WEAPCO + FL_DAMAGEOWNER; + defEnemy[CD_FRIGATE_WING1].flags = FL_WEAPCO | FL_DAMAGEOWNER; defEnemy[CD_FRIGATE_WING2].classDef = CD_FRIGATE_WING2; defEnemy[CD_FRIGATE_WING2].AIType = AI_NORMAL; @@ -1480,7 +1478,7 @@ void defineAliens() defEnemy[CD_FRIGATE_WING2].collectChance = 100; defEnemy[CD_FRIGATE_WING2].collectType = P_ANYTHING; defEnemy[CD_FRIGATE_WING2].collectValue = 250; - defEnemy[CD_FRIGATE_WING2].flags = FL_WEAPCO + FL_DAMAGEOWNER; + defEnemy[CD_FRIGATE_WING2].flags = FL_WEAPCO | FL_DAMAGEOWNER; // Transport ship defEnemy[CD_TRANSPORTSHIP].classDef = CD_TRANSPORTSHIP; @@ -1498,7 +1496,7 @@ void defineAliens() defEnemy[CD_TRANSPORTSHIP].collectChance = 100; defEnemy[CD_TRANSPORTSHIP].collectType = P_WEAPONS; defEnemy[CD_TRANSPORTSHIP].collectValue = 30; - defEnemy[CD_TRANSPORTSHIP].flags = FL_WEAPCO + FL_NOFIRE; + defEnemy[CD_TRANSPORTSHIP].flags = FL_WEAPCO | FL_NOFIRE; // Cargo ship defEnemy[CD_CARGOSHIP].classDef = CD_CARGOSHIP; @@ -1516,7 +1514,7 @@ void defineAliens() defEnemy[CD_CARGOSHIP].collectChance = 50; defEnemy[CD_CARGOSHIP].collectType = P_ANYTHING; defEnemy[CD_CARGOSHIP].collectValue = 100; - defEnemy[CD_CARGOSHIP].flags = FL_WEAPCO + FL_NOFIRE; + defEnemy[CD_CARGOSHIP].flags = FL_WEAPCO | FL_NOFIRE; // Weapco Miner defEnemy[CD_MINER].classDef = CD_MINER; @@ -1534,7 +1532,7 @@ void defineAliens() defEnemy[CD_MINER].collectChance = 100; defEnemy[CD_MINER].collectType = P_ANYTHING; defEnemy[CD_MINER].collectValue = 30; - defEnemy[CD_MINER].flags = FL_WEAPCO + FL_NOFIRE + FL_DROPMINES; + defEnemy[CD_MINER].flags = FL_WEAPCO | FL_NOFIRE | FL_DROPMINES; // Kline defEnemy[CD_KLINE].classDef = CD_KLINE; @@ -1552,7 +1550,7 @@ void defineAliens() defEnemy[CD_KLINE].collectChance = 0; defEnemy[CD_KLINE].collectType = P_ANYTHING; defEnemy[CD_KLINE].collectValue = 0; - defEnemy[CD_KLINE].flags = FL_WEAPCO + FL_CANNOTDIE + FL_ALWAYSFACE + FL_CIRCLES; + defEnemy[CD_KLINE].flags = FL_WEAPCO | FL_CANNOTDIE | FL_ALWAYSFACE | FL_CIRCLES; // Aim Fighter defEnemy[CD_AIMFIGHTER].classDef = CD_AIMFIGHTER; @@ -1570,7 +1568,7 @@ void defineAliens() defEnemy[CD_AIMFIGHTER].collectChance = 75; defEnemy[CD_AIMFIGHTER].collectType = P_ANYTHING; defEnemy[CD_AIMFIGHTER].collectValue = 100; - defEnemy[CD_AIMFIGHTER].flags = FL_WEAPCO + FL_AIMS; + defEnemy[CD_AIMFIGHTER].flags = FL_WEAPCO | FL_AIMS; // Slave ship defEnemy[CD_SLAVETRANSPORT].classDef = CD_SLAVETRANSPORT; @@ -1588,7 +1586,7 @@ void defineAliens() defEnemy[CD_SLAVETRANSPORT].collectChance = 100; defEnemy[CD_SLAVETRANSPORT].collectType = P_SLAVES; defEnemy[CD_SLAVETRANSPORT].collectValue = 25; - defEnemy[CD_SLAVETRANSPORT].flags = FL_WEAPCO + FL_NOFIRE; + defEnemy[CD_SLAVETRANSPORT].flags = FL_WEAPCO | FL_NOFIRE; // Good Transport defEnemy[CD_GOODTRANSPORT].classDef = CD_GOODTRANSPORT; @@ -1606,7 +1604,7 @@ void defineAliens() defEnemy[CD_GOODTRANSPORT].collectChance = 0; defEnemy[CD_GOODTRANSPORT].collectType = P_ANYTHING; defEnemy[CD_GOODTRANSPORT].collectValue = 0; - defEnemy[CD_GOODTRANSPORT].flags = FL_FRIEND + FL_NOFIRE + FL_AIMS; + defEnemy[CD_GOODTRANSPORT].flags = FL_FRIEND | FL_NOFIRE | FL_AIMS; // Sid Wilson defEnemy[CD_SID].classDef = CD_SID; @@ -1624,7 +1622,7 @@ void defineAliens() defEnemy[CD_SID].collectChance = 0; defEnemy[CD_SID].collectType = P_ANYTHING; defEnemy[CD_SID].collectValue = 0; - defEnemy[CD_SID].flags = FL_FRIEND + FL_AIMS; + defEnemy[CD_SID].flags = FL_FRIEND | FL_AIMS; // Mining Vessel Boss defEnemy[CD_MINEBOSS].classDef = CD_BOSS; @@ -1642,7 +1640,7 @@ void defineAliens() defEnemy[CD_MINEBOSS].collectChance = 100; defEnemy[CD_MINEBOSS].collectType = P_ANYTHING; defEnemy[CD_MINEBOSS].collectValue = 255; - defEnemy[CD_MINEBOSS].flags = FL_WEAPCO + FL_IMMORTAL; + defEnemy[CD_MINEBOSS].flags = FL_WEAPCO | FL_IMMORTAL; defEnemy[CD_BOSS2_WING1].classDef = CD_BOSS2_WING1; defEnemy[CD_BOSS2_WING1].AIType = AI_NORMAL; @@ -1659,7 +1657,7 @@ void defineAliens() defEnemy[CD_BOSS2_WING1].collectChance = 100; defEnemy[CD_BOSS2_WING1].collectType = P_ANYTHING; defEnemy[CD_BOSS2_WING1].collectValue = 255; - defEnemy[CD_BOSS2_WING1].flags = FL_WEAPCO + FL_DAMAGEOWNER; + defEnemy[CD_BOSS2_WING1].flags = FL_WEAPCO | FL_DAMAGEOWNER; defEnemy[CD_BOSS2_WING2].classDef = CD_BOSS2_WING2; defEnemy[CD_BOSS2_WING2].AIType = AI_NORMAL; @@ -1676,7 +1674,7 @@ void defineAliens() defEnemy[CD_BOSS2_WING2].collectChance = 100; defEnemy[CD_BOSS2_WING2].collectType = P_ANYTHING; defEnemy[CD_BOSS2_WING2].collectValue = 255; - defEnemy[CD_BOSS2_WING2].flags = FL_WEAPCO + FL_DEPLOYDRONES + FL_DAMAGEOWNER; + defEnemy[CD_BOSS2_WING2].flags = FL_WEAPCO | FL_DEPLOYDRONES | FL_DAMAGEOWNER; defEnemy[CD_BOSS2_WING3].classDef = CD_BOSS2_WING3; defEnemy[CD_BOSS2_WING3].AIType = AI_NORMAL; @@ -1693,7 +1691,7 @@ void defineAliens() defEnemy[CD_BOSS2_WING3].collectChance = 100; defEnemy[CD_BOSS2_WING3].collectType = P_ANYTHING; defEnemy[CD_BOSS2_WING3].collectValue = 255; - defEnemy[CD_BOSS2_WING3].flags = FL_WEAPCO + FL_DEPLOYDRONES + FL_DAMAGEOWNER; + defEnemy[CD_BOSS2_WING3].flags = FL_WEAPCO | FL_DEPLOYDRONES | FL_DAMAGEOWNER; defEnemy[CD_BOSS2_WING4].classDef = CD_BOSS2_WING4; defEnemy[CD_BOSS2_WING4].AIType = AI_NORMAL; @@ -1710,7 +1708,7 @@ void defineAliens() defEnemy[CD_BOSS2_WING4].collectChance = 100; defEnemy[CD_BOSS2_WING4].collectType = P_ANYTHING; defEnemy[CD_BOSS2_WING4].collectValue = 255; - defEnemy[CD_BOSS2_WING4].flags = FL_WEAPCO + FL_DAMAGEOWNER; + defEnemy[CD_BOSS2_WING4].flags = FL_WEAPCO | FL_DAMAGEOWNER; // Drone defEnemy[CD_DRONE].classDef = CD_DRONE; @@ -1746,7 +1744,7 @@ void defineAliens() defEnemy[CD_CLOAKFIGHTER].collectChance = 100; defEnemy[CD_CLOAKFIGHTER].collectType = P_CASH; defEnemy[CD_CLOAKFIGHTER].collectValue = 255; - defEnemy[CD_CLOAKFIGHTER].flags = FL_WEAPCO + FL_CANCLOAK + FL_RUNSAWAY; + defEnemy[CD_CLOAKFIGHTER].flags = FL_WEAPCO | FL_CANCLOAK | FL_RUNSAWAY; // Evil Ursula defEnemy[CD_EVILURSULA].classDef = CD_EVILURSULA; @@ -1782,7 +1780,7 @@ void defineAliens() defEnemy[CD_KRASS].collectChance = 100; defEnemy[CD_KRASS].collectType = P_ANYTHING; defEnemy[CD_KRASS].collectValue = 255; - defEnemy[CD_KRASS].flags = FL_FRIEND + FL_IMMORTAL; + defEnemy[CD_KRASS].flags = FL_FRIEND | FL_IMMORTAL; // Executive Transport defEnemy[CD_EXEC].classDef = CD_BOSS; @@ -1800,7 +1798,7 @@ void defineAliens() defEnemy[CD_EXEC].collectChance = 0; defEnemy[CD_EXEC].collectType = P_ANYTHING; defEnemy[CD_EXEC].collectValue = 0; - defEnemy[CD_EXEC].flags = FL_WEAPCO + FL_NOFIRE; + defEnemy[CD_EXEC].flags = FL_WEAPCO | FL_NOFIRE; // Asteroid defEnemy[CD_ASTEROID].classDef = CD_ASTEROID; @@ -1925,7 +1923,7 @@ void defineAliens() defEnemy[CD_BARRIER].collectChance = 100; defEnemy[CD_BARRIER].collectType = P_ANYTHING; defEnemy[CD_BARRIER].collectValue = 25; - defEnemy[CD_BARRIER].flags = FL_WEAPCO + FL_NOFIRE; + defEnemy[CD_BARRIER].flags = FL_WEAPCO | FL_NOFIRE; // Neptune Boss defEnemy[CD_NEPTUNEBOSS].classDef = CD_NEPTUNEBOSS; @@ -1961,7 +1959,7 @@ void defineAliens() defEnemy[CD_MOBILESHIELD].collectChance = 100; defEnemy[CD_MOBILESHIELD].collectType = P_ANYTHING; defEnemy[CD_MOBILESHIELD].collectValue = 25; - defEnemy[CD_MOBILESHIELD].flags = FL_WEAPCO + FL_NOFIRE; + defEnemy[CD_MOBILESHIELD].flags = FL_WEAPCO | FL_NOFIRE; // Firefly defEnemy[CD_FIREFLY].classDef = CD_FIREFLY; @@ -2015,7 +2013,7 @@ void defineAliens() defEnemy[CD_URANUSBOSSWING1].collectChance = 100; defEnemy[CD_URANUSBOSSWING1].collectType = P_ANYTHING; defEnemy[CD_URANUSBOSSWING1].collectValue = 250; - defEnemy[CD_URANUSBOSSWING1].flags = FL_WEAPCO + FL_IMMORTAL; + defEnemy[CD_URANUSBOSSWING1].flags = FL_WEAPCO | FL_IMMORTAL; // Uranus Boss Wing 2 defEnemy[CD_URANUSBOSSWING2].classDef = CD_URANUSBOSSWING2; @@ -2033,7 +2031,7 @@ void defineAliens() defEnemy[CD_URANUSBOSSWING2].collectChance = 100; defEnemy[CD_URANUSBOSSWING2].collectType = P_ANYTHING; defEnemy[CD_URANUSBOSSWING2].collectValue = 250; - defEnemy[CD_URANUSBOSSWING2].flags = FL_WEAPCO + FL_IMMORTAL; + defEnemy[CD_URANUSBOSSWING2].flags = FL_WEAPCO | FL_IMMORTAL; saveAliens(); } diff --git a/code/bullets.cpp b/code/bullets.cpp index 259442a..5f1d242 100644 --- a/code/bullets.cpp +++ b/code/bullets.cpp @@ -71,9 +71,9 @@ void addBullet(object *theWeapon, object *attacker, int y, int dy) } if (attacker->flags & FL_WEAPCO) - bullet->flags += WF_WEAPCO; + bullet->flags |= WF_WEAPCO; else - bullet->flags += WF_FRIEND; + bullet->flags |= WF_FRIEND; bullet->owner = attacker->owner; @@ -489,7 +489,7 @@ void fireRay(object *attacker) attacker->ammo[0]--; if (attacker->ammo[0] < 1) - attacker->flags -= FL_FIRERAY; + attacker->flags &= ~FL_FIRERAY; } /* @@ -630,9 +630,8 @@ void doBullets() { if (!(theEnemy->flags & FL_LEAVESECTOR)) { - theEnemy->flags += FL_LEAVESECTOR; - if (theEnemy->flags & FL_CIRCLES) - theEnemy->flags -= FL_CIRCLES; + theEnemy->flags |= FL_LEAVESECTOR; + theEnemy->flags &= ~FL_CIRCLES; if (currentGame.area == 11) setRadioMessage(FACE_KLINE, "Seems I underestimated you, Bainfield! We'll meet again!", 1); else if (currentGame.area == 25) @@ -648,8 +647,7 @@ void doBullets() if ((theEnemy->flags & FL_RUNSAWAY) && ((rand() % 50) == 0)) { - if (!(theEnemy->flags & FL_LEAVESECTOR)) - theEnemy->flags += FL_LEAVESECTOR; + theEnemy->flags |= FL_LEAVESECTOR; } if (bullet->id != WT_CHARGER) diff --git a/code/collectable.cpp b/code/collectable.cpp index 59be29b..a17e418 100644 --- a/code/collectable.cpp +++ b/code/collectable.cpp @@ -327,15 +327,9 @@ void doCollectables() weapon[1].damage = 5; weapon[1].reload[0] = 7; - if (weapon[1].flags & WF_STRAIGHT) - weapon[1].flags -= WF_STRAIGHT; + weapon[1].flags &= ~(WF_STRAIGHT | WF_THIN_SPREAD); + weapon[1].flags |= WF_WIDE_SPREAD; - if (weapon[1].flags & WF_THIN_SPREAD) - weapon[1].flags -= WF_THIN_SPREAD; - - if (!(weapon[1].flags & WF_WIDE_SPREAD)) - weapon[1].flags += WF_WIDE_SPREAD; - sprintf(temp, "Picked up a Super Charge!!"); if (player.ammo[0] < 50) diff --git a/code/missions.cpp b/code/missions.cpp index 8802b6a..342a64f 100644 --- a/code/missions.cpp +++ b/code/missions.cpp @@ -504,7 +504,7 @@ static char revealHiddenObjectives() enemy[WC_KLINE].active = true; enemy[WC_KLINE].x = player.x + 1000; enemy[WC_KLINE].y = player.y; - enemy[WC_KLINE].flags += FL_IMMORTAL + FL_NOFIRE; + enemy[WC_KLINE].flags |= FL_IMMORTAL | FL_NOFIRE; setTarget(WC_KLINE); loadMusic("music/TranceGeneration.mod"); Mix_PlayMusic(engine.music, -1); diff --git a/code/player.cpp b/code/player.cpp index f60e7c9..4da3aa3 100644 --- a/code/player.cpp +++ b/code/player.cpp @@ -136,47 +136,32 @@ void doPlayer() { if (weapon[0].flags & WF_THIN_SPREAD) { - weapon[0].flags -= WF_THIN_SPREAD; - weapon[0].flags += WF_STRAIGHT; + weapon[0].flags &= ~WF_THIN_SPREAD; + weapon[0].flags |= WF_STRAIGHT; setInfoLine("Weapon set to Concentrate", FONT_WHITE); } else { - weapon[0].flags -= WF_STRAIGHT; - weapon[0].flags += WF_THIN_SPREAD; + weapon[0].flags &= ~WF_STRAIGHT; + weapon[0].flags |= WF_THIN_SPREAD; setInfoLine("Weapon set to Spread", FONT_WHITE); } } } else { - if (weapon[1].ammo[0] == 3) + if (weapon[1].ammo[0] == 3 || weapon[1].ammo[0] == 4) { if (weapon[1].flags & WF_THIN_SPREAD) { - weapon[1].flags -= WF_THIN_SPREAD; - weapon[1].flags += WF_STRAIGHT; + weapon[1].flags &= ~WF_THIN_SPREAD; + weapon[1].flags |= WF_STRAIGHT; setInfoLine("Weapon set to Concentrate", FONT_WHITE); } else { - weapon[1].flags -= WF_STRAIGHT; - weapon[1].flags += WF_THIN_SPREAD; - setInfoLine("Weapon set to Spread", FONT_WHITE); - } - } - else if (weapon[1].ammo[0] == 4) - { - if (weapon[1].flags & WF_THIN_SPREAD) - { - weapon[1].flags -= WF_THIN_SPREAD; - weapon[1].flags += WF_STRAIGHT; - setInfoLine("Weapon set to Concentrate", FONT_WHITE); - } - else - { - weapon[1].flags -= WF_STRAIGHT; - weapon[1].flags += WF_THIN_SPREAD; + weapon[1].flags &= ~WF_STRAIGHT; + weapon[1].flags |= WF_THIN_SPREAD; setInfoLine("Weapon set to Spread", FONT_WHITE); } } @@ -184,18 +169,14 @@ void doPlayer() { if (weapon[1].flags & WF_WIDE_SPREAD) { - if (weapon[1].flags & WF_THIN_SPREAD) - weapon[1].flags -= WF_THIN_SPREAD; - weapon[1].flags -= WF_WIDE_SPREAD; - weapon[1].flags += WF_STRAIGHT; + weapon[1].flags &= ~(WF_THIN_SPREAD | WF_WIDE_SPREAD); + weapon[1].flags |= WF_STRAIGHT; setInfoLine("Weapon set to Concentrate", FONT_WHITE); } else { - if (weapon[1].flags & WF_THIN_SPREAD) - weapon[1].flags -= WF_THIN_SPREAD; - weapon[1].flags -= WF_STRAIGHT; - weapon[1].flags += WF_WIDE_SPREAD; + weapon[1].flags &= (WF_THIN_SPREAD | WF_STRAIGHT); + weapon[1].flags |= WF_WIDE_SPREAD; setInfoLine("Weapon set to Spread", FONT_WHITE); } } @@ -308,7 +289,7 @@ void doPlayer() if (currentGame.area == 18) { for (int i = 0 ; i < MAX_ALIENS ; i++) - enemy[i].flags += FL_LEAVESECTOR; + enemy[i].flags |= FL_LEAVESECTOR; } playSound(SFX_DEATH); diff --git a/code/weapons.cpp b/code/weapons.cpp index 3581b7a..d6c77a1 100644 --- a/code/weapons.cpp +++ b/code/weapons.cpp @@ -158,7 +158,7 @@ void initWeapons() weapon[W_MICRO_ROCKETS].damage = 3; weapon[W_MICRO_ROCKETS].reload[0] = 30; weapon[W_MICRO_ROCKETS].speed = 15; - weapon[W_MICRO_ROCKETS].flags = WF_STRAIGHT + WF_VARIABLE_SPEED; + weapon[W_MICRO_ROCKETS].flags = WF_STRAIGHT | WF_VARIABLE_SPEED; weapon[W_MICRO_ROCKETS].imageIndex[0] = 2; weapon[W_MICRO_ROCKETS].imageIndex[1] = 3; @@ -196,7 +196,7 @@ void initWeapons() weapon[W_HOMING_MISSILE].damage = 15; weapon[W_HOMING_MISSILE].reload[0] = 35; weapon[W_HOMING_MISSILE].speed = 10; - weapon[W_HOMING_MISSILE].flags = WF_STRAIGHT + WF_HOMING; + weapon[W_HOMING_MISSILE].flags = WF_STRAIGHT | WF_HOMING; weapon[W_HOMING_MISSILE].imageIndex[0] = 4; weapon[W_HOMING_MISSILE].imageIndex[1] = 4; @@ -213,7 +213,7 @@ void initWeapons() weapon[W_MICRO_HOMING_MISSILES].damage = 12; weapon[W_MICRO_HOMING_MISSILES].reload[0] = 65; weapon[W_MICRO_HOMING_MISSILES].speed = 3; - weapon[W_MICRO_HOMING_MISSILES].flags = WF_STRAIGHT + WF_HOMING; + weapon[W_MICRO_HOMING_MISSILES].flags = WF_STRAIGHT | WF_HOMING; weapon[W_MICRO_HOMING_MISSILES].imageIndex[0] = 4; weapon[W_MICRO_HOMING_MISSILES].imageIndex[1] = 4; @@ -223,7 +223,7 @@ void initWeapons() weapon[W_AIMED_SHOT].damage = 2; weapon[W_AIMED_SHOT].reload[0] = 15; weapon[W_AIMED_SHOT].speed = 0; - weapon[W_AIMED_SHOT].flags = WF_STRAIGHT + WF_AIMED; + weapon[W_AIMED_SHOT].flags = WF_STRAIGHT | WF_AIMED; weapon[W_AIMED_SHOT].imageIndex[0] = 33; weapon[W_AIMED_SHOT].imageIndex[1] = 34; @@ -243,7 +243,7 @@ void initWeapons() weapon[W_IONCANNON].damage = 1; weapon[W_IONCANNON].reload[0] = 2; weapon[W_IONCANNON].speed = 10; - weapon[W_IONCANNON].flags = WF_STRAIGHT + WF_DISABLE + WF_AIMED; + weapon[W_IONCANNON].flags = WF_STRAIGHT | WF_DISABLE | WF_AIMED; weapon[W_IONCANNON].imageIndex[0] = 35; weapon[W_IONCANNON].imageIndex[1] = 35; @@ -253,7 +253,7 @@ void initWeapons() weapon[W_DIRSHOCKMISSILE].damage = 20; weapon[W_DIRSHOCKMISSILE].reload[0] = 60; weapon[W_DIRSHOCKMISSILE].speed = 0; - weapon[W_DIRSHOCKMISSILE].flags = WF_STRAIGHT + WF_AIMED + WF_TIMEDEXPLOSION; + weapon[W_DIRSHOCKMISSILE].flags = WF_STRAIGHT | WF_AIMED | WF_TIMEDEXPLOSION; weapon[W_DIRSHOCKMISSILE].imageIndex[0] = 4; weapon[W_DIRSHOCKMISSILE].imageIndex[1] = 4;