diff --git a/src/dialogue.c b/src/dialogue.c index 213b9c5..bdfaa73 100644 --- a/src/dialogue.c +++ b/src/dialogue.c @@ -1,7 +1,19 @@ /** * @file dialogue.c. * - * @brief Handles dialogue stuff. + * @brief Is a hight level api around toolkit.c for easy window creation. + * + * Only one dialogue may be open at once or behaviour is unspecified. + * + * All these dialogues use what I'm calling the secondary main loop hack. + * Basically they spawn another main lopp identical to the primary whose only + * difference is that it breaks on loop_done. Therefore this loop hijacks + * the main lopp until it's over, making these functions seem to be blocking + * without really being blocking. + * + * @todo Make dialogue system more flexible. + * + * @sa toolkit.c */ #include <stdarg.h> #include "lephisto.h" @@ -24,7 +36,7 @@ static void dialogue_inputClose(char* str); static void dialogue_inputCancel(char* str); /* Secondary loop hack. */ -static int loop_done; +static int loop_done; /**< Used to indicate the secondary loop is finished. */ static int toolkit_loop(void); /** @@ -92,8 +104,14 @@ static glFont* dialogue_getSize(char* msg, int* w, int* h) { return font; } -/* Displays an alert popup with only an ok button and a message. */ -static unsigned int msg_wid = 0; +static unsigned int msg_wid = 0; /**< Stores the message window id. */ +/** + * @fn void dialogue_msg(char* caption, const char* fmt, ...) + * + * @brief Open a dialogue window with an OK button and a message. + * @param caption Window title. + * @param fmt Printf syle message to display. + */ void dialogue_msg(char* caption, const char* fmt, ...) { char msg[4096]; va_list ap; diff --git a/src/outfit.h b/src/outfit.h index 30d9cc6..5d3a73e 100644 --- a/src/outfit.h +++ b/src/outfit.h @@ -2,40 +2,51 @@ #include "opengl.h" #include "sound.h" -#define outfit_isProp(o,p) ((o)->properties & p) +#define outfit_isProp(o,p) ((o)->properties & p) /**< Check an outfit for property. */ /* Property flags. */ -#define OUTFIT_PROP_WEAP_SECONDARY (1<<0) +#define OUTFIT_PROP_WEAP_SECONDARY (1<<0) /**< Is a secondary weapon? */ -/* Outfit types. */ +/** + * @enum OutfitType + * + * @brief Different types of existing outfits. + * + * Outfits are organized by the order here. + */ typedef enum OutfitType_ { - OUTFIT_TYPE_NULL, - OUTFIT_TYPE_BOLT, - OUTFIT_TYPE_BEAM, - OUTFIT_TYPE_TURRET_BOLT, - OUTFIT_TYPE_TURRET_BEAM, - OUTFIT_TYPE_MISSILE_DUMB, - OUTFIT_TYPE_MISSILE_DUMB_AMMO, - OUTFIT_TYPE_MISSILE_SEEK, - OUTFIT_TYPE_MISSILE_SEEK_AMMO, - OUTFIT_TYPE_MISSILE_SEEK_SMART, - OUTFIT_TYPE_MISSILE_SEEK_SMART_AMMO, - OUTFIT_TYPE_MISSILE_SWARM, - OUTFIT_TYPE_MISSILE_SWARM_AMMO, - OUTFIT_TYPE_MISSILE_SWARM_SMART, - OUTFIT_TYPE_MISSILE_SWARM_SMART_AMMO, - OUTFIT_TYPE_MODIFICATION, - OUTFIT_TYPE_AFTERBURNER, - OUTFIT_TYPE_MAP, - OUTFIT_TYPE_JAMMER, - OUTFIT_TYPE_SENTINEL /* Indicates last type. */ + OUTFIT_TYPE_NULL, /**< NULL type. */ + OUTFIT_TYPE_BOLT, /**< @todo Fixed bolt cannon. */ + OUTFIT_TYPE_BEAM, /**< Fixed beam cannon. */ + OUTFIT_TYPE_TURRET_BOLT, /**< @todo Rotaty bolt turret. */ + OUTFIT_TYPE_TURRET_BEAM, /**< Rotary bolt turret. */ + OUTFIT_TYPE_MISSILE_DUMB, /**< Dumb missile launcher. */ + OUTFIT_TYPE_MISSILE_DUMB_AMMO, /**< Dumb missile ammo. */ + OUTFIT_TYPE_MISSILE_SEEK, /**< Seeker missile launcher. */ + OUTFIT_TYPE_MISSILE_SEEK_AMMO, /**< Seeker missile ammo. */ + OUTFIT_TYPE_MISSILE_SEEK_SMART, /**< ATM equivalent to SEEK. */ + OUTFIT_TYPE_MISSILE_SEEK_SMART_AMMO, /**< @todo atm equivalent to SEEK_AMMI. */ + OUTFIT_TYPE_MISSILE_SWARM, /**< @todo Swarm missile launcher. */ + OUTFIT_TYPE_MISSILE_SWARM_AMMO, /**< @todo Swarm missile ammo. */ + OUTFIT_TYPE_MISSILE_SWARM_SMART, /**< @todo Same as SWARM. */ + OUTFIT_TYPE_MISSILE_SWARM_SMART_AMMO, /**< @todo Same as SWARM_AMMO. */ + OUTFIT_TYPE_MODIFICATION, /**< Modifies the ship afterburn capability. */ + OUTFIT_TYPE_AFTERBURNER, /**< Gives the ship afterburn capability. */ + OUTFIT_TYPE_JAMMER, /**< Used to nullify seeker missiles. */ + OUTFIT_TYPE_MAP, /**< Give the player more knowledge about systems. */ + OUTFIT_TYPE_SENTINEL /**< Indicates last type. */ } OutfitType; +/** + * @enum DamageType + * + * @brief Different types of damage. + */ typedef enum DamageType_ { - DAMAGE_TYPE_NULL, - DAMAGE_TYPE_ENERGY, - DAMAGE_TYPE_KINETIC, - DAMAGE_TYPE_ION, - DAMAGE_TYPE_RADIATION + DAMAGE_TYPE_NULL, /**< NULL. */ + DAMAGE_TYPE_ENERGY, /**< Energy-based weapons. */ + DAMAGE_TYPE_KINETIC, /**< Physic impact weapons. */ + DAMAGE_TYPE_ION, /**< Ion-based weapons. */ + DAMAGE_TYPE_RADIATION /**< Radioactive weapons. */ } DamageType; /** @@ -183,25 +194,29 @@ typedef struct OutfitJammerData_ { double energy; /**< Energy it uses to run. */ } OutfitJammerData; -/* An outfit depends a lot on the type. */ +/** + * @struct Outfit + * + * @brief A ship outfit, depends radically on the type. + */ typedef struct Outfit_ { - char* name; + char* name; /**< Name of the outfit. */ /* General specs. */ - int max; - int tech; - int mass; + int max; /**< Max amount one can own. */ + int tech; /**< Tech needed to sell it. */ + int mass; /**< How much weapon capacity is needed. */ /* Store stuff. */ - unsigned int price; - char* description; + unsigned int price; /**< Base sell price. */ + char* description; /**< Store description. */ - glTexture* gfx_store; /* Store graphic. */ + glTexture* gfx_store; /**< Store graphic. */ - int properties; /* Properties stored bitwise. */ + int properties; /**< Properties stored bitwise. */ /* Type dependant. */ - OutfitType type; + OutfitType type; /**< Properties stored bitwise. */ union { OutfitBoltData blt; /**< BOLT. */ OutfitBeamData bem; /**< BEAM. */