diff --git a/src/bullet.cpp b/src/bullet.cpp
index 54a1d1c..6faeb37 100644
--- a/src/bullet.cpp
+++ b/src/bullet.cpp
@@ -22,7 +22,7 @@ along with this program. If not, see .
void bullet_add(object *theWeapon, object *attacker, int y, int dy)
{
object *bullet;
- signed char imageIndex;
+ int imageIndex;
int tempX, tempY, steps;
bullet = new object;
@@ -131,7 +131,7 @@ void bullet_add(object *theWeapon, object *attacker, int y, int dy)
{
bullet->dx = RANDRANGE(-20, 20);
bullet->dy = RANDRANGE(-20, 20);
- bullet->image[0] = gfx_sprites[4];
+ bullet->image[0] = gfx_sprites[SP_SMALL_EXPLOSION];
}
engine.bulletTail->next = bullet;
diff --git a/src/cargo.cpp b/src/cargo.cpp
index 96b8eab..9dacc8e 100644
--- a/src/cargo.cpp
+++ b/src/cargo.cpp
@@ -58,7 +58,7 @@ object *cargo_add(object *owner, int cargoType)
cargo[index].dx = 0;
cargo[index].dy = 0;
cargo[index].collectType = cargoType;
- cargo[index].image[0] = gfx_sprites[32];
+ cargo[index].image[0] = gfx_sprites[SP_CARGO];
if (cargoType == P_PHOEBE)
cargo[index].image[0] = gfx_shipSprites[SS_FRIEND];
diff --git a/src/collectable.cpp b/src/collectable.cpp
index e8b55e1..d349d49 100644
--- a/src/collectable.cpp
+++ b/src/collectable.cpp
@@ -153,52 +153,52 @@ void collectable_add(float x, float y, int type, int value, int life)
switch(type)
{
case P_CASH:
- collectable->image = gfx_sprites[24];
+ collectable->image = gfx_sprites[SP_PICKUP_MONEY];
break;
case P_ROCKET:
- collectable->image = gfx_sprites[49];
+ collectable->image = gfx_sprites[SP_PICKUP_ROCKETS];
break;
case P_PLASMA_AMMO:
- collectable->image = gfx_sprites[25];
+ collectable->image = gfx_sprites[SP_PICKUP_PLASMA];
break;
case P_SHIELD:
- collectable->image = gfx_sprites[26];
+ collectable->image = gfx_sprites[SP_PICKUP_SHIELD];
break;
case P_PLASMA_SHOT:
- collectable->image = gfx_sprites[27];
+ collectable->image = gfx_sprites[SP_PICKUP_PLASMA_OUTPUT];
break;
case P_PLASMA_RATE:
- collectable->image = gfx_sprites[28];
+ collectable->image = gfx_sprites[SP_PICKUP_PLASMA_RATE];
break;
case P_PLASMA_DAMAGE:
- collectable->image = gfx_sprites[29];
+ collectable->image = gfx_sprites[SP_PICKUP_PLASMA_POWER];
break;
case P_CARGO:
- collectable->image = gfx_sprites[32];
+ collectable->image = gfx_sprites[SP_CARGO];
break;
case P_SUPER:
- collectable->image = gfx_sprites[50];
+ collectable->image = gfx_sprites[SP_SUPERCHARGE];
break;
case P_MINE:
- collectable->image = gfx_sprites[31];
+ collectable->image = gfx_sprites[SP_MINE];
break;
case P_SLAVES:
case P_ESCAPEPOD:
- collectable->image = gfx_sprites[45];
+ collectable->image = gfx_sprites[SP_ESCAPE_POD];
break;
case P_ORE:
- collectable->image = gfx_sprites[46 + rand() % 3];
+ collectable->image = gfx_sprites[RANDRANGE(SP_ORE, SP_ORE_L)];
break;
}
@@ -234,8 +234,8 @@ void collectable_explode(collectables *collectable)
audio_playSound(SFX_EXPLOSION, collectable->x);
for (int i = 0 ; i < 10 ; i++)
- explosion_add(collectable->x + rand() % 25 - rand() % 25,
- collectable->y + rand() % 25 - rand() % 25, E_BIG_EXPLOSION);
+ explosion_add(RANDRANGE(collectable->x - 25, collectable->x + 25),
+ RANDRANGE(collectable->y - 25, collectable->x + 25), SP_BIG_EXPLOSION);
player_checkShockDamage(collectable->x, collectable->y);
}
diff --git a/src/defs.h b/src/defs.h
index 9d3ccc1..f08dec0 100644
--- a/src/defs.h
+++ b/src/defs.h
@@ -34,7 +34,7 @@ along with this program. If not, see .
((x) + (y) < (a) ? ((b) - (a)) : 0) + \
((x) + (y) > (b) ? ((a) - (b)) : 0))
#define CHANCE(x) ((rand() % RAND_MAX) < ((x) * RAND_MAX))
-#define RANDRANGE(x, y) (((x) < (y)) ? ((x) + (rand() % (1 + (y) - (x)))) : (x))
+#define RANDRANGE(x, y) (((x) < (y)) ? ((x) + (rand() % (long long)(1 + (y) - (x)))) : (x))
// Compile-time options
@@ -85,13 +85,6 @@ along with this program. If not, see .
#define FL_HASMINIMUMSPEED 2097152L
#define FL_FIRELASER 4194304L
-// Explosions
-#define E_SMALL_EXPLOSION 4
-#define E_BIG_EXPLOSION 8
-#define E_SMOKE 12
-#define E_TINY_EXPLOSION 16
-#define E_ELECTRICAL 20
-
// Weapon flags
#define WF_SPREAD 4
#define WF_SCATTER 8
@@ -105,8 +98,6 @@ along with this program. If not, see .
#define WF_TIMEDEXPLOSION 2048
#define MAX_WEAPONS 20
-#define MAX_SPRITES 100
-#define MAX_FONTSPRITES 6
#define MAX_CARGO 20
#define MAX_INFOLINES 3
#define MAX_EVENTS 20
@@ -318,6 +309,66 @@ enum {
SP_PLANET_BLUE,
SP_PLANET_RED,
SP_PLANET_ORANGE,
+
+ // Bullets
+ SP_PLASMA_GREEN,
+ SP_PLASMA_RED,
+ SP_DIR_PLASMA_GREEN,
+ SP_DIR_PLASMA_RED,
+ SP_ION,
+ SP_ROCKET,
+ SP_ROCKET_L,
+
+ // Explosions
+ SP_SMALL_EXPLOSION,
+ SP_SMALL_EXPLOSION_2,
+ SP_SMALL_EXPLOSION_3,
+ SP_SMALL_EXPLOSION_L,
+ SP_BIG_EXPLOSION,
+ SP_BIG_EXPLOSION_2,
+ SP_BIG_EXPLOSION_3,
+ SP_BIG_EXPLOSION_L,
+ SP_SMOKE,
+ SP_SMOKE_2,
+ SP_SMOKE_3,
+ SP_SMOKE_L,
+ SP_TINY_EXPLOSION,
+ SP_TINY_EXPLOSION_2,
+ SP_TINY_EXPLOSION_3,
+ SP_TINY_EXPLOSION_L,
+ SP_ELECTRICAL,
+ SP_ELECTRICAL_2,
+ SP_ELECTRICAL_3,
+ SP_ELECTRICAL_L,
+
+ // Pickups
+ SP_PICKUP_MONEY,
+ SP_PICKUP_PLASMA,
+ SP_PICKUP_ROCKETS,
+ SP_PICKUP_SHIELD,
+ SP_PICKUP_PLASMA_OUTPUT,
+ SP_PICKUP_PLASMA_POWER,
+ SP_PICKUP_PLASMA_RATE,
+ SP_SUPERCHARGE,
+ SP_CARGO,
+ SP_ESCAPE_POD,
+ SP_ORE,
+ SP_ORE_2,
+ SP_ORE_L,
+ SP_CHAIN_LINK,
+ SP_MINE,
+
+ // Targeting system
+ SP_ARROW_NORTH,
+ SP_ARROW_NORTHEAST,
+ SP_ARROW_EAST,
+ SP_ARROW_SOUTHEAST,
+ SP_ARROW_SOUTH,
+ SP_ARROW_SOUTHWEST,
+ SP_ARROW_WEST,
+ SP_ARROW_NORTHWEST,
+ SP_TARGET,
+
SP_MAX
};
@@ -550,7 +601,8 @@ enum {
FONT_YELLOW,
FONT_GREEN,
FONT_CYAN,
- FONT_OUTLINE // a dark blue color
+ FONT_OUTLINE, // a dark blue color
+ FONT_MAX
};
// Sounds
diff --git a/src/engine.cpp b/src/engine.cpp
index b562768..a6ddf44 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -266,7 +266,7 @@ void engine_cleanup()
delete(engine.collectableHead);
delete(screen_bufferHead);
- for (int i = 0 ; i < MAX_FONTSPRITES ; i++)
+ for (int i = 0 ; i < FONT_MAX ; i++)
{
if (gfx_fontSprites[i] != NULL)
SDL_FreeSurface(gfx_fontSprites[i]);
diff --git a/src/explosion.cpp b/src/explosion.cpp
index 67872f9..064cc09 100644
--- a/src/explosion.cpp
+++ b/src/explosion.cpp
@@ -47,12 +47,12 @@ void explosion_add(float x, float y, int type)
*/
void explosion_addEngine(object *craft)
{
- if (rand() % 2 == 0)
+ if (CHANCE(0.5))
return;
float x = craft->x + (craft->engineX * craft->face);
float y = craft->y + craft->engineY;
y += RANDRANGE(-3, 3);
- explosion_add(x, y, E_TINY_EXPLOSION);
+ explosion_add(x, y, SP_TINY_EXPLOSION);
}
diff --git a/src/game.cpp b/src/game.cpp
index b15ee8b..740b84e 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -521,11 +521,11 @@ static void game_doBullets()
if (bullet->id == WT_ROCKET)
{
- explosion_add(bullet->x, bullet->y, E_SMALL_EXPLOSION);
+ explosion_add(bullet->x, bullet->y, SP_SMALL_EXPLOSION);
}
else if (bullet->id == WT_MICROROCKET)
{
- explosion_add(bullet->x, bullet->y, E_TINY_EXPLOSION);
+ explosion_add(bullet->x, bullet->y, SP_TINY_EXPLOSION);
}
if ((bullet->flags & WF_AIMED))
@@ -637,7 +637,7 @@ static void game_doBullets()
for (int i = 0 ; i < 10 ; i++)
explosion_add(bullet->x + RANDRANGE(-35, 35),
bullet->y + RANDRANGE(-35, 35),
- E_BIG_EXPLOSION);
+ SP_BIG_EXPLOSION);
}
}
else
@@ -647,9 +647,9 @@ static void game_doBullets()
}
if (bullet->id == WT_ROCKET)
- explosion_add(bullet->x, bullet->y, E_BIG_EXPLOSION);
+ explosion_add(bullet->x, bullet->y, SP_BIG_EXPLOSION);
else
- explosion_add(bullet->x, bullet->y, E_SMALL_EXPLOSION);
+ explosion_add(bullet->x, bullet->y, SP_SMALL_EXPLOSION);
}
}
}
@@ -688,7 +688,7 @@ static void game_doBullets()
audio_playSound(SFX_EXPLOSION, bullet->x);
for (int i = 0 ; i < 10 ; i++)
explosion_add(bullet->x + RANDRANGE(-35, 35),
- bullet->y + RANDRANGE(-35, 35), E_BIG_EXPLOSION);
+ bullet->y + RANDRANGE(-35, 35), SP_BIG_EXPLOSION);
}
}
else
@@ -700,9 +700,9 @@ static void game_doBullets()
audio_playSound(SFX_HIT, player.x);
if (bullet->id == WT_ROCKET)
- explosion_add(bullet->x, bullet->y, E_BIG_EXPLOSION);
+ explosion_add(bullet->x, bullet->y, SP_BIG_EXPLOSION);
else
- explosion_add(bullet->x, bullet->y, E_SMALL_EXPLOSION);
+ explosion_add(bullet->x, bullet->y, SP_SMALL_EXPLOSION);
}
}
}
@@ -717,7 +717,7 @@ static void game_doBullets()
if (bullet_collision(bullet, &cargo[j]))
{
bullet->active = false;
- explosion_add(bullet->x, bullet->y, E_SMALL_EXPLOSION);
+ explosion_add(bullet->x, bullet->y, SP_SMALL_EXPLOSION);
audio_playSound(SFX_HIT, cargo[j].x);
if (cargo[j].collectType != P_PHOEBE)
{
@@ -726,7 +726,7 @@ static void game_doBullets()
for (int i = 0 ; i < 10 ; i++)
explosion_add(cargo[j].x + RANDRANGE(-15, 15),
cargo[j].y + RANDRANGE(-15, 15),
- E_BIG_EXPLOSION);
+ SP_BIG_EXPLOSION);
updateMissionRequirements(M_PROTECT_PICKUP,
P_CARGO, 1);
}
@@ -791,7 +791,7 @@ static void game_doBullets()
audio_playSound(SFX_EXPLOSION, bullet->x);
for (int i = 0 ; i < 10 ; i++)
explosion_add(bullet->x + RANDRANGE(-35, 35),
- bullet->y + RANDRANGE(-35, 35), E_BIG_EXPLOSION);
+ bullet->y + RANDRANGE(-35, 35), SP_BIG_EXPLOSION);
player_checkShockDamage(bullet->x, bullet->y);
}
@@ -1092,7 +1092,7 @@ static void game_doAliens()
if ((rand() % 10) == 0)
explosion_add(aliens[i].x + (rand() % aliens[i].image[0]->w),
aliens[i].y + (rand() % aliens[i].image[0]->h),
- E_ELECTRICAL);
+ SP_ELECTRICAL);
}
}
@@ -1109,7 +1109,7 @@ static void game_doAliens()
(int)aliens[i].y);
explosion_add(aliens[i].x + (rand() % aliens[i].image[0]->w),
aliens[i].y + (rand() % aliens[i].image[0]->h),
- E_BIG_EXPLOSION);
+ SP_BIG_EXPLOSION);
}
if (aliens[i].shield < aliens[i].deathCounter)
{
@@ -1399,7 +1399,7 @@ static void game_doPlayer()
if ((player.maxShield > 1) && (player.shield <= engine.lowShield) &&
(rand() % 5 < 1))
explosion_add(player.x + RANDRANGE(-10, 10),
- player.y + RANDRANGE(-10, 20), E_SMOKE);
+ player.y + RANDRANGE(-10, 20), SP_SMOKE);
}
else
{
@@ -1424,7 +1424,7 @@ static void game_doPlayer()
engine.keyState[KEY_UP] = engine.keyState[KEY_DOWN] = engine.keyState[KEY_LEFT] = engine.keyState[KEY_RIGHT] = 0;
if ((rand() % 3) == 0)
explosion_add(player.x + RANDRANGE(-10, 10),
- player.y + RANDRANGE(-10, 10), E_BIG_EXPLOSION);
+ player.y + RANDRANGE(-10, 10), SP_BIG_EXPLOSION);
if (player.shield == -99)
game_addDebris((int)player.x, (int)player.y, player.maxShield);
}
@@ -1481,7 +1481,7 @@ static void game_doCargo()
// draw the chain link line
for (int j = 0 ; j < 10 ; j++)
{
- screen_blit(gfx_sprites[30], (int)chainX, (int)chainY);
+ screen_blit(gfx_sprites[SP_CHAIN_LINK], (int)chainX, (int)chainY);
chainX -= dx;
chainY -= dy;
}
@@ -1508,7 +1508,7 @@ static void game_doDebris()
debris->x += debris->dx;
debris->y += debris->dy;
- explosion_add(debris->x + RANDRANGE(-10, 10), debris->y + RANDRANGE(-10, 10), E_BIG_EXPLOSION);
+ explosion_add(debris->x + RANDRANGE(-10, 10), debris->y + RANDRANGE(-10, 10), SP_BIG_EXPLOSION);
}
if (debris->thinktime < 1)
@@ -1549,7 +1549,7 @@ void game_doExplosions()
screen_blit(explosion->image[0], (int)explosion->x, (int)explosion->y);
- if(rand() % 7 == 0)
+ if(CHANCE(1. / 7.))
{
explosion->thinktime -= 7;
@@ -1602,12 +1602,15 @@ static void game_doArrow(int i)
int arrow;
- if (sxy == sx) {
- arrow = x < screen->w / 2 ? 42 : 38;
+ if (sxy == sx)
+ {
+ arrow = x < screen->w / 2 ? SP_ARROW_WEST : SP_ARROW_EAST;
x -= x > screen->w / 2 ? gfx_sprites[arrow]->w : 0;
y -= gfx_sprites[arrow]->h / 2;
- } else {
- arrow = y < screen->h / 2 ? 36 : 40;
+ }
+ else
+ {
+ arrow = y < screen->h / 2 ? SP_ARROW_NORTH : SP_ARROW_SOUTH;
x -= gfx_sprites[arrow]->w / 2;
y -= y > screen->h / 2 ? gfx_sprites[arrow]->h : 0;
}
@@ -1620,15 +1623,18 @@ static void game_doArrow(int i)
if (gfx_textSprites[TS_RADIO].life > 0)
return;
- if (sxy == sx) {
- x -= x > screen->w / 2 ? 5 + gfx_sprites[44]->w : -5 - gfx_sprites[arrow]->w;
- y -= (gfx_sprites[44]->h - gfx_sprites[arrow]->h) / 2;
- } else {
- x -= (gfx_sprites[44]->w - gfx_sprites[arrow]->w) / 2;
- y -= y > screen->h / 2 ? 5 + gfx_sprites[44]->h : -5 - gfx_sprites[arrow]->h;
+ if (sxy == sx)
+ {
+ x -= x > screen->w / 2 ? 5 + gfx_sprites[SP_TARGET]->w : -5 - gfx_sprites[arrow]->w;
+ y -= (gfx_sprites[SP_TARGET]->h - gfx_sprites[arrow]->h) / 2;
+ }
+ else
+ {
+ x -= (gfx_sprites[SP_TARGET]->w - gfx_sprites[arrow]->w) / 2;
+ y -= y > screen->h / 2 ? 5 + gfx_sprites[SP_TARGET]->h : -5 - gfx_sprites[arrow]->h;
}
- screen_blit(gfx_sprites[44], x, y);
+ screen_blit(gfx_sprites[SP_TARGET], x, y);
}
static void game_doHud()
diff --git a/src/gfx.cpp b/src/gfx.cpp
index 05ce520..3ccdc19 100644
--- a/src/gfx.cpp
+++ b/src/gfx.cpp
@@ -22,10 +22,10 @@ along with this program. If not, see .
#include "Starfighter.h"
SDL_Surface *gfx_background;
-SDL_Surface *gfx_sprites[MAX_SPRITES];
+SDL_Surface *gfx_sprites[SP_MAX];
SDL_Surface *gfx_faceSprites[FS_MAX];
SDL_Surface *gfx_shipSprites[SS_MAX];
-SDL_Surface *gfx_fontSprites[MAX_FONTSPRITES];
+SDL_Surface *gfx_fontSprites[FONT_MAX];
SDL_Surface *gfx_shopSprites[SHOP_S_MAX];
textObject gfx_textSprites[TS_MAX];
SDL_Surface *gfx_messageBox;
@@ -36,7 +36,7 @@ void gfx_init()
screen_bufferHead->next = NULL;
screen_bufferTail = screen_bufferHead;
- for (int i = 0 ; i < MAX_SPRITES ; i++)
+ for (int i = 0 ; i < SP_MAX ; i++)
gfx_sprites[i] = NULL;
for (int i = 0 ; i < SS_MAX ; i++)
@@ -48,7 +48,7 @@ void gfx_init()
for (int i = 0 ; i < SHOP_S_MAX ; i++)
gfx_shopSprites[i] = NULL;
- for (int i = 0 ; i < MAX_FONTSPRITES ; i++)
+ for (int i = 0 ; i < FONT_MAX ; i++)
gfx_fontSprites[i] = NULL;
gfx_background = NULL;
@@ -444,7 +444,7 @@ SDL_Surface *gfx_loadImage(const char *filename)
void gfx_free()
{
- for (int i = 0 ; i < MAX_SPRITES ; i++)
+ for (int i = 0 ; i < SP_MAX ; i++)
{
if (gfx_sprites[i] != NULL)
{
diff --git a/src/gfx.h b/src/gfx.h
index e2d9917..faf89d1 100644
--- a/src/gfx.h
+++ b/src/gfx.h
@@ -23,10 +23,10 @@ along with this program. If not, see .
#include "Starfighter.h"
extern SDL_Surface *gfx_background;
-extern SDL_Surface *gfx_sprites[MAX_SPRITES];
+extern SDL_Surface *gfx_sprites[SP_MAX];
extern SDL_Surface *gfx_faceSprites[FS_MAX];
extern SDL_Surface *gfx_shipSprites[SS_MAX];
-extern SDL_Surface *gfx_fontSprites[MAX_FONTSPRITES];
+extern SDL_Surface *gfx_fontSprites[FONT_MAX];
extern SDL_Surface *gfx_shopSprites[SHOP_S_MAX];
extern textObject gfx_textSprites[TS_MAX];
extern SDL_Surface *gfx_messageBox;
diff --git a/src/loadSave.cpp b/src/loadSave.cpp
index 845cef9..3b4e243 100644
--- a/src/loadSave.cpp
+++ b/src/loadSave.cpp
@@ -116,6 +116,8 @@ bool loadGame(int slot)
game.difficulty = DIFFICULTY_NORMAL;
weapon[W_PLAYER_WEAPON] = game.playerWeapon;
+ weapon[W_PLAYER_WEAPON].imageIndex[0] = SP_PLASMA_GREEN;
+ weapon[W_PLAYER_WEAPON].imageIndex[1] = SP_PLASMA_GREEN;
player = game.thePlayer;
// Re-init all the planets in this system...
diff --git a/src/resources.cpp b/src/resources.cpp
index dd3b4b4..3943b40 100644
--- a/src/resources.cpp
+++ b/src/resources.cpp
@@ -32,9 +32,6 @@ void loadBackground(const char *filename)
void loadGameGraphics()
{
- int index;
- char string[75] = "";
- FILE *fp;
Uint32 *p32;
Uint16 *p16;
Uint8 *p8;
@@ -177,16 +174,58 @@ void loadGameGraphics()
SDL_MapRGB(gfx_shipSprites[i]->format, 0, 0, 0));
}
- strcpy(string, "data/resources_all.dat");
-
- fp = fopen(string, "rb");
-
- while (fscanf(fp, "%d %s", &index, string) == 2)
- {
- gfx_sprites[index] = gfx_loadImage(string);
- }
-
- fclose(fp);
+ // Other sprites
+ gfx_sprites[SP_PLASMA_GREEN] = gfx_loadImage("gfx/plasmaGreen.png");
+ gfx_sprites[SP_PLASMA_RED] = gfx_loadImage("gfx/plasmaRed.png");
+ gfx_sprites[SP_DIR_PLASMA_GREEN] = gfx_loadImage("gfx/greenDir.png");
+ gfx_sprites[SP_DIR_PLASMA_RED] = gfx_loadImage("gfx/redDir.png");
+ gfx_sprites[SP_ROCKET] = gfx_loadImage("gfx/rocket1.png");
+ gfx_sprites[SP_ROCKET_L] = gfx_loadImage("gfx/rocket2.png");
+ gfx_sprites[SP_SMALL_EXPLOSION] = gfx_loadImage("gfx/explode1.png");
+ gfx_sprites[SP_SMALL_EXPLOSION_2] = gfx_loadImage("gfx/explode2.png");
+ gfx_sprites[SP_SMALL_EXPLOSION_3] = gfx_loadImage("gfx/explode3.png");
+ gfx_sprites[SP_SMALL_EXPLOSION_L] = gfx_loadImage("gfx/explode4.png");
+ gfx_sprites[SP_BIG_EXPLOSION] = gfx_loadImage("gfx/explode05.png");
+ gfx_sprites[SP_BIG_EXPLOSION_2] = gfx_loadImage("gfx/explode06.png");
+ gfx_sprites[SP_BIG_EXPLOSION_3] = gfx_loadImage("gfx/explode07.png");
+ gfx_sprites[SP_BIG_EXPLOSION_L] = gfx_loadImage("gfx/explode08.png");
+ gfx_sprites[SP_SMOKE] = gfx_loadImage("gfx/explode9.png");
+ gfx_sprites[SP_SMOKE_2] = gfx_loadImage("gfx/explode10.png");
+ gfx_sprites[SP_SMOKE_3] = gfx_loadImage("gfx/explode11.png");
+ gfx_sprites[SP_SMOKE_L] = gfx_loadImage("gfx/explode12.png");
+ gfx_sprites[SP_TINY_EXPLOSION] = gfx_loadImage("gfx/explode13.png");
+ gfx_sprites[SP_TINY_EXPLOSION_2] = gfx_loadImage("gfx/explode14.png");
+ gfx_sprites[SP_TINY_EXPLOSION_3] = gfx_loadImage("gfx/explode15.png");
+ gfx_sprites[SP_TINY_EXPLOSION_L] = gfx_loadImage("gfx/explode16.png");
+ gfx_sprites[SP_ELECTRICAL] = gfx_loadImage("gfx/elec1.png");
+ gfx_sprites[SP_ELECTRICAL_2] = gfx_loadImage("gfx/elec2.png");
+ gfx_sprites[SP_ELECTRICAL_3] = gfx_loadImage("gfx/elec3.png");
+ gfx_sprites[SP_ELECTRICAL_L] = gfx_loadImage("gfx/elec4.png");
+ gfx_sprites[SP_PICKUP_MONEY] = gfx_loadImage("gfx/dollar.png");
+ gfx_sprites[SP_PICKUP_PLASMA] = gfx_loadImage("gfx/rocket.png");
+ gfx_sprites[SP_PICKUP_SHIELD] = gfx_loadImage("gfx/heart.png");
+ gfx_sprites[SP_PICKUP_PLASMA_OUTPUT] = gfx_loadImage("gfx/plasmaAmmo.png");
+ gfx_sprites[SP_PICKUP_PLASMA_RATE] = gfx_loadImage("gfx/plasmaRate.png");
+ gfx_sprites[SP_PICKUP_PLASMA_POWER] = gfx_loadImage("gfx/plasmaDamage.png");
+ gfx_sprites[SP_CHAIN_LINK] = gfx_loadImage("gfx/chainLink.png");
+ gfx_sprites[SP_MINE] = gfx_loadImage("gfx/mine.png");
+ gfx_sprites[SP_CARGO] = gfx_loadImage("gfx/cargo1.png");
+ gfx_sprites[SP_ION] = gfx_loadImage("gfx/stunBolt.png");
+ gfx_sprites[SP_ARROW_NORTH] = gfx_loadImage("gfx/arrowNorth.png");
+ gfx_sprites[SP_ARROW_NORTHEAST] = gfx_loadImage("gfx/arrowNorthEast.png");
+ gfx_sprites[SP_ARROW_EAST] = gfx_loadImage("gfx/arrowEast.png");
+ gfx_sprites[SP_ARROW_SOUTHEAST] = gfx_loadImage("gfx/arrowSouthEast.png");
+ gfx_sprites[SP_ARROW_SOUTH] = gfx_loadImage("gfx/arrowSouth.png");
+ gfx_sprites[SP_ARROW_SOUTHWEST] = gfx_loadImage("gfx/arrowSouthWest.png");
+ gfx_sprites[SP_ARROW_WEST] = gfx_loadImage("gfx/arrowWest.png");
+ gfx_sprites[SP_ARROW_NORTHWEST] = gfx_loadImage("gfx/arrowNorthWest.png");
+ gfx_sprites[SP_TARGET] = gfx_loadImage("gfx/targetText.png");
+ gfx_sprites[SP_ESCAPE_POD] = gfx_loadImage("gfx/pod.png");
+ gfx_sprites[SP_ORE] = gfx_loadImage("gfx/ore1.png");
+ gfx_sprites[SP_ORE_2] = gfx_loadImage("gfx/ore2.png");
+ gfx_sprites[SP_ORE_L] = gfx_loadImage("gfx/ore3.png");
+ gfx_sprites[SP_PICKUP_ROCKETS] = gfx_loadImage("gfx/rocketAmmo.png");
+ gfx_sprites[SP_SUPERCHARGE] = gfx_loadImage("gfx/superCharge.png");
loadBackground(systemBackground[game.system]);
@@ -201,7 +240,11 @@ void loadGameGraphics()
}
}
- setWeaponShapes();
+ for (int i = 0 ; i < MAX_WEAPONS ; i++)
+ {
+ weapon[i].image[0] = gfx_sprites[weapon[i].imageIndex[0]];
+ weapon[i].image[1] = gfx_sprites[weapon[i].imageIndex[1]];
+ }
}
@@ -213,7 +256,7 @@ void loadFont()
{
SDL_Surface *image, *newImage;
- for (int i = 0 ; i < MAX_FONTSPRITES ; i++)
+ for (int i = 0 ; i < FONT_MAX ; i++)
{
image = IMG_Load("gfx/smallFont.png");
@@ -224,19 +267,19 @@ void loadFont()
switch(i)
{
- case 1:
+ case FONT_RED:
SDL_SetSurfaceColorMod(image, 255, 0, 0);
break;
- case 2:
+ case FONT_YELLOW:
SDL_SetSurfaceColorMod(image, 255, 255, 0);
break;
- case 3:
+ case FONT_GREEN:
SDL_SetSurfaceColorMod(image, 0, 255, 0);
break;
- case 4:
+ case FONT_CYAN:
SDL_SetSurfaceColorMod(image, 0, 255, 255);
break;
- case 5:
+ case FONT_OUTLINE:
SDL_SetSurfaceColorMod(image, 0, 0, 10);
break;
}
diff --git a/src/ship.cpp b/src/ship.cpp
index 97be05f..ed877c4 100644
--- a/src/ship.cpp
+++ b/src/ship.cpp
@@ -176,7 +176,7 @@ void ship_fireRay(object *ship)
}
player.shield--;
- explosion_add(player.x, player.y, E_SMALL_EXPLOSION);
+ explosion_add(player.x, player.y, SP_SMALL_EXPLOSION);
audio_playSound(SFX_HIT, player.x);
if (player.shield < 1)
{
diff --git a/src/weapons.cpp b/src/weapons.cpp
index 0842ae4..f268072 100644
--- a/src/weapons.cpp
+++ b/src/weapons.cpp
@@ -21,15 +21,6 @@ along with this program. If not, see .
object weapon[MAX_WEAPONS];
-void setWeaponShapes()
-{
- for (int i = 0 ; i < MAX_WEAPONS ; i++)
- {
- weapon[i].image[0] = gfx_sprites[weapon[i].imageIndex[0]];
- weapon[i].image[1] = gfx_sprites[weapon[i].imageIndex[1]];
- }
-}
-
/*
A list of predefined weaponary.
*/
@@ -41,8 +32,8 @@ void initWeapons()
weapon[W_PLAYER_WEAPON].damage = 1;
weapon[W_PLAYER_WEAPON].reload[0] = 15;
weapon[W_PLAYER_WEAPON].speed = 10;
- weapon[W_PLAYER_WEAPON].imageIndex[0] = 0;
- weapon[W_PLAYER_WEAPON].imageIndex[1] = 0;
+ weapon[W_PLAYER_WEAPON].imageIndex[0] = SP_PLASMA_GREEN;
+ weapon[W_PLAYER_WEAPON].imageIndex[1] = SP_PLASMA_GREEN;
weapon[W_PLAYER_WEAPON].flags = WF_SPREAD;
// Single Shot
@@ -51,8 +42,8 @@ void initWeapons()
weapon[W_SINGLE_SHOT].damage = 1;
weapon[W_SINGLE_SHOT].reload[0] = 15;
weapon[W_SINGLE_SHOT].speed = 10;
- weapon[W_SINGLE_SHOT].imageIndex[0] = 0;
- weapon[W_SINGLE_SHOT].imageIndex[1] = 1;
+ weapon[W_SINGLE_SHOT].imageIndex[0] = SP_PLASMA_GREEN;
+ weapon[W_SINGLE_SHOT].imageIndex[1] = SP_PLASMA_RED;
weapon[W_SINGLE_SHOT].flags = 0;
// Double Shot
@@ -70,8 +61,8 @@ void initWeapons()
weapon[W_ROCKETS].reload[0] = 45;
weapon[W_ROCKETS].speed = 20;
weapon[W_ROCKETS].flags = 0;
- weapon[W_ROCKETS].imageIndex[0] = 2;
- weapon[W_ROCKETS].imageIndex[1] = 3;
+ weapon[W_ROCKETS].imageIndex[0] = SP_ROCKET;
+ weapon[W_ROCKETS].imageIndex[1] = SP_ROCKET_L;
// Double Rockets (uses ROCKETS as base)
weapon[W_DOUBLE_ROCKETS] = weapon[W_ROCKETS];
@@ -85,8 +76,8 @@ void initWeapons()
weapon[W_MICRO_ROCKETS].reload[0] = 30;
weapon[W_MICRO_ROCKETS].speed = 15;
weapon[W_MICRO_ROCKETS].flags = WF_VARIABLE_SPEED;
- weapon[W_MICRO_ROCKETS].imageIndex[0] = 2;
- weapon[W_MICRO_ROCKETS].imageIndex[1] = 3;
+ weapon[W_MICRO_ROCKETS].imageIndex[0] = SP_ROCKET;
+ weapon[W_MICRO_ROCKETS].imageIndex[1] = SP_ROCKET_L;
// Energy Ray
weapon[W_ENERGYRAY].id = WT_ENERGYRAY;
@@ -94,6 +85,8 @@ void initWeapons()
weapon[W_ENERGYRAY].damage = 1;
weapon[W_ENERGYRAY].reload[0] = 25; // reload for energy ray is never used
weapon[W_ENERGYRAY].speed = 15;
+ weapon[W_ENERGYRAY].imageIndex[0] = SP_PLASMA_RED;
+ weapon[W_ENERGYRAY].imageIndex[1] = SP_PLASMA_RED;
weapon[W_ENERGYRAY].flags = 0;
// Laser
@@ -102,8 +95,8 @@ void initWeapons()
weapon[W_LASER].damage = 3;
weapon[W_LASER].reload[0] = 1;
weapon[W_LASER].speed = 10;
- weapon[W_LASER].imageIndex[0] = 1;
- weapon[W_LASER].imageIndex[1] = 1;
+ weapon[W_LASER].imageIndex[0] = SP_PLASMA_RED;
+ weapon[W_LASER].imageIndex[1] = SP_PLASMA_RED;
weapon[W_LASER].flags = 0;
// Beam up weapon
@@ -113,8 +106,8 @@ void initWeapons()
weapon[W_CHARGER].reload[0] = 0;
weapon[W_CHARGER].speed = 12;
weapon[W_CHARGER].flags = 0;
- weapon[W_CHARGER].imageIndex[0] = 33;
- weapon[W_CHARGER].imageIndex[1] = 34;
+ weapon[W_CHARGER].imageIndex[0] = SP_DIR_PLASMA_GREEN;
+ weapon[W_CHARGER].imageIndex[1] = SP_DIR_PLASMA_RED;
// Homing missile
weapon[W_HOMING_MISSILE].id = WT_ROCKET;
@@ -123,15 +116,15 @@ void initWeapons()
weapon[W_HOMING_MISSILE].reload[0] = 35;
weapon[W_HOMING_MISSILE].speed = 10;
weapon[W_HOMING_MISSILE].flags = WF_HOMING;
- weapon[W_HOMING_MISSILE].imageIndex[0] = 4;
- weapon[W_HOMING_MISSILE].imageIndex[1] = 4;
+ weapon[W_HOMING_MISSILE].imageIndex[0] = SP_SMALL_EXPLOSION;
+ weapon[W_HOMING_MISSILE].imageIndex[1] = SP_SMALL_EXPLOSION;
// Double homing missile
weapon[W_DOUBLE_HOMING_MISSILES] = weapon[W_HOMING_MISSILE];
weapon[W_DOUBLE_HOMING_MISSILES].ammo[0] = 2;
weapon[W_DOUBLE_HOMING_MISSILES].reload[0] = 65;
- weapon[W_DOUBLE_HOMING_MISSILES].imageIndex[0] = 4;
- weapon[W_DOUBLE_HOMING_MISSILES].imageIndex[1] = 4;
+ weapon[W_DOUBLE_HOMING_MISSILES].imageIndex[0] = SP_SMALL_EXPLOSION;
+ weapon[W_DOUBLE_HOMING_MISSILES].imageIndex[1] = SP_SMALL_EXPLOSION;
// Micro homing missiles
weapon[W_MICRO_HOMING_MISSILES].id = WT_ROCKET;
@@ -140,8 +133,8 @@ void initWeapons()
weapon[W_MICRO_HOMING_MISSILES].reload[0] = 65;
weapon[W_MICRO_HOMING_MISSILES].speed = 3;
weapon[W_MICRO_HOMING_MISSILES].flags = WF_HOMING;
- weapon[W_MICRO_HOMING_MISSILES].imageIndex[0] = 4;
- weapon[W_MICRO_HOMING_MISSILES].imageIndex[1] = 4;
+ weapon[W_MICRO_HOMING_MISSILES].imageIndex[0] = SP_SMALL_EXPLOSION;
+ weapon[W_MICRO_HOMING_MISSILES].imageIndex[1] = SP_SMALL_EXPLOSION;
// Aimed plasma bolt
weapon[W_AIMED_SHOT].id = WT_DIRECTIONAL;
@@ -150,8 +143,8 @@ void initWeapons()
weapon[W_AIMED_SHOT].reload[0] = 15;
weapon[W_AIMED_SHOT].speed = 0;
weapon[W_AIMED_SHOT].flags = WF_AIMED;
- weapon[W_AIMED_SHOT].imageIndex[0] = 33;
- weapon[W_AIMED_SHOT].imageIndex[1] = 34;
+ weapon[W_AIMED_SHOT].imageIndex[0] = SP_DIR_PLASMA_GREEN;
+ weapon[W_AIMED_SHOT].imageIndex[1] = SP_DIR_PLASMA_RED;
// 3 way spread weapon
weapon[W_SPREADSHOT].id = WT_SPREAD;
@@ -160,8 +153,8 @@ void initWeapons()
weapon[W_SPREADSHOT].reload[0] = 10;
weapon[W_SPREADSHOT].speed = 10;
weapon[W_SPREADSHOT].flags = WF_SPREAD;
- weapon[W_SPREADSHOT].imageIndex[0] = 0;
- weapon[W_SPREADSHOT].imageIndex[1] = 1;
+ weapon[W_SPREADSHOT].imageIndex[0] = SP_PLASMA_GREEN;
+ weapon[W_SPREADSHOT].imageIndex[1] = SP_PLASMA_RED;
// Sid's ion cannon like weapon
weapon[W_IONCANNON].id = WT_PLASMA;
@@ -170,8 +163,8 @@ void initWeapons()
weapon[W_IONCANNON].reload[0] = 2;
weapon[W_IONCANNON].speed = 10;
weapon[W_IONCANNON].flags = WF_DISABLE | WF_AIMED;
- weapon[W_IONCANNON].imageIndex[0] = 35;
- weapon[W_IONCANNON].imageIndex[1] = 35;
+ weapon[W_IONCANNON].imageIndex[0] = SP_ION;
+ weapon[W_IONCANNON].imageIndex[1] = SP_ION;
// Directional Shock Missile - Used by Kline in final battle
weapon[W_DIRSHOCKMISSILE].id = WT_ROCKET;
@@ -180,6 +173,6 @@ void initWeapons()
weapon[W_DIRSHOCKMISSILE].reload[0] = 60;
weapon[W_DIRSHOCKMISSILE].speed = 0;
weapon[W_DIRSHOCKMISSILE].flags = WF_AIMED | WF_TIMEDEXPLOSION;
- weapon[W_DIRSHOCKMISSILE].imageIndex[0] = 4;
- weapon[W_DIRSHOCKMISSILE].imageIndex[1] = 4;
+ weapon[W_DIRSHOCKMISSILE].imageIndex[0] = SP_SMALL_EXPLOSION;
+ weapon[W_DIRSHOCKMISSILE].imageIndex[1] = SP_SMALL_EXPLOSION;
}
diff --git a/src/weapons.h b/src/weapons.h
index 7d9f2c4..4170c0f 100644
--- a/src/weapons.h
+++ b/src/weapons.h
@@ -22,7 +22,6 @@ along with this program. If not, see .
extern object weapon[MAX_WEAPONS];
-extern void setWeaponShapes();
extern void initWeapons();
#endif