Allow manual switching of targets (closest). Disallow firing of missiles if target is too far away.

This commit is contained in:
Steve 2015-10-30 23:31:20 +00:00
parent 85364c6f55
commit c3d07ea5a2
2 changed files with 15 additions and 14 deletions

View File

@ -94,14 +94,23 @@ void doPlayer(void)
if (app.keyboard[SDL_SCANCODE_RETURN] && player->missiles.ammo && player->target)
{
fireMissile(player);
if (getDistance(player->x, player->y, player->target->x, player->target->y) <= 1000)
{
fireMissile(player);
}
else
{
addHudMessage(colors.white, "Target not in range");
}
app.keyboard[SDL_SCANCODE_RETURN] = 0;
}
if (!player->target || player->target->health <= 0 || player->target->systemPower <= 0 || getDistance(player->x, player->y, player->target->x, player->target->y) > 1000)
if (!player->target || player->target->health <= 0 || player->target->systemPower <= 0 || app.keyboard[SDLK_t])
{
selectTarget();
app.keyboard[SDLK_t] = 0;
}
if (!battle.missionTarget)
@ -150,12 +159,7 @@ static void selectTarget(void)
for (e = battle.entityHead.next ; e != NULL ; e = e->next)
{
if (!e->active)
{
continue;
}
if (e != player && e->type == ET_FIGHTER && e->side != player->side && e->alive == ALIVE_ALIVE)
if (e->active && e != player && e->type == ET_FIGHTER && e->side != player->side && e->alive == ALIVE_ALIVE)
{
dist = getDistance(self->x, self->y, e->x, e->y);
if (dist < closest)
@ -177,12 +181,7 @@ static void selectMissionTarget(void)
for (e = battle.entityHead.next ; e != NULL ; e = e->next)
{
if (!e->active)
{
continue;
}
if (e->flags & EF_MISSION_TARGET && e->alive == ALIVE_ALIVE)
if (e->active && e->flags & EF_MISSION_TARGET && e->alive == ALIVE_ALIVE)
{
if (battle.missionTarget == NULL)
{

View File

@ -29,8 +29,10 @@ extern void applyFighterThrust(void);
extern void applyFighterBrakes(void);
extern int getDistance(int x1, int y1, int x2, int y2);
extern void failIncompleteObjectives(void);
extern void addHudMessage(SDL_Color c, char *format, ...);
extern App app;
extern Battle battle;
extern Colors colors;
extern Entity *player;
extern Entity *self;