Various boost tweaks.
This commit is contained in:
parent
f62861cfba
commit
6dfe2b7f22
|
@ -355,11 +355,12 @@ void applyFighterThrust(void)
|
|||
self->dy += -cos(TO_RAIDANS(self->angle)) * 0.1;
|
||||
self->thrust = sqrt((self->dx * self->dx) + (self->dy * self->dy));
|
||||
|
||||
if (self->thrust > self->speed * self->speed)
|
||||
while (self->thrust > self->speed * self->speed)
|
||||
{
|
||||
v = (self->speed / sqrt(self->thrust));
|
||||
self->dx = v * self->dx;
|
||||
self->dy = v * self->dy;
|
||||
self->thrust = sqrt((self->dx * self->dx) + (self->dy * self->dy));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ static void drawDistancesInfo(void);
|
|||
static void drawHudMessages(void);
|
||||
static void drawPlayerSelect(void);
|
||||
static void drawAbilityBars(void);
|
||||
static void drawBoostECMBar(int x, int y, int r, int g, int b, int available);
|
||||
static void drawBoostECMBar(int current, int max, int x, int y, int r, int g, int b);
|
||||
|
||||
static HudMessage hudMessageHead;
|
||||
static HudMessage *hudMessageTail;
|
||||
|
@ -216,15 +216,18 @@ static void drawHealthShieldBar(int current, int max, int x, int y, int r, int g
|
|||
|
||||
static void drawAbilityBars(void)
|
||||
{
|
||||
drawBoostECMBar(10, 50, 128, 128, 255, battle.boostTimer == 0);
|
||||
drawBoostECMBar(battle.boostTimer, BOOST_RECHARGE_TIME, 10, 50, 128, 128, 255);
|
||||
|
||||
drawBoostECMBar(160, 50, 255, 128, 0, battle.ecmTimer == 0);
|
||||
drawBoostECMBar(battle.ecmTimer, ECM_RECHARGE_TIME, 160, 50, 255, 128, 0);
|
||||
}
|
||||
|
||||
static void drawBoostECMBar(int x, int y, int r, int g, int b, int available)
|
||||
static void drawBoostECMBar(int current, int max, int x, int y, int r, int g, int b)
|
||||
{
|
||||
SDL_Rect rect;
|
||||
|
||||
float percent = current;
|
||||
percent /= max;
|
||||
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.w = 100;
|
||||
|
@ -236,16 +239,22 @@ static void drawBoostECMBar(int x, int y, int r, int g, int b, int available)
|
|||
SDL_SetRenderDrawColor(app.renderer, 255, 255, 255, 255);
|
||||
SDL_RenderDrawRect(app.renderer, &rect);
|
||||
|
||||
if (available)
|
||||
{
|
||||
rect.x += 2;
|
||||
rect.y += 2;
|
||||
rect.w -= 4;
|
||||
rect.h -= 4;
|
||||
|
||||
rect.w *= percent;
|
||||
|
||||
if (current < max)
|
||||
{
|
||||
r /= 2;
|
||||
g /= 2;
|
||||
b /= 2;
|
||||
}
|
||||
|
||||
SDL_SetRenderDrawColor(app.renderer, r, g, b, 255);
|
||||
SDL_RenderFillRect(app.renderer, &rect);
|
||||
}
|
||||
}
|
||||
|
||||
static void drawWeaponInfo(void)
|
||||
|
|
|
@ -59,16 +59,16 @@ void initPlayer(void)
|
|||
|
||||
player->action = NULL;
|
||||
|
||||
battle.boostTimer = 0;
|
||||
battle.ecmTimer = 0;
|
||||
battle.boostTimer = BOOST_RECHARGE_TIME;
|
||||
battle.ecmTimer = ECM_RECHARGE_TIME;
|
||||
}
|
||||
|
||||
void doPlayer(void)
|
||||
{
|
||||
battle.boostTimer = MAX(battle.boostTimer - 1, 0);
|
||||
battle.ecmTimer = MAX(battle.ecmTimer - 1, 0);
|
||||
battle.boostTimer = MIN(battle.boostTimer + 1, BOOST_RECHARGE_TIME);
|
||||
battle.ecmTimer = MIN(battle.ecmTimer + 1, ECM_RECHARGE_TIME);
|
||||
|
||||
if (battle.boostTimer == BOOST_FINISHED_TIME)
|
||||
if (battle.boostTimer == (int)BOOST_FINISHED_TIME)
|
||||
{
|
||||
applyFighterThrust();
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ void doPlayer(void)
|
|||
player->angle += 4;
|
||||
}
|
||||
|
||||
if (app.keyboard[SDL_SCANCODE_UP] && battle.boostTimer < BOOST_FINISHED_TIME)
|
||||
if (app.keyboard[SDL_SCANCODE_UP] && battle.boostTimer > BOOST_FINISHED_TIME)
|
||||
{
|
||||
applyFighterThrust();
|
||||
}
|
||||
|
@ -132,12 +132,14 @@ void doPlayer(void)
|
|||
app.keyboard[SDLK_t] = 0;
|
||||
}
|
||||
|
||||
if (app.keyboard[SDL_SCANCODE_SPACE] && !battle.boostTimer)
|
||||
if (app.keyboard[SDL_SCANCODE_SPACE] && battle.boostTimer == BOOST_RECHARGE_TIME)
|
||||
{
|
||||
playSound(SND_BOOST);
|
||||
|
||||
activateBoost();
|
||||
}
|
||||
|
||||
if (app.keyboard[SDL_SCANCODE_E] && !battle.ecmTimer)
|
||||
if (app.keyboard[SDL_SCANCODE_E] && battle.ecmTimer == ECM_RECHARGE_TIME)
|
||||
{
|
||||
activateECM();
|
||||
}
|
||||
|
@ -242,12 +244,12 @@ static void activateBoost(void)
|
|||
self->dy += -cos(TO_RAIDANS(self->angle)) * 10;
|
||||
self->thrust = sqrt((self->dx * self->dx) + (self->dy * self->dy));
|
||||
|
||||
battle.boostTimer = BOOST_RECHARGE_TIME;
|
||||
battle.boostTimer = 0;
|
||||
}
|
||||
|
||||
static void activateECM(void)
|
||||
{
|
||||
battle.ecmTimer = ECM_RECHARGE_TIME;
|
||||
battle.ecmTimer = 0;
|
||||
}
|
||||
|
||||
static void switchGuns(void)
|
||||
|
|
|
@ -32,6 +32,7 @@ extern void applyFighterBrakes(void);
|
|||
extern int getDistance(int x1, int y1, int x2, int y2);
|
||||
extern void addHudMessage(SDL_Color c, char *format, ...);
|
||||
extern int mod(int n, int x);
|
||||
extern void playSound(int id);
|
||||
extern void failMission(void);
|
||||
|
||||
extern App app;
|
||||
|
|
|
@ -76,7 +76,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
/* player abilities */
|
||||
#define BOOST_RECHARGE_TIME (FPS * 5)
|
||||
#define BOOST_FINISHED_TIME (BOOST_RECHARGE_TIME - FPS * 0.5)
|
||||
#define BOOST_FINISHED_TIME (FPS * 0.75)
|
||||
#define ECM_RECHARGE_TIME (FPS * 5)
|
||||
|
||||
enum
|
||||
|
@ -153,6 +153,7 @@ enum
|
|||
SND_EXPLOSION_3,
|
||||
SND_EXPLOSION_4,
|
||||
SND_MISSILE,
|
||||
SND_BOOST,
|
||||
SND_GUI_CLICK,
|
||||
SND_GUI_SELECT,
|
||||
SND_GUI_CLOSE,
|
||||
|
|
Loading…
Reference in New Issue