71 lines
1.7 KiB
C
71 lines
1.7 KiB
C
// Copyright © 2016-2017 Graham Sanderson, all rights reserved.
|
|
#include "lith_upgrades_common.h"
|
|
|
|
#define UData UData_JetBooster(upgr)
|
|
|
|
#define CHARGE_MAX (35 * 7)
|
|
|
|
// Extern Functions ----------------------------------------------------------|
|
|
|
|
//
|
|
// Activate
|
|
//
|
|
void Upgr_JetBooster_Activate(struct player *p, upgrade_t *upgr)
|
|
{
|
|
UData.charge = CHARGE_MAX;
|
|
}
|
|
|
|
//
|
|
// Update
|
|
//
|
|
script void Upgr_JetBooster_Update(struct player *p, upgrade_t *upgr)
|
|
{
|
|
UData.discharged = UData.charge > 60 && UData.charge < CHARGE_MAX;
|
|
|
|
if(UData.charge < CHARGE_MAX)
|
|
UData.charge++;
|
|
|
|
if(p->frozen) return;
|
|
|
|
fixed grounddist = p->z - p->floorz;
|
|
|
|
if(p->buttonPressed(BT_SPEED) && grounddist > 16.0 && UData.charge >= CHARGE_MAX)
|
|
{
|
|
fixed angle = p->yaw - ACS_VectorAngle(p->forwardv, p->sidev);
|
|
|
|
ACS_PlaySound(0, "player/rocketboost");
|
|
InvGive("Lith_RocketBooster", 1);
|
|
p->setVel(p->velx + (ACS_Cos(angle) * 16.0), p->vely + (ACS_Sin(angle) * 16.0), 10.0);
|
|
|
|
UData.charge = 0;
|
|
UData_ReflexWetw(p->getUpgr(UPGR_ReflexWetw)).leaped = 0;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Render
|
|
//
|
|
void Upgr_JetBooster_Render(struct player *p, upgrade_t *upgr)
|
|
{
|
|
if(!p->hudenabled || UData.charge == CHARGE_MAX) return;
|
|
|
|
fixed rocket = UData.charge / (fixed)CHARGE_MAX;
|
|
int max = (hid_jetS - hid_jetE) * rocket;
|
|
|
|
DrawSpriteFade(":HUD:H_B3", hid_jetbg, 320.2, 80.1, 0.0, 0.5);
|
|
|
|
HudMessageF("SMALLFNT", "Jet");
|
|
HudMessageParams(HUDMSG_FADEOUT, hid_jettext, CR_RED, 320.2, 160.1, 0.1, 0.5);
|
|
|
|
for(int i = 0; i < max; i++)
|
|
DrawSpriteXX(UData.discharged ? ":HUD:H_C1" : ":HUD:H_C2",
|
|
HUDMSG_FADEOUT | HUDMSG_ADDBLEND | HUDMSG_ALPHA,
|
|
hid_jetS - i,
|
|
320.2,
|
|
150.1 - (i * 5),
|
|
0.1, 0.5, 0.5);
|
|
}
|
|
|
|
// EOF
|
|
|