diff --git a/src/alien.cpp b/src/alien.cpp
index 5cde1f2..284dd98 100644
--- a/src/alien.cpp
+++ b/src/alien.cpp
@@ -1246,24 +1246,20 @@ any enemy craft that enter their line of sight.
*/
int alien_enemiesInFront(object *alien)
{
- object *anEnemy = aliens;
-
for (int i = 0 ; i < ALIEN_MAX ; i++)
{
- if ((alien != anEnemy) && (anEnemy->flags & FL_WEAPCO) &&
- (anEnemy->shield > 0))
+ if ((alien != &aliens[i]) && (aliens[i].flags & FL_WEAPCO) &&
+ (aliens[i].shield > 0))
{
- if ((alien->y > anEnemy->y - 15) &&
- (alien->y < anEnemy->y + anEnemy->image[0]->h + 15))
+ if ((alien->y > aliens[i].y - 15) &&
+ (alien->y < aliens[i].y + aliens[i].image[0]->h + 15))
{
- if ((alien->face == 1) && (anEnemy->x < alien->x))
+ if ((alien->face == 1) && (aliens[i].x < alien->x))
return 1;
- if ((alien->face == 0) && (anEnemy->x > alien->x))
+ if ((alien->face == 0) && (aliens[i].x > alien->x))
return 1;
}
}
-
- anEnemy++;
}
return 0;
@@ -1303,8 +1299,6 @@ void alien_move(object *alien)
}
}
- object *anEnemy = aliens;
-
if (checkCollisions)
{
for (int i = 0 ; i < ALIEN_MAX ; i++)
@@ -1312,18 +1306,17 @@ void alien_move(object *alien)
if ((alien->flags & FL_LEAVESECTOR) ||
(alien->classDef == CD_DRONE) ||
(alien->classDef == CD_ASTEROID2) ||
- (alien->owner == anEnemy->owner) ||
- (alien->owner->owner == anEnemy->owner) ||
- (anEnemy->shield < 1))
+ (alien->owner == aliens[i].owner) ||
+ (alien->owner->owner == aliens[i].owner) ||
+ (aliens[i].shield < 1))
{
- anEnemy++;
continue;
}
- if (collision(alien, anEnemy))
+ if (collision(alien, &aliens[i]))
{
- if ((anEnemy->classDef == CD_BARRIER) &&
- (anEnemy->owner != alien))
+ if ((aliens[i].classDef == CD_BARRIER) &&
+ (aliens[i].owner != alien))
{
alien->shield--;
alien->hit = 3;
@@ -1332,8 +1325,6 @@ void alien_move(object *alien)
audio_playSound(SFX_HIT, alien->x);
}
}
-
- anEnemy++;
}
}
diff --git a/src/bullet.cpp b/src/bullet.cpp
index a9154a7..e1a2350 100644
--- a/src/bullet.cpp
+++ b/src/bullet.cpp
@@ -209,82 +209,6 @@ char checkPlayerShockDamage(float x, float y)
return 0;
}
-/*
-Fill in later...
-*/
-void fireRay(object *attacker)
-{
- SDL_Rect ray;
-
- if (attacker->face == 0)
- {
- ray.x = (int)(attacker->x + attacker->image[0]->w);
- }
- else
- {
- ray.x = (int)(attacker->x - 800);
- }
- ray.y = (int)(attacker->y + attacker->engineY - 1);
- ray.h = 3;
- ray.w = 800;
-
- int red = SDL_MapRGB(screen->format, rand() % 256, 0x00, 0x00);
- SDL_FillRect(screen, &ray, red);
- addBuffer(ray.x, ray.y, ray.w, ray.h);
-
- if (attacker != &player)
- {
- if (player.shield > 0)
- {
- if (collision(player.x, player.y, player.image[0]->w,
- player.image[0]->h, ray.x, ray.y, ray.w, ray.h) &&
- (!engine.cheatShield))
- {
- if (player.shield > engine.lowShield)
- {
- if (player.shield - 1 <= engine.lowShield)
- {
- setInfoLine("!!! WARNING: SHIELD LOW !!!", FONT_RED);
- }
- }
- player.shield--;
-
- addExplosion(player.x, player.y, E_SMALL_EXPLOSION);
- audio_playSound(SFX_HIT, player.x);
- if (player.shield < 1)
- {
- audio_playSound(SFX_DEATH, player.x);
- audio_playSound(SFX_EXPLOSION, player.x);
- }
- }
- }
- }
-
- object *anEnemy = aliens;
-
- for (int i = 0 ; i < ALIEN_MAX ; i++)
- {
- if (anEnemy->flags & FL_IMMORTAL)
- continue;
-
- if ((anEnemy->shield > 0) && (attacker != anEnemy) &&
- (attacker->classDef != anEnemy->classDef))
- {
- if (collision(anEnemy->x, anEnemy->y, anEnemy->image[0]->w,
- anEnemy->image[0]->h, ray.x, ray.y, ray.w, ray.h))
- {
- alien_hurt(anEnemy, attacker->owner, 1, false);
- }
- }
-
- anEnemy++;
- }
-
- attacker->ammo[0]--;
- if (attacker->ammo[0] < 1)
- attacker->flags &= ~FL_FIRERAY;
-}
-
/*
This handles active bullets in a linked list. The current bullet and
previous bullet pointers are first assigned to the main header bullet
diff --git a/src/bullet.h b/src/bullet.h
index 22be9a8..7bb4579 100644
--- a/src/bullet.h
+++ b/src/bullet.h
@@ -22,7 +22,6 @@ along with this program. If not, see .
void bullet_add(object *theWeapon, object *attacker, int y, int dy);
extern char checkPlayerShockDamage(float x, float y);
-extern void fireRay(object *attacker);
extern void doBullets();
#endif
diff --git a/src/game.cpp b/src/game.cpp
index 5dc0bca..d1c07be 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -784,7 +784,7 @@ int mainGameLoop()
if (alien->flags & FL_FIRERAY)
{
- fireRay(alien);
+ ship_fireRay(alien);
}
else
{
diff --git a/src/ship.cpp b/src/ship.cpp
index 027c603..964bbcb 100644
--- a/src/ship.cpp
+++ b/src/ship.cpp
@@ -110,3 +110,75 @@ void ship_fireBullet(object *ship, int weaponType)
}
}
}
+
+/*
+Fill in later...
+*/
+void ship_fireRay(object *ship)
+{
+ SDL_Rect ray;
+
+ if (ship->face == 0)
+ {
+ ray.x = (int)(ship->x + ship->image[0]->w);
+ }
+ else
+ {
+ ray.x = (int)(ship->x - 800);
+ }
+ ray.y = (int)(ship->y + ship->engineY - 1);
+ ray.h = 3;
+ ray.w = 800;
+
+ int red = SDL_MapRGB(screen->format, rand() % 256, 0x00, 0x00);
+ SDL_FillRect(screen, &ray, red);
+ addBuffer(ray.x, ray.y, ray.w, ray.h);
+
+ if (ship != &player)
+ {
+ if (player.shield > 0)
+ {
+ if (collision(player.x, player.y, player.image[0]->w,
+ player.image[0]->h, ray.x, ray.y, ray.w, ray.h) &&
+ (!engine.cheatShield))
+ {
+ if (player.shield > engine.lowShield)
+ {
+ if (player.shield - 1 <= engine.lowShield)
+ {
+ setInfoLine("!!! WARNING: SHIELD LOW !!!", FONT_RED);
+ }
+ }
+ player.shield--;
+
+ addExplosion(player.x, player.y, E_SMALL_EXPLOSION);
+ audio_playSound(SFX_HIT, player.x);
+ if (player.shield < 1)
+ {
+ audio_playSound(SFX_DEATH, player.x);
+ audio_playSound(SFX_EXPLOSION, player.x);
+ }
+ }
+ }
+ }
+
+ for (int i = 0 ; i < ALIEN_MAX ; i++)
+ {
+ if (aliens[i].flags & FL_IMMORTAL)
+ continue;
+
+ if ((aliens[i].shield > 0) && (ship != &aliens[i]) &&
+ (ship->classDef != aliens[i].classDef))
+ {
+ if (collision(aliens[i].x, aliens[i].y, aliens[i].image[0]->w,
+ aliens[i].image[0]->h, ray.x, ray.y, ray.w, ray.h))
+ {
+ alien_hurt(&aliens[i], ship->owner, 1, false);
+ }
+ }
+ }
+
+ ship->ammo[0]--;
+ if (ship->ammo[0] < 1)
+ ship->flags &= ~FL_FIRERAY;
+}
diff --git a/src/ship.h b/src/ship.h
index a310724..63b1025 100644
--- a/src/ship.h
+++ b/src/ship.h
@@ -19,5 +19,6 @@ along with this program. If not, see .
#define SHIP_H
void ship_fireBullet(object *ship, int weaponType);
+void ship_fireRay(object *ship);
#endif