Converted consts to #define calls.
This commit is contained in:
parent
aa9d673aab
commit
e22a2bc168
|
@ -42,8 +42,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
Object alien_defs[CD_MAX];
|
Object alien_defs[CD_MAX];
|
||||||
Object aliens[ALIEN_MAX];
|
Object aliens[ALIEN_MAX];
|
||||||
|
|
||||||
static const int nChrisKillMessage = 15;
|
#define NMSG_CHRIS_KILL 15
|
||||||
static const char *chrisKillMessage[nChrisKillMessage] = {
|
static const char *chrisKillMessage[NMSG_CHRIS_KILL] = {
|
||||||
"Take that, robot oppressors!",
|
"Take that, robot oppressors!",
|
||||||
"Come on, WEAPCO, give me a challenge already!",
|
"Come on, WEAPCO, give me a challenge already!",
|
||||||
"Is that all you've got?",
|
"Is that all you've got?",
|
||||||
|
@ -61,8 +61,8 @@ static const char *chrisKillMessage[nChrisKillMessage] = {
|
||||||
"Maybe you should change your name to WEEPCO!"
|
"Maybe you should change your name to WEEPCO!"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int nPhoebeKillMessage = 11;
|
#define NMSG_PHOEBE_KILL 11
|
||||||
static const char *phoebeKillMessage[nPhoebeKillMessage] = {
|
static const char *phoebeKillMessage[NMSG_PHOEBE_KILL] = {
|
||||||
"I got another one!",
|
"I got another one!",
|
||||||
"Target destroyed!",
|
"Target destroyed!",
|
||||||
"One more for me!",
|
"One more for me!",
|
||||||
|
@ -76,8 +76,8 @@ static const char *phoebeKillMessage[nPhoebeKillMessage] = {
|
||||||
"I got it!"
|
"I got it!"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int nUrsulaKillMessage = 14;
|
#define NMSG_URSULA_KILL 14
|
||||||
static const char *ursulaKillMessage[nUrsulaKillMessage] = {
|
static const char *ursulaKillMessage[NMSG_URSULA_KILL] = {
|
||||||
"Kicked your ass!",
|
"Kicked your ass!",
|
||||||
"You ain't so tough!",
|
"You ain't so tough!",
|
||||||
"I was always a better WEAPCO pilot than you!",
|
"I was always a better WEAPCO pilot than you!",
|
||||||
|
@ -1788,7 +1788,7 @@ void alien_destroy(Object *alien, Object *attacker)
|
||||||
if (CHANCE(1 / 16.) && (alien->flags & FL_WEAPCO) &&
|
if (CHANCE(1 / 16.) && (alien->flags & FL_WEAPCO) &&
|
||||||
(!(alien->flags & FL_NOBANTER)))
|
(!(alien->flags & FL_NOBANTER)))
|
||||||
{
|
{
|
||||||
r = rand() % nChrisKillMessage;
|
r = rand() % NMSG_CHRIS_KILL;
|
||||||
radio_setMessage(FS_CHRIS, chrisKillMessage[r], 0);
|
radio_setMessage(FS_CHRIS, chrisKillMessage[r], 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1798,7 +1798,7 @@ void alien_destroy(Object *alien, Object *attacker)
|
||||||
if (CHANCE(1 / 8.) && (alien-> flags & FL_WEAPCO) &&
|
if (CHANCE(1 / 8.) && (alien-> flags & FL_WEAPCO) &&
|
||||||
(!(alien->flags & FL_NOBANTER)))
|
(!(alien->flags & FL_NOBANTER)))
|
||||||
{
|
{
|
||||||
r = rand() % nPhoebeKillMessage;
|
r = rand() % NMSG_PHOEBE_KILL;
|
||||||
radio_setMessage(FS_PHOEBE, phoebeKillMessage[r], 0);
|
radio_setMessage(FS_PHOEBE, phoebeKillMessage[r], 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1808,7 +1808,7 @@ void alien_destroy(Object *alien, Object *attacker)
|
||||||
if (CHANCE(1 / 8.) && (alien-> flags & FL_WEAPCO) &&
|
if (CHANCE(1 / 8.) && (alien-> flags & FL_WEAPCO) &&
|
||||||
(!(alien->flags & FL_NOBANTER)))
|
(!(alien->flags & FL_NOBANTER)))
|
||||||
{
|
{
|
||||||
r = rand() % nUrsulaKillMessage;
|
r = rand() % NMSG_URSULA_KILL;
|
||||||
radio_setMessage(FS_URSULA, ursulaKillMessage[r], 0);
|
radio_setMessage(FS_URSULA, ursulaKillMessage[r], 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1943,3 +1943,7 @@ void alien_hurt(Object *alien, Object *attacker, int damage, int ion)
|
||||||
alien->systemPower = alien->maxShield;
|
alien->systemPower = alien->maxShield;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef NMSG_CHRIS_KILL
|
||||||
|
#undef NMSG_PHOEBE_KILL
|
||||||
|
#undef NMSG_URSULA_KILL
|
||||||
|
|
15
src/defs.h
15
src/defs.h
|
@ -62,14 +62,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define DEFAULT_SCREEN_WIDTH MAX(SCREEN_WIDTH, 640)
|
#define DEFAULT_SCREEN_WIDTH MAX(SCREEN_WIDTH, 640)
|
||||||
#define DEFAULT_SCREEN_HEIGHT MAX(SCREEN_HEIGHT, 480)
|
#define DEFAULT_SCREEN_HEIGHT MAX(SCREEN_HEIGHT, 480)
|
||||||
#define STARS_NUM 200
|
#define STARS_NUM 200
|
||||||
const int xViewBorder = 100;
|
#define X_VIEW_BORDER 100
|
||||||
const int yViewBorder = 100;
|
#define Y_VIEW_BORDER 100
|
||||||
const float cameraMaxSpeed = 3.;
|
#define CAMERA_MAX_SPEED 3.
|
||||||
const int maxHoming = 20;
|
#define MAX_HOMING 20
|
||||||
const int maxDoubleHoming = 15;
|
#define MAX_DOUBLE_HOMING 15
|
||||||
const int maxMicroHoming = 10;
|
#define MAX_MICRO_HOMING 10
|
||||||
|
#define RAY_DAMAGE_DELAY 10
|
||||||
const int rayDamageDelay = 10;
|
|
||||||
|
|
||||||
// Object Flags
|
// Object Flags
|
||||||
#define FL_WEAPCO 1
|
#define FL_WEAPCO 1
|
||||||
|
|
|
@ -31,7 +31,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "radio.h"
|
#include "radio.h"
|
||||||
|
|
||||||
static Event events[MAX_EVENTS];
|
static Event events[MAX_EVENTS];
|
||||||
static const char *klineGreeting[] = {
|
|
||||||
|
#define NMSG_KLINE_GREETING 4
|
||||||
|
static const char *klineGreeting[NMSG_KLINE_GREETING] = {
|
||||||
"How nice to see you again, Bainfield!",
|
"How nice to see you again, Bainfield!",
|
||||||
"It all ends here, rebel!",
|
"It all ends here, rebel!",
|
||||||
"I hope you won't disappoint me this time...",
|
"I hope you won't disappoint me this time...",
|
||||||
|
@ -57,7 +59,7 @@ void events_init()
|
||||||
{
|
{
|
||||||
events[0].time = 2;
|
events[0].time = 2;
|
||||||
events[0].face = FS_KLINE;
|
events[0].face = FS_KLINE;
|
||||||
strcpy(events[0].message, klineGreeting[rand() % 4]);
|
strcpy(events[0].message, klineGreeting[rand() % NMSG_KLINE_GREETING]);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -385,3 +387,5 @@ void events_sync()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef NMSG_KLINE_GREETING
|
||||||
|
|
83
src/game.cpp
83
src/game.cpp
|
@ -63,39 +63,39 @@ static Star stars[STARS_NUM];
|
||||||
static Uint32 frameLimit = 0;
|
static Uint32 frameLimit = 0;
|
||||||
static int thirds = 0;
|
static int thirds = 0;
|
||||||
|
|
||||||
static const int nKlineInsult = 3;
|
#define NMSG_KLINE_INSULT 3
|
||||||
static const char *klineInsult[nKlineInsult] = {
|
static const char *klineInsult[NMSG_KLINE_INSULT] = {
|
||||||
"Pathetic.", "How very disappointing...", "Heroic. And stupid."
|
"Pathetic.", "How very disappointing...", "Heroic. And stupid."
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int nKlineVenusInsult = 2;
|
#define NMSG_KLINE_VENUS_INSULT 2
|
||||||
static const char *klineVenusInsult[nKlineVenusInsult] = {
|
static const char *klineVenusInsult[NMSG_KLINE_VENUS_INSULT] = {
|
||||||
"Fool.", "And now you're nothing but a DEAD hero."
|
"Fool.", "And now you're nothing but a DEAD hero."
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int nPhoebePlayerHitMessage = 3;
|
#define NMSG_PHOEBE_PLAYER_HIT 3
|
||||||
static const char *phoebePlayerHitMessage[nPhoebePlayerHitMessage] = {
|
static const char *phoebePlayerHitMessage[NMSG_PHOEBE_PLAYER_HIT] = {
|
||||||
"Oops! Sorry!",
|
"Oops! Sorry!",
|
||||||
"Whoops! Are you OK, Chris?",
|
"Whoops! Are you OK, Chris?",
|
||||||
"Oh, sorry! I didn't see you there!"
|
"Oh, sorry! I didn't see you there!"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int nUrsulaPlayerHitMessage = 3;
|
#define NMSG_URSULA_PLAYER_HIT 3
|
||||||
static const char *ursulaPlayerHitMessage[nUrsulaPlayerHitMessage] = {
|
static const char *ursulaPlayerHitMessage[NMSG_URSULA_PLAYER_HIT] = {
|
||||||
"Get out of the way!",
|
"Get out of the way!",
|
||||||
"Don't fly into my missiles!",
|
"Don't fly into my missiles!",
|
||||||
"Dammit, Chris, you made me miss!"
|
"Dammit, Chris, you made me miss!"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int nPlayerPhoebeHitMessage = 3;
|
#define NMSG_PLAYER_PHOEBE_HIT 3
|
||||||
static const char *playerPhoebeHitMessage[nPlayerPhoebeHitMessage] = {
|
static const char *playerPhoebeHitMessage[NMSG_PLAYER_PHOEBE_HIT] = {
|
||||||
"OW! I hope that was an accident!",
|
"OW! I hope that was an accident!",
|
||||||
"Chris, please be more careful!",
|
"Chris, please be more careful!",
|
||||||
"Ouch! What are you shooting at me for?"
|
"Ouch! What are you shooting at me for?"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int nPlayerUrsulaHitMessage = 5;
|
#define NMSG_PLAYER_URSULA_HIT 5
|
||||||
static const char *playerUrsulaHitMessage[nPlayerUrsulaHitMessage] = {
|
static const char *playerUrsulaHitMessage[NMSG_PLAYER_URSULA_HIT] = {
|
||||||
"I am NOT your enemy!",
|
"I am NOT your enemy!",
|
||||||
"Hey! Watch it!",
|
"Hey! Watch it!",
|
||||||
"What are you doing?! Shoot THEM!",
|
"What are you doing?! Shoot THEM!",
|
||||||
|
@ -727,9 +727,9 @@ static void game_doBullets()
|
||||||
{
|
{
|
||||||
game.hits++;
|
game.hits++;
|
||||||
if (aliens[i].classDef == CD_PHOEBE)
|
if (aliens[i].classDef == CD_PHOEBE)
|
||||||
radio_setMessage(FS_PHOEBE, playerPhoebeHitMessage[rand() % nPlayerPhoebeHitMessage], 0);
|
radio_setMessage(FS_PHOEBE, playerPhoebeHitMessage[rand() % NMSG_PLAYER_PHOEBE_HIT], 0);
|
||||||
else if (aliens[i].classDef == CD_URSULA)
|
else if (aliens[i].classDef == CD_URSULA)
|
||||||
radio_setMessage(FS_URSULA, playerUrsulaHitMessage[rand() % nPlayerUrsulaHitMessage], 0);
|
radio_setMessage(FS_URSULA, playerUrsulaHitMessage[rand() % NMSG_PLAYER_URSULA_HIT], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(aliens[i].flags & FL_IMMORTAL))
|
if (!(aliens[i].flags & FL_IMMORTAL))
|
||||||
|
@ -790,11 +790,11 @@ static void game_doBullets()
|
||||||
{
|
{
|
||||||
if (bullet->owner->classDef == CD_PHOEBE)
|
if (bullet->owner->classDef == CD_PHOEBE)
|
||||||
{
|
{
|
||||||
radio_setMessage(FS_PHOEBE, phoebePlayerHitMessage[rand() % nPhoebePlayerHitMessage], 0);
|
radio_setMessage(FS_PHOEBE, phoebePlayerHitMessage[rand() % NMSG_PHOEBE_PLAYER_HIT], 0);
|
||||||
}
|
}
|
||||||
else if (bullet->owner->classDef == CD_URSULA)
|
else if (bullet->owner->classDef == CD_URSULA)
|
||||||
{
|
{
|
||||||
radio_setMessage(FS_URSULA, ursulaPlayerHitMessage[rand() % nUrsulaPlayerHitMessage], 0);
|
radio_setMessage(FS_URSULA, ursulaPlayerHitMessage[rand() % NMSG_URSULA_PLAYER_HIT], 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1439,15 +1439,15 @@ static void game_doPlayer()
|
||||||
{
|
{
|
||||||
if (xmoved)
|
if (xmoved)
|
||||||
{
|
{
|
||||||
if (player.x < xViewBorder)
|
if (player.x < X_VIEW_BORDER)
|
||||||
{
|
{
|
||||||
engine.smx += xViewBorder - player.x;
|
engine.smx += X_VIEW_BORDER - player.x;
|
||||||
player.x = xViewBorder;
|
player.x = X_VIEW_BORDER;
|
||||||
}
|
}
|
||||||
else if (player.x > screen->w - xViewBorder)
|
else if (player.x > screen->w - X_VIEW_BORDER)
|
||||||
{
|
{
|
||||||
engine.smx += (screen->w - xViewBorder) - player.x;
|
engine.smx += (screen->w - X_VIEW_BORDER) - player.x;
|
||||||
player.x = screen->w - xViewBorder;
|
player.x = screen->w - X_VIEW_BORDER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (game.difficulty != DIFFICULTY_ORIGINAL)
|
else if (game.difficulty != DIFFICULTY_ORIGINAL)
|
||||||
|
@ -1455,13 +1455,13 @@ static void game_doPlayer()
|
||||||
cd = player.x - screen->w / 2;
|
cd = player.x - screen->w / 2;
|
||||||
if (cd < 0)
|
if (cd < 0)
|
||||||
{
|
{
|
||||||
cc = MAX(cd / 10, MAX(0, engine.ssx) - cameraMaxSpeed);
|
cc = MAX(cd / 10, MAX(0, engine.ssx) - CAMERA_MAX_SPEED);
|
||||||
player.x -= cc;
|
player.x -= cc;
|
||||||
engine.smx -= cc;
|
engine.smx -= cc;
|
||||||
}
|
}
|
||||||
else if (cd > 0)
|
else if (cd > 0)
|
||||||
{
|
{
|
||||||
cc = MIN(cd / 10, cameraMaxSpeed + MIN(0, engine.ssx));
|
cc = MIN(cd / 10, CAMERA_MAX_SPEED + MIN(0, engine.ssx));
|
||||||
player.x -= cc;
|
player.x -= cc;
|
||||||
engine.smx -= cc;
|
engine.smx -= cc;
|
||||||
}
|
}
|
||||||
|
@ -1469,15 +1469,15 @@ static void game_doPlayer()
|
||||||
|
|
||||||
if (ymoved)
|
if (ymoved)
|
||||||
{
|
{
|
||||||
if (player.y < yViewBorder)
|
if (player.y < Y_VIEW_BORDER)
|
||||||
{
|
{
|
||||||
engine.smy += yViewBorder - player.y;
|
engine.smy += Y_VIEW_BORDER - player.y;
|
||||||
player.y = yViewBorder;
|
player.y = Y_VIEW_BORDER;
|
||||||
}
|
}
|
||||||
else if (player.y > screen->h - yViewBorder)
|
else if (player.y > screen->h - Y_VIEW_BORDER)
|
||||||
{
|
{
|
||||||
engine.smy += (screen->h - yViewBorder) - player.y;
|
engine.smy += (screen->h - Y_VIEW_BORDER) - player.y;
|
||||||
player.y = screen->h - yViewBorder;
|
player.y = screen->h - Y_VIEW_BORDER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (game.difficulty != DIFFICULTY_ORIGINAL)
|
else if (game.difficulty != DIFFICULTY_ORIGINAL)
|
||||||
|
@ -1485,13 +1485,13 @@ static void game_doPlayer()
|
||||||
cd = player.y - screen->h / 2;
|
cd = player.y - screen->h / 2;
|
||||||
if (cd < 0)
|
if (cd < 0)
|
||||||
{
|
{
|
||||||
cc = MAX(cd / 10, MAX(0, engine.ssy) - cameraMaxSpeed);
|
cc = MAX(cd / 10, MAX(0, engine.ssy) - CAMERA_MAX_SPEED);
|
||||||
player.y -= cc;
|
player.y -= cc;
|
||||||
engine.smy -= cc;
|
engine.smy -= cc;
|
||||||
}
|
}
|
||||||
else if (cd > 0)
|
else if (cd > 0)
|
||||||
{
|
{
|
||||||
cc = MIN(cd / 10, cameraMaxSpeed + MIN(0, engine.ssy));
|
cc = MIN(cd / 10, CAMERA_MAX_SPEED + MIN(0, engine.ssy));
|
||||||
player.y -= cc;
|
player.y -= cc;
|
||||||
engine.smy -= cc;
|
engine.smy -= cc;
|
||||||
}
|
}
|
||||||
|
@ -1499,8 +1499,8 @@ static void game_doPlayer()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LIMIT(player.x, xViewBorder, screen->w - xViewBorder);
|
LIMIT(player.x, X_VIEW_BORDER, screen->w - X_VIEW_BORDER);
|
||||||
LIMIT(player.y, yViewBorder, screen->h - yViewBorder);
|
LIMIT(player.y, Y_VIEW_BORDER, screen->h - Y_VIEW_BORDER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1531,9 +1531,9 @@ static void game_doPlayer()
|
||||||
if (aliens[ALIEN_KLINE].active)
|
if (aliens[ALIEN_KLINE].active)
|
||||||
{
|
{
|
||||||
if (game.area == MISN_VENUS)
|
if (game.area == MISN_VENUS)
|
||||||
radio_setMessage(FS_KLINE, klineVenusInsult[rand() % nKlineVenusInsult], 1);
|
radio_setMessage(FS_KLINE, klineVenusInsult[rand() % NMSG_KLINE_VENUS_INSULT], 1);
|
||||||
else
|
else
|
||||||
radio_setMessage(FS_KLINE, klineInsult[rand() % nKlineInsult], 1);
|
radio_setMessage(FS_KLINE, klineInsult[rand() % NMSG_KLINE_INSULT], 1);
|
||||||
}
|
}
|
||||||
else if ((aliens[ALIEN_BOSS].active) && (aliens[ALIEN_BOSS].classDef == CD_KRASS))
|
else if ((aliens[ALIEN_BOSS].active) && (aliens[ALIEN_BOSS].classDef == CD_KRASS))
|
||||||
{
|
{
|
||||||
|
@ -1560,8 +1560,8 @@ static void game_doPlayer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LIMIT(engine.ssx, -cameraMaxSpeed, cameraMaxSpeed);
|
LIMIT(engine.ssx, -CAMERA_MAX_SPEED, CAMERA_MAX_SPEED);
|
||||||
LIMIT(engine.ssy, -cameraMaxSpeed, cameraMaxSpeed);
|
LIMIT(engine.ssy, -CAMERA_MAX_SPEED, CAMERA_MAX_SPEED);
|
||||||
|
|
||||||
// Specific for the mission were you have to chase the Executive Transport
|
// Specific for the mission were you have to chase the Executive Transport
|
||||||
if (((game.area == MISN_ELLESH) && (player.shield > 0)) ||
|
if (((game.area == MISN_ELLESH) && (player.shield > 0)) ||
|
||||||
|
@ -2580,3 +2580,10 @@ int game_mainLoop()
|
||||||
|
|
||||||
return rtn;
|
return rtn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef NMSG_KLINE_INSULT
|
||||||
|
#undef NMSG_KLINE_VENUS_INSULT
|
||||||
|
#undef NMSG_PHOEBE_PLAYER_HIT
|
||||||
|
#undef NMSG_URSULA_PLAYER_HIT
|
||||||
|
#undef NMSG_PLAYER_PHOEBE_HIT
|
||||||
|
#undef NMSG_PLAYER_URSULA_HIT
|
||||||
|
|
|
@ -1492,7 +1492,7 @@ int intermission()
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
x = screen->w / 2 - savesSurface->w / 2;
|
x = screen->w / 2 - savesSurface->w / 2;
|
||||||
y = intermission_ycenter - savesSurface->h / 2;
|
y = INTERMISSION_YCENTER - savesSurface->h / 2;
|
||||||
screen_blit(savesSurface, x, y);
|
screen_blit(savesSurface, x, y);
|
||||||
saveSlot = save_showSlots(savesSurface, saveSlot, x, y);
|
saveSlot = save_showSlots(savesSurface, saveSlot, x, y);
|
||||||
break;
|
break;
|
||||||
|
@ -1503,14 +1503,14 @@ int intermission()
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
x = screen->w / 2 - commsSurface->w / 2;
|
x = screen->w / 2 - commsSurface->w / 2;
|
||||||
y = intermission_ycenter - commsSurface->h / 2;
|
y = INTERMISSION_YCENTER - commsSurface->h / 2;
|
||||||
screen_blit(commsSurface, x, y);
|
screen_blit(commsSurface, x, y);
|
||||||
intermission_doComms(commsSurface, x, y);
|
intermission_doComms(commsSurface, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
x = screen->w / 2 - optionsSurface->w / 2;
|
x = screen->w / 2 - optionsSurface->w / 2;
|
||||||
y = intermission_ycenter - optionsSurface->h / 2;
|
y = INTERMISSION_YCENTER - optionsSurface->h / 2;
|
||||||
screen_blit(optionsSurface, x, y);
|
screen_blit(optionsSurface, x, y);
|
||||||
intermission_doOptions(optionsSurface, x, y);
|
intermission_doOptions(optionsSurface, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -25,7 +25,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
extern Planet intermission_planets[MAX_PLANETS];
|
extern Planet intermission_planets[MAX_PLANETS];
|
||||||
|
|
||||||
const int intermission_ycenter = 50 + (DEFAULT_SCREEN_HEIGHT - 150) / 2;
|
#define INTERMISSION_YCENTER (50 + (screen->h - 150) / 2)
|
||||||
|
|
||||||
void intermission_initPlanets(int system);
|
void intermission_initPlanets(int system);
|
||||||
void intermission_unlockPlanets();
|
void intermission_unlockPlanets();
|
||||||
|
|
|
@ -176,7 +176,7 @@ void ship_fireRay(Object *ship)
|
||||||
player.image[0]->h, ray.x, ray.y, ray.w, ray.h) &&
|
player.image[0]->h, ray.x, ray.y, ray.w, ray.h) &&
|
||||||
(!engine.cheatShield) && (engine.missionCompleteTimer == 0))
|
(!engine.cheatShield) && (engine.missionCompleteTimer == 0))
|
||||||
{
|
{
|
||||||
player_damage(1, rayDamageDelay);
|
player_damage(1, RAY_DAMAGE_DELAY);
|
||||||
|
|
||||||
explosion_add(player.x, player.y, SP_SMALL_EXPLOSION);
|
explosion_add(player.x, player.y, SP_SMALL_EXPLOSION);
|
||||||
audio_playSound(SFX_HIT, player.x, player.y);
|
audio_playSound(SFX_HIT, player.x, player.y);
|
||||||
|
|
128
src/shop.cpp
128
src/shop.cpp
|
@ -31,6 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
#include "save.h"
|
#include "save.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
|
#include "shop.h"
|
||||||
#include "weapons.h"
|
#include "weapons.h"
|
||||||
|
|
||||||
typedef struct ShopItem_ {
|
typedef struct ShopItem_ {
|
||||||
|
@ -43,11 +44,6 @@ typedef struct ShopItem_ {
|
||||||
|
|
||||||
} ShopItem;
|
} ShopItem;
|
||||||
|
|
||||||
static const int shop_w = 600;
|
|
||||||
static const int shop_x = DEFAULT_SCREEN_WIDTH / 2 - shop_w / 2;
|
|
||||||
static const int shop_h = 336;
|
|
||||||
static const int shop_y = intermission_ycenter - shop_h / 2;
|
|
||||||
|
|
||||||
static ShopItem shopItems[SHOP_MAX];
|
static ShopItem shopItems[SHOP_MAX];
|
||||||
static int shopSelectedItem;
|
static int shopSelectedItem;
|
||||||
|
|
||||||
|
@ -265,8 +261,8 @@ static void drawShop()
|
||||||
|
|
||||||
for (int i = 0 ; i < icons ; i++)
|
for (int i = 0 ; i < icons ; i++)
|
||||||
{
|
{
|
||||||
gfx_blit(gfx_sprites[shopItems[i].image], shopItems[i].x + 10 - shop_x,
|
gfx_blit(gfx_sprites[shopItems[i].image], shopItems[i].x + 10 - SHOP_X,
|
||||||
shopItems[i].y - shop_y - 48, gfx_shopSprites[SHOP_S_CATALOG]);
|
shopItems[i].y - SHOP_Y - 48, gfx_shopSprites[SHOP_S_CATALOG]);
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(description, "Shield : %d", player.maxShield);
|
sprintf(description, "Shield : %d", player.maxShield);
|
||||||
|
@ -437,7 +433,7 @@ void shop_init()
|
||||||
shopItems[SHOP_HOMING_MISSILE].price = 7500;
|
shopItems[SHOP_HOMING_MISSILE].price = 7500;
|
||||||
strcpy(shopItems[SHOP_HOMING_MISSILE].name, "Homing Missile Launcher");
|
strcpy(shopItems[SHOP_HOMING_MISSILE].name, "Homing Missile Launcher");
|
||||||
sprintf(shopItems[SHOP_HOMING_MISSILE].description,
|
sprintf(shopItems[SHOP_HOMING_MISSILE].description,
|
||||||
"Fires homing missile (max %i missiles)", maxHoming);
|
"Fires homing missile (max %i missiles)", MAX_HOMING);
|
||||||
shopItems[SHOP_HOMING_MISSILE].image = 22;
|
shopItems[SHOP_HOMING_MISSILE].image = 22;
|
||||||
|
|
||||||
shopItems[SHOP_CHARGER].price = 10000;
|
shopItems[SHOP_CHARGER].price = 10000;
|
||||||
|
@ -449,66 +445,66 @@ void shop_init()
|
||||||
strcpy(shopItems[SHOP_DOUBLE_HOMING_MISSILES].name,
|
strcpy(shopItems[SHOP_DOUBLE_HOMING_MISSILES].name,
|
||||||
"Dual Homing Missile Launcher");
|
"Dual Homing Missile Launcher");
|
||||||
sprintf(shopItems[SHOP_DOUBLE_HOMING_MISSILES].description,
|
sprintf(shopItems[SHOP_DOUBLE_HOMING_MISSILES].description,
|
||||||
"Fires two homing missiles (max %i missiles)", maxDoubleHoming);
|
"Fires two homing missiles (max %i missiles)", MAX_DOUBLE_HOMING);
|
||||||
shopItems[SHOP_DOUBLE_HOMING_MISSILES].image = 24;
|
shopItems[SHOP_DOUBLE_HOMING_MISSILES].image = 24;
|
||||||
|
|
||||||
shopItems[SHOP_MICRO_HOMING_MISSILES].price = 15000;
|
shopItems[SHOP_MICRO_HOMING_MISSILES].price = 15000;
|
||||||
strcpy(shopItems[SHOP_MICRO_HOMING_MISSILES].name,
|
strcpy(shopItems[SHOP_MICRO_HOMING_MISSILES].name,
|
||||||
"Homing Micro Missile Launcher");
|
"Homing Micro Missile Launcher");
|
||||||
sprintf(shopItems[SHOP_MICRO_HOMING_MISSILES].description,
|
sprintf(shopItems[SHOP_MICRO_HOMING_MISSILES].description,
|
||||||
"Fires several small homing missiles (max %i missiles)", maxMicroHoming);
|
"Fires several small homing missiles (max %i missiles)", MAX_MICRO_HOMING);
|
||||||
shopItems[SHOP_MICRO_HOMING_MISSILES].image = 25;
|
shopItems[SHOP_MICRO_HOMING_MISSILES].image = 25;
|
||||||
|
|
||||||
shopItems[SHOP_PLASMA_MAX_OUTPUT].x = shop_x;
|
shopItems[SHOP_PLASMA_MAX_OUTPUT].x = SHOP_X;
|
||||||
shopItems[SHOP_PLASMA_MAX_OUTPUT].y = shop_y + 70;
|
shopItems[SHOP_PLASMA_MAX_OUTPUT].y = SHOP_Y + 70;
|
||||||
|
|
||||||
shopItems[SHOP_PLASMA_MAX_DAMAGE].x = shop_x + 50;
|
shopItems[SHOP_PLASMA_MAX_DAMAGE].x = SHOP_X + 50;
|
||||||
shopItems[SHOP_PLASMA_MAX_DAMAGE].y = shop_y + 70;
|
shopItems[SHOP_PLASMA_MAX_DAMAGE].y = SHOP_Y + 70;
|
||||||
|
|
||||||
shopItems[SHOP_PLASMA_MAX_RATE].x = shop_x + 100;
|
shopItems[SHOP_PLASMA_MAX_RATE].x = SHOP_X + 100;
|
||||||
shopItems[SHOP_PLASMA_MAX_RATE].y = shop_y + 70;
|
shopItems[SHOP_PLASMA_MAX_RATE].y = SHOP_Y + 70;
|
||||||
|
|
||||||
shopItems[SHOP_PLASMA_MIN_OUTPUT].x = shop_x;
|
shopItems[SHOP_PLASMA_MIN_OUTPUT].x = SHOP_X;
|
||||||
shopItems[SHOP_PLASMA_MIN_OUTPUT].y = shop_y + 130;
|
shopItems[SHOP_PLASMA_MIN_OUTPUT].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopItems[SHOP_PLASMA_MIN_DAMAGE].x = shop_x + 50;
|
shopItems[SHOP_PLASMA_MIN_DAMAGE].x = SHOP_X + 50;
|
||||||
shopItems[SHOP_PLASMA_MIN_DAMAGE].y = shop_y + 130;
|
shopItems[SHOP_PLASMA_MIN_DAMAGE].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopItems[SHOP_PLASMA_MIN_RATE].x = shop_x + 100;
|
shopItems[SHOP_PLASMA_MIN_RATE].x = SHOP_X + 100;
|
||||||
shopItems[SHOP_PLASMA_MIN_RATE].y = shop_y + 130;
|
shopItems[SHOP_PLASMA_MIN_RATE].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopItems[SHOP_PLASMA_AMMO].x = shop_x + 250;
|
shopItems[SHOP_PLASMA_AMMO].x = SHOP_X + 250;
|
||||||
shopItems[SHOP_PLASMA_AMMO].y = shop_y + 70;
|
shopItems[SHOP_PLASMA_AMMO].y = SHOP_Y + 70;
|
||||||
|
|
||||||
shopItems[SHOP_ROCKET_AMMO].x = shop_x + 300;
|
shopItems[SHOP_ROCKET_AMMO].x = SHOP_X + 300;
|
||||||
shopItems[SHOP_ROCKET_AMMO].y = shop_y + 70;
|
shopItems[SHOP_ROCKET_AMMO].y = SHOP_Y + 70;
|
||||||
|
|
||||||
shopItems[SHOP_PLASMA_MAX_AMMO].x = shop_x + 350;
|
shopItems[SHOP_PLASMA_MAX_AMMO].x = SHOP_X + 350;
|
||||||
shopItems[SHOP_PLASMA_MAX_AMMO].y = shop_y + 70;
|
shopItems[SHOP_PLASMA_MAX_AMMO].y = SHOP_Y + 70;
|
||||||
|
|
||||||
shopItems[SHOP_ROCKET_MAX_AMMO].x = shop_x + 400;
|
shopItems[SHOP_ROCKET_MAX_AMMO].x = SHOP_X + 400;
|
||||||
shopItems[SHOP_ROCKET_MAX_AMMO].y = shop_y + 70;
|
shopItems[SHOP_ROCKET_MAX_AMMO].y = SHOP_Y + 70;
|
||||||
|
|
||||||
shopItems[SHOP_DOUBLE_ROCKETS].x = shop_x + 250;
|
shopItems[SHOP_DOUBLE_ROCKETS].x = SHOP_X + 250;
|
||||||
shopItems[SHOP_DOUBLE_ROCKETS].y = shop_y + 130;
|
shopItems[SHOP_DOUBLE_ROCKETS].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopItems[SHOP_MICRO_ROCKETS].x = shop_x + 300;
|
shopItems[SHOP_MICRO_ROCKETS].x = SHOP_X + 300;
|
||||||
shopItems[SHOP_MICRO_ROCKETS].y = shop_y + 130;
|
shopItems[SHOP_MICRO_ROCKETS].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopItems[SHOP_LASER].x = shop_x + 350;
|
shopItems[SHOP_LASER].x = SHOP_X + 350;
|
||||||
shopItems[SHOP_LASER].y = shop_y + 130;
|
shopItems[SHOP_LASER].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopItems[SHOP_HOMING_MISSILE].x = shop_x + 400;
|
shopItems[SHOP_HOMING_MISSILE].x = SHOP_X + 400;
|
||||||
shopItems[SHOP_HOMING_MISSILE].y = shop_y + 130;
|
shopItems[SHOP_HOMING_MISSILE].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopItems[SHOP_CHARGER].x = shop_x + 450;
|
shopItems[SHOP_CHARGER].x = SHOP_X + 450;
|
||||||
shopItems[SHOP_CHARGER].y = shop_y + 130;
|
shopItems[SHOP_CHARGER].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopItems[SHOP_DOUBLE_HOMING_MISSILES].x = shop_x + 500;
|
shopItems[SHOP_DOUBLE_HOMING_MISSILES].x = SHOP_X + 500;
|
||||||
shopItems[SHOP_DOUBLE_HOMING_MISSILES].y = shop_y + 130;
|
shopItems[SHOP_DOUBLE_HOMING_MISSILES].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopItems[SHOP_MICRO_HOMING_MISSILES].x = shop_x + 550;
|
shopItems[SHOP_MICRO_HOMING_MISSILES].x = SHOP_X + 550;
|
||||||
shopItems[SHOP_MICRO_HOMING_MISSILES].y = shop_y + 130;
|
shopItems[SHOP_MICRO_HOMING_MISSILES].y = SHOP_Y + 130;
|
||||||
|
|
||||||
shopSelectedItem = -1;
|
shopSelectedItem = -1;
|
||||||
|
|
||||||
|
@ -609,19 +605,19 @@ static void buy(int i)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player.weaponType[1] == W_HOMING_MISSILE) &&
|
if ((player.weaponType[1] == W_HOMING_MISSILE) &&
|
||||||
(player.ammo[1] >= maxHoming))
|
(player.ammo[1] >= MAX_HOMING))
|
||||||
{
|
{
|
||||||
shopSelectedItem = -9;
|
shopSelectedItem = -9;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player.weaponType[1] == W_DOUBLE_HOMING_MISSILES) &&
|
if ((player.weaponType[1] == W_DOUBLE_HOMING_MISSILES) &&
|
||||||
(player.ammo[1] >= maxDoubleHoming))
|
(player.ammo[1] >= MAX_DOUBLE_HOMING))
|
||||||
{
|
{
|
||||||
shopSelectedItem = -9;
|
shopSelectedItem = -9;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player.weaponType[1] == W_MICRO_HOMING_MISSILES) &&
|
if ((player.weaponType[1] == W_MICRO_HOMING_MISSILES) &&
|
||||||
(player.ammo[1] >= maxMicroHoming))
|
(player.ammo[1] >= MAX_MICRO_HOMING))
|
||||||
{
|
{
|
||||||
shopSelectedItem = -9;
|
shopSelectedItem = -9;
|
||||||
return;
|
return;
|
||||||
|
@ -679,19 +675,19 @@ static void buy(int i)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player.weaponType[1] == W_HOMING_MISSILE) &&
|
if ((player.weaponType[1] == W_HOMING_MISSILE) &&
|
||||||
(game.maxRocketAmmo >= maxHoming))
|
(game.maxRocketAmmo >= MAX_HOMING))
|
||||||
{
|
{
|
||||||
shopSelectedItem = -9;
|
shopSelectedItem = -9;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player.weaponType[1] == W_DOUBLE_HOMING_MISSILES) &&
|
if ((player.weaponType[1] == W_DOUBLE_HOMING_MISSILES) &&
|
||||||
(game.maxRocketAmmo >= maxDoubleHoming))
|
(game.maxRocketAmmo >= MAX_DOUBLE_HOMING))
|
||||||
{
|
{
|
||||||
shopSelectedItem = -9;
|
shopSelectedItem = -9;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player.weaponType[1] == W_MICRO_HOMING_MISSILES) &&
|
if ((player.weaponType[1] == W_MICRO_HOMING_MISSILES) &&
|
||||||
(game.maxRocketAmmo >= maxMicroHoming))
|
(game.maxRocketAmmo >= MAX_MICRO_HOMING))
|
||||||
{
|
{
|
||||||
shopSelectedItem = -9;
|
shopSelectedItem = -9;
|
||||||
return;
|
return;
|
||||||
|
@ -757,10 +753,10 @@ static void buy(int i)
|
||||||
shop_sellSecondaryWeapon();
|
shop_sellSecondaryWeapon();
|
||||||
player.weaponType[1] = W_HOMING_MISSILE;
|
player.weaponType[1] = W_HOMING_MISSILE;
|
||||||
|
|
||||||
while (game.maxRocketAmmo > maxHoming)
|
while (game.maxRocketAmmo > MAX_HOMING)
|
||||||
sell(SHOP_ROCKET_MAX_AMMO);
|
sell(SHOP_ROCKET_MAX_AMMO);
|
||||||
|
|
||||||
LIMIT(game.maxRocketAmmo, 5, maxHoming);
|
LIMIT(game.maxRocketAmmo, 5, MAX_HOMING);
|
||||||
shopSelectedItem = -1;
|
shopSelectedItem = -1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -793,10 +789,10 @@ static void buy(int i)
|
||||||
shop_sellSecondaryWeapon();
|
shop_sellSecondaryWeapon();
|
||||||
player.weaponType[1] = W_DOUBLE_HOMING_MISSILES;
|
player.weaponType[1] = W_DOUBLE_HOMING_MISSILES;
|
||||||
|
|
||||||
while (game.maxRocketAmmo > maxDoubleHoming)
|
while (game.maxRocketAmmo > MAX_DOUBLE_HOMING)
|
||||||
sell(SHOP_ROCKET_MAX_AMMO);
|
sell(SHOP_ROCKET_MAX_AMMO);
|
||||||
|
|
||||||
LIMIT(game.maxRocketAmmo, 5, maxDoubleHoming);
|
LIMIT(game.maxRocketAmmo, 5, MAX_DOUBLE_HOMING);
|
||||||
shopSelectedItem = -1;
|
shopSelectedItem = -1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -809,10 +805,10 @@ static void buy(int i)
|
||||||
shop_sellSecondaryWeapon();
|
shop_sellSecondaryWeapon();
|
||||||
player.weaponType[1] = W_MICRO_HOMING_MISSILES;
|
player.weaponType[1] = W_MICRO_HOMING_MISSILES;
|
||||||
|
|
||||||
while (game.maxRocketAmmo > maxMicroHoming)
|
while (game.maxRocketAmmo > MAX_MICRO_HOMING)
|
||||||
sell(SHOP_ROCKET_MAX_AMMO);
|
sell(SHOP_ROCKET_MAX_AMMO);
|
||||||
|
|
||||||
LIMIT(game.maxRocketAmmo, 5, maxMicroHoming);
|
LIMIT(game.maxRocketAmmo, 5, MAX_MICRO_HOMING);
|
||||||
shopSelectedItem = -1;
|
shopSelectedItem = -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1048,17 +1044,17 @@ static void sell(int i)
|
||||||
void shop_show()
|
void shop_show()
|
||||||
{
|
{
|
||||||
int icons = SHOP_MAX;
|
int icons = SHOP_MAX;
|
||||||
int sell_x = shop_x + shop_w - gfx_sprites[SP_SELL]->w - 2;
|
int sell_x = SHOP_X + SHOP_WIDTH - gfx_sprites[SP_SELL]->w - 2;
|
||||||
int sell_y = shop_y + 183;
|
int sell_y = SHOP_Y + 183;
|
||||||
int buy_x = sell_x - gfx_sprites[SP_BUY]->w - 5;
|
int buy_x = sell_x - gfx_sprites[SP_BUY]->w - 5;
|
||||||
int buy_y = shop_y + 183;
|
int buy_y = SHOP_Y + 183;
|
||||||
|
|
||||||
screen_blit(gfx_shopSprites[SHOP_S_SHIP_INFO], shop_x, shop_y);
|
screen_blit(gfx_shopSprites[SHOP_S_SHIP_INFO], SHOP_X, SHOP_Y);
|
||||||
screen_blit(gfx_shopSprites[SHOP_S_CATALOG], shop_x, shop_y + 50);
|
screen_blit(gfx_shopSprites[SHOP_S_CATALOG], SHOP_X, SHOP_Y + 50);
|
||||||
screen_blit(gfx_shopSprites[SHOP_S_ITEM_INFO], shop_x, shop_y + 180);
|
screen_blit(gfx_shopSprites[SHOP_S_ITEM_INFO], SHOP_X, SHOP_Y + 180);
|
||||||
screen_blit(gfx_shopSprites[SHOP_S_PRIMARY], shop_x, shop_y + 245);
|
screen_blit(gfx_shopSprites[SHOP_S_PRIMARY], SHOP_X, SHOP_Y + 245);
|
||||||
screen_blit(gfx_shopSprites[SHOP_S_POWERUP], shop_x + 203, shop_y + 245);
|
screen_blit(gfx_shopSprites[SHOP_S_POWERUP], SHOP_X + 203, SHOP_Y + 245);
|
||||||
screen_blit(gfx_shopSprites[SHOP_S_SECONDARY], shop_x + 406, shop_y + 245);
|
screen_blit(gfx_shopSprites[SHOP_S_SECONDARY], SHOP_X + 406, SHOP_Y + 245);
|
||||||
|
|
||||||
if (shopSelectedItem > -1)
|
if (shopSelectedItem > -1)
|
||||||
{
|
{
|
||||||
|
@ -1066,7 +1062,7 @@ void shop_show()
|
||||||
screen_blit(gfx_sprites[SP_SELL], sell_x, sell_y);
|
screen_blit(gfx_sprites[SP_SELL], sell_x, sell_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
screen_blit(gfx_sprites[SP_FIREFLY], shop_x + 280, shop_y + 15);
|
screen_blit(gfx_sprites[SP_FIREFLY], SHOP_X + 280, SHOP_Y + 15);
|
||||||
|
|
||||||
if (game.system == 0)
|
if (game.system == 0)
|
||||||
icons = SHOP_DOUBLE_ROCKETS + 1;
|
icons = SHOP_DOUBLE_ROCKETS + 1;
|
||||||
|
|
|
@ -23,6 +23,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
#include "structs.h"
|
#include "structs.h"
|
||||||
|
|
||||||
|
#define SHOP_WIDTH 600
|
||||||
|
#define SHOP_HEIGHT 336
|
||||||
|
#define SHOP_X (screen->w / 2 - SHOP_WIDTH / 2)
|
||||||
|
#define SHOP_Y (INTERMISSION_YCENTER - SHOP_HEIGHT / 2)
|
||||||
|
|
||||||
void shop_init();
|
void shop_init();
|
||||||
void shop_show();
|
void shop_show();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue