From 7030d9740220d4c7bad5df7c24a462b8745a7618 Mon Sep 17 00:00:00 2001 From: Allanis Date: Mon, 23 Sep 2013 20:58:55 +0100 Subject: [PATCH] [Change] Some cleaning up and more documentation of outfit.* --- src/outfit.c | 196 +++++++++++++++++++++++++++++++++++---------------- src/outfit.h | 1 + 2 files changed, 136 insertions(+), 61 deletions(-) diff --git a/src/outfit.c b/src/outfit.c index 33be31d..60a8117 100644 --- a/src/outfit.c +++ b/src/outfit.c @@ -200,6 +200,22 @@ int outfit_isAmmo(const Outfit* o) { } +/** + * @fn int outfit_isSeeker(const Outfit* o) + * + * @brief Check if outfit is a seeking weapon. + * @param o Outfit to check. + * @return 1 if o is a seerker weapon. + */ +int outfit_isSeeker(const Outfit* o) { + if((o->type==OUTFIT_TYPE_MISSILE_SEEK_AMMO) || + (o->type==OUTFIT_TYPE_MISSILE_SEEK_SMART_AMMO) || + (o->type==OUTFIT_TYPE_MISSILE_SWARM_AMMO) || + (o->type==OUTFIT_TYPE_MISSILE_SWARM_SMART_AMMO)) + return 1; + return 0; +} + /** * @fn int outfit_isTurret(const Outfit* o) * @@ -256,122 +272,180 @@ int outfit_isMap(const Outfit* o) { } -/* Get the outfit graphics. */ +/** + * @fn glTexture* outfit_gfx(const Outfit* o) + * + * @brief Get the outfits graphic effect. + * @param o Outfit to get information from. + */ glTexture* outfit_gfx(const Outfit* o) { - if(outfit_isWeapon(o)) return o->u.blt.gfx_space; + if(outfit_isBolt(o)) return o->u.blt.gfx_space; else if(outfit_isAmmo(o)) return o->u.amm.gfx_space; else if(outfit_isTurret(o)) return o->u.blt.gfx_space; return NULL; } -/* Get the outfit spfx if applicable. */ +/** + * @fn glTexture* outfit_spfx(const Outfit* o) + * + * @brief Get the outfits sound effect. + * @param o Outfit to get information from. + */ int outfit_spfx(const Outfit* o) { - if(outfit_isWeapon(o)) return o->u.blt.spfx; + if(outfit_isBolt(o)) return o->u.blt.spfx; else if(outfit_isAmmo(o)) return o->u.amm.spfx; else if(outfit_isTurret(o)) return o->u.blt.spfx; return -1; } +/** + * @fn double outfit_damage(const Outfit* o) + * + * @brief Get the outfits damage. + * @param o Outfit to get information. + */ double outfit_damage(const Outfit* o) { - if(outfit_isWeapon(o)) return o->u.blt.damage; + if(outfit_isBolt(o)) return o->u.blt.damage; + else if(outfit_isBeam(o)) return o->u.bem.damage; else if(outfit_isAmmo(o)) return o->u.amm.damage; else if(outfit_isTurret(o)) return o->u.blt.damage; return -1; } +/** + * @fn DamageType outfit_damageType(const Outfit* o) + * + * @brief Get the outfits damage type. + * @param o Outfit to get information from. + */ DamageType outfit_damageType(const Outfit* o) { - if(outfit_isWeapon(o)) return o->u.blt.dtype; + if(outfit_isBolt(o)) return o->u.blt.dtype; + else if(outfit_isBeam(o)) return o->u.bem.dtype; else if(outfit_isAmmo(o)) return o->u.amm.dtype; else if(outfit_isTurret(o)) return o->u.blt.dtype; return DAMAGE_TYPE_NULL; } +/** + * @fn int outfit_delay(const Outfit* o) + * + * @brief Get the ourfits delay. + * @param o Outfit to get information from. + */ int outfit_delay(const Outfit* o) { - if(outfit_isWeapon(o)) return o->u.blt.delay; + if(outfit_isBolt(o)) return o->u.blt.delay; + else if(outfit_isBeam(o)) return o->u.bem.delay; else if(outfit_isLauncher(o)) return o->u.lau.delay; else if(outfit_isTurret(o)) return o->u.blt.delay; return -1; } +/** + * @fn double outfit_energy(const Outfit* o) + * + * @brief Get the outfits energy usage. + * @param o Outfit to get information from. + */ double outfit_energy(const Outfit* o) { - if(outfit_isWeapon(o)) return o->u.blt.energy; + if(outfit_isBolt(o)) return o->u.blt.energy; + else if(outfit_isBeam(o)) return o->u.bem.energy; else if(outfit_isAmmo(o)) return o->u.amm.energy; else if(outfit_isTurret(o)) return o->u.blt.energy; return -1.; } +/** + * @fn double outfit_range(const Outfit* o) + * + * @brief Get the outfits range. + * @param o Outfit to get information from. + */ double outfit_range(const Outfit* o) { - if(outfit_isWeapon(o)) return o->u.blt.range; + if(outfit_isBolt(o)) return o->u.blt.range; + else if(outfit_isBeam(o)) return o->u.bem.range; else if(outfit_isAmmo(o)) return 0.8*o->u.amm.speed*o->u.amm.duration; else if(outfit_isTurret(o)) return o->u.blt.range; return -1.; } +/** + * @fn double outfit_speed(const Outfit* o) + * + * @brief Get the outfits speed. + * @param o Outfit to get information from. + */ double outfit_speed(const Outfit* o) { - if(outfit_isWeapon(o)) return o->u.blt.speed; + if(outfit_isBolt(o)) return o->u.blt.speed; else if(outfit_isAmmo(o)) return o->u.amm.speed; else if(outfit_isTurret(o)) return o->u.blt.speed; return -1.; } -int outfit_isSeeker(const Outfit* o) { - if((o->type == OUTFIT_TYPE_MISSILE_SEEK_AMMO) || - (o->type == OUTFIT_TYPE_MISSILE_SEEK_SMART_AMMO) || - (o->type == OUTFIT_TYPE_MISSILE_SWARM_AMMO) || - (o->type == OUTFIT_TYPE_MISSILE_SWARM_SMART_AMMO)) - return 1; - return 0; -} - -const char* outfit_typename[] = { - "NULL", - "Bolt Cannon", - "Beam Cannon", - "Bolt Turret", - "Beam Turret", - "Dumb Missile", - "Dumb Missile Ammunition", - "Seeker Missile", - "Seeker Missile Ammunition", - "Smart Seeker Missile", - "Smart Seeker Missile Ammunition", - "Swam Missile", - "Swarm Missile Ammunition Pack", - "Smart Swarm Missile", - "Smart Swarm Missile Ammunition Pack", - "Ship Modification", - "Afterburner", - "Map", - "Jammer" -}; - +/** + * @fn const char* outfit_getType(const Outfit* o) + * + * @brief Get the outfits specific type. + * @param o Outfit to get specific type from. + * @return The specific type in human readable form. + */ const char* outfit_getType(const Outfit* o) { + const char* outfit_typename[] = { + "NULL", + "Bolt Cannon", + "Beam Cannon", + "Bolt Turret", + "Beam Turret", + "Dumb Missile", + "Dumb Missile Ammunition", + "Seeker Missile", + "Seeker Missile Ammunition", + "Smart Seeker Missile", + "Smart Seeker Missile Ammunition", + "Swam Missile", + "Swarm Missile Ammunition Pack", + "Smart Swarm Missile", + "Smart Swarm Missile Ammunition Pack", + "Ship Modification", + "Afterburner", + "Jammer", + "Map" + }; + return outfit_typename[o->type]; } -/* Return the broad outfit type. */ -const char* outfit_typenamebroad[] = { - "NULL", - "Weapon", - "Launcher", - "Ammo", - "Turret", - "Modification", - "Afterburner", - "Map", - "Jammer" -}; - +/** + * @fn const char* outfit_getTypeBroad(const Outfit* o) + * + * @brief Get the outfits broad type. + * @param o Outfit to get the type of. + * @return the outfits broad type in human readable form. + */ const char* outfit_getTypeBroad(const Outfit* o) { int i = 0; - if(outfit_isWeapon(o)) i = 1; - else if(outfit_isLauncher(o)) i = 2; - else if(outfit_isAmmo(o)) i = 3; - else if(outfit_isTurret(o)) i = 4; - else if(outfit_isMod(o)) i = 5; - else if(outfit_isAfterburner(o)) i = 6; - else if(outfit_isMap(o)) i = 7; + + const char* outfit_typenamebroad[] = { + "NULL", + "Bolt Weapon", + "Beam Weapon", + "Launcher", + "Ammo", + "Turret", + "Modification", + "Afterburner", + "Jammer", + "Map" + }; + + if(outfit_isBolt(o)) i = 1; + else if(outfit_isBeam(o)) i = 2; + else if(outfit_isLauncher(o)) i = 3; + else if(outfit_isAmmo(o)) i = 4; + else if(outfit_isTurret(o)) i = 5; + else if(outfit_isMod(o)) i = 6; + else if(outfit_isAfterburner(o)) i = 7; else if(outfit_isJammer(o)) i = 8; + else if(outfit_isMap(o)) i = 9; return outfit_typenamebroad[i]; } diff --git a/src/outfit.h b/src/outfit.h index f130693..93ab889 100644 --- a/src/outfit.h +++ b/src/outfit.h @@ -63,6 +63,7 @@ typedef struct OutfitBoltData_ { * @brief Represents the particular properties of a beam weapon. */ typedef struct OutfitBeamData_ { + unsigned int delay; /**< Delay between usage. */ double range; /**< How far it goes. */ double turn; /**< How fast it can turn. Only for turrets. */ glColour* colour; /**< Beam colour. */