[Add] Energy is actively in use now. ^.^
This commit is contained in:
parent
d970d85529
commit
2f59ae1b84
1
TODO
1
TODO
@ -2,7 +2,6 @@ Vital:
|
|||||||
-- Missions
|
-- Missions
|
||||||
-- Save
|
-- Save
|
||||||
-- Allow multiple ships in storage.
|
-- Allow multiple ships in storage.
|
||||||
-- Make energy do something.
|
|
||||||
-- Main Menu.
|
-- Main Menu.
|
||||||
-- Player death!
|
-- Player death!
|
||||||
-- Player faction system.
|
-- Player faction system.
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
<speed>550</speed>
|
<speed>550</speed>
|
||||||
<range>300</range>
|
<range>300</range>
|
||||||
<accuracy>30</accuracy>
|
<accuracy>30</accuracy>
|
||||||
|
<energy>8</energy>
|
||||||
<damage>
|
<damage>
|
||||||
<armour>13</armour>
|
<armour>13</armour>
|
||||||
<shield>10</shield>
|
<shield>10</shield>
|
||||||
@ -38,6 +39,7 @@
|
|||||||
<speed>550</speed>
|
<speed>550</speed>
|
||||||
<range>300</range>
|
<range>300</range>
|
||||||
<accuracy>30</accuracy>
|
<accuracy>30</accuracy>
|
||||||
|
<energy>10</energy>
|
||||||
<damage>
|
<damage>
|
||||||
<armour>13</armour>
|
<armour>13</armour>
|
||||||
<shield>10</shield>
|
<shield>10</shield>
|
||||||
@ -132,6 +134,7 @@
|
|||||||
<speed>650</speed>
|
<speed>650</speed>
|
||||||
<range>200</range>
|
<range>200</range>
|
||||||
<accuracy>15</accuracy>
|
<accuracy>15</accuracy>
|
||||||
|
<energy>5</energy>
|
||||||
<damage>
|
<damage>
|
||||||
<armour>7</armour>
|
<armour>7</armour>
|
||||||
<shield>7</shield>
|
<shield>7</shield>
|
||||||
|
12
dat/ship.xml
12
dat/ship.xml
@ -20,7 +20,7 @@
|
|||||||
<energy>240</energy>
|
<energy>240</energy>
|
||||||
<shield_regen>80</shield_regen>
|
<shield_regen>80</shield_regen>
|
||||||
<armour_regen>50</armour_regen>
|
<armour_regen>50</armour_regen>
|
||||||
<energy_regen>40</energy_regen>
|
<energy_regen>500</energy_regen>
|
||||||
</health>
|
</health>
|
||||||
<characteristics>
|
<characteristics>
|
||||||
<crew>2</crew>
|
<crew>2</crew>
|
||||||
@ -52,7 +52,7 @@
|
|||||||
<energy>180</energy>
|
<energy>180</energy>
|
||||||
<shield_regen>150</shield_regen>
|
<shield_regen>150</shield_regen>
|
||||||
<armour_regen>60</armour_regen>
|
<armour_regen>60</armour_regen>
|
||||||
<energy_regen>40</energy_regen>
|
<energy_regen>500</energy_regen>
|
||||||
</health>
|
</health>
|
||||||
<characteristics>
|
<characteristics>
|
||||||
<crew>2</crew>
|
<crew>2</crew>
|
||||||
@ -84,7 +84,7 @@
|
|||||||
<energy>900</energy>
|
<energy>900</energy>
|
||||||
<shield_regen>300</shield_regen>
|
<shield_regen>300</shield_regen>
|
||||||
<armour_regen>80</armour_regen>
|
<armour_regen>80</armour_regen>
|
||||||
<energy_regen>50</energy_regen>
|
<energy_regen>1400</energy_regen>
|
||||||
</health>
|
</health>
|
||||||
<characteristics>
|
<characteristics>
|
||||||
<crew>35</crew>
|
<crew>35</crew>
|
||||||
@ -118,7 +118,7 @@
|
|||||||
<energy>360</energy>
|
<energy>360</energy>
|
||||||
<shield_regen>180</shield_regen>
|
<shield_regen>180</shield_regen>
|
||||||
<armour_regen>60</armour_regen>
|
<armour_regen>60</armour_regen>
|
||||||
<energy_regen>50</energy_regen>
|
<energy_regen>1080</energy_regen>
|
||||||
</health>
|
</health>
|
||||||
<characteristics>
|
<characteristics>
|
||||||
<crew>9</crew>
|
<crew>9</crew>
|
||||||
@ -152,7 +152,7 @@
|
|||||||
<energy>200</energy>
|
<energy>200</energy>
|
||||||
<shield_regen>100</shield_regen>
|
<shield_regen>100</shield_regen>
|
||||||
<armour_regen>40</armour_regen>
|
<armour_regen>40</armour_regen>
|
||||||
<energy_regen>250</energy_regen>
|
<energy_regen>650</energy_regen>
|
||||||
</health>
|
</health>
|
||||||
<characteristics>
|
<characteristics>
|
||||||
<crew>13</crew>
|
<crew>13</crew>
|
||||||
@ -184,7 +184,7 @@
|
|||||||
<energy>300</energy>
|
<energy>300</energy>
|
||||||
<shield_regen>240</shield_regen>
|
<shield_regen>240</shield_regen>
|
||||||
<armour_regen>420</armour_regen>
|
<armour_regen>420</armour_regen>
|
||||||
<energy_regen>240</energy_regen>
|
<energy_regen>600</energy_regen>
|
||||||
</health>
|
</health>
|
||||||
<characteristics>
|
<characteristics>
|
||||||
<crew>1</crew>
|
<crew>1</crew>
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
<player>
|
<player>
|
||||||
<ship>Lancer</ship>
|
<ship>Lancer</ship>
|
||||||
<credits>
|
<credits>
|
||||||
<low>5000</low>
|
<low>50000</low>
|
||||||
<high>15000</high>
|
<high>150000</high>
|
||||||
</credits>
|
</credits>
|
||||||
<system>
|
<system>
|
||||||
<name>KonoSys</name>
|
<name>KonoSys</name>
|
||||||
|
@ -569,6 +569,7 @@ void takeoff(void) {
|
|||||||
// Heal the player.
|
// Heal the player.
|
||||||
player->armour = player->armour_max;
|
player->armour = player->armour_max;
|
||||||
player->shield = player->shield_max;
|
player->shield = player->shield_max;
|
||||||
|
player->energy = player->energy_max;
|
||||||
|
|
||||||
space_init(NULL);
|
space_init(NULL);
|
||||||
|
|
||||||
|
@ -126,6 +126,13 @@ int outfit_delay(const Outfit* o) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double outfit_energy(const Outfit* o) {
|
||||||
|
if(outfit_isWeapon(o)) return o->u.blt.energy;
|
||||||
|
else if(outfit_isAmmo(o)) return o->u.amm.energy;
|
||||||
|
else if(outfit_isTurret(o)) return o->u.blt.energy;
|
||||||
|
return -1.;
|
||||||
|
}
|
||||||
|
|
||||||
const char* outfit_typename[] = {
|
const char* outfit_typename[] = {
|
||||||
"NULL",
|
"NULL",
|
||||||
"Bolt Cannon",
|
"Bolt Cannon",
|
||||||
@ -180,6 +187,7 @@ static void outfit_parseSWeapon(Outfit* tmp, const xmlNodePtr parent) {
|
|||||||
else if(xml_isNode(node, "delay")) tmp->u.blt.delay = xml_getInt(node);
|
else if(xml_isNode(node, "delay")) tmp->u.blt.delay = xml_getInt(node);
|
||||||
else if(xml_isNode(node, "range")) tmp->u.blt.range = xml_getFloat(node);
|
else if(xml_isNode(node, "range")) tmp->u.blt.range = xml_getFloat(node);
|
||||||
else if(xml_isNode(node, "accuracy")) tmp->u.blt.accuracy = xml_getFloat(node);
|
else if(xml_isNode(node, "accuracy")) tmp->u.blt.accuracy = xml_getFloat(node);
|
||||||
|
else if(xml_isNode(node, "energy")) tmp->u.blt.energy = xml_getFloat(node);
|
||||||
else if(xml_isNode(node, "gfx")) {
|
else if(xml_isNode(node, "gfx")) {
|
||||||
snprintf(str, strlen(xml_get(node))+sizeof(OUTFIT_GFX)+4,
|
snprintf(str, strlen(xml_get(node))+sizeof(OUTFIT_GFX)+4,
|
||||||
OUTFIT_GFX"%s.png", xml_get(node));
|
OUTFIT_GFX"%s.png", xml_get(node));
|
||||||
@ -241,6 +249,7 @@ static void outfit_parseSAmmo(Outfit* tmp, const xmlNodePtr parent) {
|
|||||||
if(xml_isNode(node, "thrust")) tmp->u.amm.thrust = xml_getFloat(node);
|
if(xml_isNode(node, "thrust")) tmp->u.amm.thrust = xml_getFloat(node);
|
||||||
else if(xml_isNode(node, "turn")) tmp->u.amm.turn = xml_getFloat(node);
|
else if(xml_isNode(node, "turn")) tmp->u.amm.turn = xml_getFloat(node);
|
||||||
else if(xml_isNode(node, "speed")) tmp->u.amm.speed = xml_getFloat(node);
|
else if(xml_isNode(node, "speed")) tmp->u.amm.speed = xml_getFloat(node);
|
||||||
|
else if(xml_isNode(node, "energy")) tmp->u.amm.energy = xml_getFloat(node);
|
||||||
else if(xml_isNode(node, "duration"))
|
else if(xml_isNode(node, "duration"))
|
||||||
tmp->u.amm.duration = (unsigned int)1000.*xml_getFloat(node);
|
tmp->u.amm.duration = (unsigned int)1000.*xml_getFloat(node);
|
||||||
else if(xml_isNode(node, "lockon"))
|
else if(xml_isNode(node, "lockon"))
|
||||||
|
@ -50,6 +50,7 @@ typedef struct Outfit_ {
|
|||||||
double speed; // Speed of shot. (not applicable to beam.
|
double speed; // Speed of shot. (not applicable to beam.
|
||||||
double range;
|
double range;
|
||||||
double accuracy; // Desviation accuracy.
|
double accuracy; // Desviation accuracy.
|
||||||
|
double energy; // Energy usage.
|
||||||
double damage_armour, damage_shield; // Damage.
|
double damage_armour, damage_shield; // Damage.
|
||||||
|
|
||||||
glTexture* gfx_space;
|
glTexture* gfx_space;
|
||||||
@ -71,6 +72,7 @@ typedef struct Outfit_ {
|
|||||||
double speed; // Max speed.
|
double speed; // Max speed.
|
||||||
double turn; // Turn vel.
|
double turn; // Turn vel.
|
||||||
double thrust; // Acceleration.
|
double thrust; // Acceleration.
|
||||||
|
double energy; // Energy usage.
|
||||||
double damage_armour, damage_shield; // Damage.
|
double damage_armour, damage_shield; // Damage.
|
||||||
|
|
||||||
glTexture* gfx_space;
|
glTexture* gfx_space;
|
||||||
@ -98,6 +100,7 @@ int outfit_spfx(const Outfit* o);
|
|||||||
double outfit_dmgShield(const Outfit* o);
|
double outfit_dmgShield(const Outfit* o);
|
||||||
double outfit_dmgArmour(const Outfit* o);
|
double outfit_dmgArmour(const Outfit* o);
|
||||||
int outfit_delay(const Outfit* o);
|
int outfit_delay(const Outfit* o);
|
||||||
|
double outfit_energy(const Outfit* o);
|
||||||
|
|
||||||
// Load/free outfit stack.
|
// Load/free outfit stack.
|
||||||
int outfit_load(void);
|
int outfit_load(void);
|
||||||
|
16
src/pilot.c
16
src/pilot.c
@ -171,6 +171,10 @@ static void pilot_shootWeapon(Pilot* p, PilotOutfit* w, const unsigned int t) {
|
|||||||
switch(w->outfit->type) {
|
switch(w->outfit->type) {
|
||||||
case OUTFIT_TYPE_TURRET_BOLT:
|
case OUTFIT_TYPE_TURRET_BOLT:
|
||||||
case OUTFIT_TYPE_BOLT:
|
case OUTFIT_TYPE_BOLT:
|
||||||
|
// Enough energy?
|
||||||
|
if(outfit_energy(w->outfit) > p->energy) return;
|
||||||
|
|
||||||
|
p->energy -= outfit_energy(w->outfit);
|
||||||
weapon_add(w->outfit, p->solid->dir, &p->solid->pos,
|
weapon_add(w->outfit, p->solid->dir, &p->solid->pos,
|
||||||
&p->solid->vel, p->id, t);
|
&p->solid->vel, p->id, t);
|
||||||
|
|
||||||
@ -185,6 +189,10 @@ static void pilot_shootWeapon(Pilot* p, PilotOutfit* w, const unsigned int t) {
|
|||||||
// Must be secondary weapon, Shooter can't be the target.
|
// Must be secondary weapon, Shooter can't be the target.
|
||||||
else if(outfit_isLauncher(w->outfit) && (w == p->secondary) && (p->id != t)) {
|
else if(outfit_isLauncher(w->outfit) && (w == p->secondary) && (p->id != t)) {
|
||||||
if(p->ammo && (p->ammo->quantity > 0)) {
|
if(p->ammo && (p->ammo->quantity > 0)) {
|
||||||
|
// Enough energy?
|
||||||
|
if(outfit_energy(w->outfit) > p->energy) return;
|
||||||
|
|
||||||
|
p->energy -= outfit_energy(w->outfit);
|
||||||
weapon_add(p->ammo->outfit, p->solid->dir, &p->solid->pos,
|
weapon_add(p->ammo->outfit, p->solid->dir, &p->solid->pos,
|
||||||
&p->solid->vel, p->id, t);
|
&p->solid->vel, p->id, t);
|
||||||
|
|
||||||
@ -349,13 +357,17 @@ static void pilot_update(Pilot* pilot, const double dt) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// We are still alive.
|
// We are still alive.
|
||||||
else if(pilot->armour < pilot->armour_max)
|
else if(pilot->armour < pilot->armour_max) {
|
||||||
pilot->armour += pilot->ship->armour_regen*dt;
|
pilot->armour += pilot->ship->armour_regen*dt;
|
||||||
else
|
pilot->energy += pilot->ship->energy_regen*dt;
|
||||||
|
} else {
|
||||||
pilot->shield += pilot->ship->shield_regen*dt;
|
pilot->shield += pilot->ship->shield_regen*dt;
|
||||||
|
pilot->energy += pilot->ship->energy_regen*dt;
|
||||||
|
}
|
||||||
|
|
||||||
if(pilot->armour > pilot->armour_max) pilot->armour = pilot->armour_max;
|
if(pilot->armour > pilot->armour_max) pilot->armour = pilot->armour_max;
|
||||||
if(pilot->shield > pilot->shield_max) pilot->shield = pilot->shield_max;
|
if(pilot->shield > pilot->shield_max) pilot->shield = pilot->shield_max;
|
||||||
|
if(pilot->energy > pilot->energy_max) pilot->energy = pilot->energy_max;
|
||||||
|
|
||||||
// Update the solid.
|
// Update the solid.
|
||||||
(*pilot->solid->update)(pilot->solid, dt);
|
(*pilot->solid->update)(pilot->solid, dt);
|
||||||
|
Loading…
Reference in New Issue
Block a user