marrub
/
Lithia
Archived
1
0
Fork 0
This repository has been archived on 2023-06-17. You can view files and clone it, but cannot push or open issues/pull-requests.
Lithia/source/Main/u_jetbooster.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