diff --git a/src/space.h b/src/space.h index 023319a..9abb686 100644 --- a/src/space.h +++ b/src/space.h @@ -4,111 +4,133 @@ #include "economy.h" #include "pilot.h" -#define MIN_HYPERSPACE_DIST 1500 -#define MAX_HYPERSPACE_VEL 25 +#define MIN_HYPERSPACE_DIST 1500 /**< Minimum distance to initiate hyperspace. */ +#define MAX_HYPERSPACE_VEL 25 /**< Velocity. */ -#define PLANET_TECH_MAX 8 +#define PLANET_TECH_MAX 8 /**< Amount of special techs a planet can have. */ -/* Planet types. I didn't take them from Star Trek, I promise. */ +/** + * @enum PlanetClass + * + * @brief Different planet classes. + */ typedef enum PlanetClass_ { - PLANET_CLASS_NULL = 0, - PLANET_CLASS_A, /* Geothermal. */ - PLANET_CLASS_B, /* Geomorteus. */ - PLANET_CLASS_C, /* Geoinactive. */ - PLANET_CLASS_D, /* Asteroid/Moon. */ - PLANET_CLASS_E, /* Geoplastic. */ - PLANET_CLASS_F, /* Geometallic. */ - PLANET_CLASS_G, /* GroCrystaline. */ - PLANET_CLASS_H, /* Desert. */ - PLANET_CLASS_I, /* Gas Supergiant. */ - PLANET_CLASS_J, /* Gas Giant. */ - PLANET_CLASS_K, /* Adaptable. */ - PLANET_CLASS_L, /* Marginal. */ - PLANET_CLASS_M, /* Terrestrial. */ - PLANET_CLASS_N, /* Reducing. */ - PLANET_CLASS_O, /* Pelagic. */ - PLANET_CLASS_P, /* Glaciated. */ - PLANET_CLASS_Q, /* Variable. */ - PLANET_CLASS_R, /* Rogue. */ - PLANET_CLASS_S, /* Ultragiant. */ - PLANET_CLASS_T, /* Ultragiant. */ - PLANET_CLASS_X, /* Demon. */ - PLANET_CLASS_Y, /* Demon. */ - PLANET_CLASS_Z, /* Demon. */ - STATION_CLASS_A, /* Civilian station. */ - STATION_CLASS_B, /* Military station. */ - STATION_CLASS_C, /* Interfactional station. */ - STATION_CLASS_D, /* Robotoc station. */ + PLANET_CLASS_NULL = 0, /**< Null/Not defined. */ + PLANET_CLASS_A, /**< Geothermal. */ + PLANET_CLASS_B, /**< Geomorteus. */ + PLANET_CLASS_C, /**< Geoinactive. */ + PLANET_CLASS_D, /**< Asteroid/Moon. */ + PLANET_CLASS_E, /**< Geoplastic. */ + PLANET_CLASS_F, /**< Geometallic. */ + PLANET_CLASS_G, /**< GroCrystaline. */ + PLANET_CLASS_H, /**< Desert. */ + PLANET_CLASS_I, /**< Gas Supergiant. */ + PLANET_CLASS_J, /**< Gas Giant. */ + PLANET_CLASS_K, /**< Adaptable. */ + PLANET_CLASS_L, /**< Marginal. */ + PLANET_CLASS_M, /**< Terrestrial. */ + PLANET_CLASS_N, /**< Reducing. */ + PLANET_CLASS_O, /**< Pelagic. */ + PLANET_CLASS_P, /**< Glaciated. */ + PLANET_CLASS_Q, /**< Variable. */ + PLANET_CLASS_R, /**< Rogue. */ + PLANET_CLASS_S, /**< Ultragiant. */ + PLANET_CLASS_T, /**< Ultragiant. */ + PLANET_CLASS_X, /**< Demon. */ + PLANET_CLASS_Y, /**< Demon. */ + PLANET_CLASS_Z, /**< Demon. */ + STATION_CLASS_A, /**< Civilian station. */ + STATION_CLASS_B, /**< Military station. */ + STATION_CLASS_C, /**< Interfactional station. */ + STATION_CLASS_D, /**< Robotoc station. */ } PlanetClass; /* Planet services. */ -#define PLANET_SERVICE_LAND (1<<0) /* Can we land? */ -#define PLANET_SERVICE_BASIC (1<<1) /* Refueling, spaceport bar, new. */ -#define PLANET_SERVICE_COMMODITY (1<<2) -#define PLANET_SERVICE_OUTFITS (1<<3) -#define PLANET_SERVICE_SHIPYARD (1<<4) -#define planet_hasService(p,s) ((p)->services & s) +#define PLANET_SERVICE_LAND (1<<0) /**< Can we land? */ +#define PLANET_SERVICE_BASIC (1<<1) /**< Refueling, spaceport bar, new. */ +#define PLANET_SERVICE_COMMODITY (1<<2) /**< Can trade commodities. */ +#define PLANET_SERVICE_OUTFITS (1<<3) /**< Can trade outfits. */ +#define PLANET_SERVICE_SHIPYARD (1<<4) /**< Can trade ships. */ +#define planet_hasService(p,s) ((p)->services & s) /**< Check if planet has service. */ +/** + * @struct Planet + * + * @brief Represents a planet. + */ typedef struct Planet_ { - char* name; /* Planet name */ - Vec2 pos; /* Position in star system. */ + char* name; /**< Planet name */ + Vec2 pos; /**< Position in star system. */ - PlanetClass class; /* Planet type. */ - int faction; /* Planet faction. */ + PlanetClass class; /**< Planet type. */ + int faction; /**< Planet faction. */ - char* description; /* Planet description. */ - char* bar_description; /* Spaceport bar description. */ - unsigned int services; /* Offered services. */ - Commodity** commodities; /* Commodities sold. */ - int ncommodities; /* Amount in stock. */ + char* description; /**< Planet description. */ + char* bar_description; /**< Spaceport bar description. */ + unsigned int services; /**< Offered services. */ + Commodity** commodities; /**< Commodities sold. */ + int ncommodities; /**< Amount in stock. */ - /* tech[0] stores global tech level (everything that and below) while */ - /* tech[1-PLANET_TECH_MAX] stores the unique tech levels. */ - int tech[PLANET_TECH_MAX]; + int tech[PLANET_TECH_MAX]; /**< tech[0] stores the global tech level + (everything that and below) while + tech[1-PLANET_TECH_MAX] store the + "unique" tech levels (only matches) */ - glTexture* gfx_space; /* Graphics in space. */ - char* gfx_exterior; /* Don't actually load the texture. */ + glTexture* gfx_space; /**< Graphics in space. */ + char* gfx_exterior; /**< Don't actually load the texture. */ } Planet; /* Star system flags. */ -#define SYSTEM_KNOWN (1<<0) -#define SYSTEM_MARKED (1<<1) -#define sys_isFlag(s,f) ((s)->flags & (f)) -#define sys_setFlag(s,f) if(!sys_isFlag(s,f)) (s)->flags |= (f) -#define sys_rmFlag(s,f) if(sys_isFlag(s,f)) (s)->flags ^= (f) -#define sys_isKnown(s) sys_isFlag(s, SYSTEM_KNOWN) -#define sys_isMarked(s) sys_isFlag(s, SYSTEM_MARKED) +#define SYSTEM_KNOWN (1<<0) /**< System is known. */ +#define SYSTEM_MARKED (1<<1) /**< System is marked by a mission. */ +#define sys_isFlag(s,f) ((s)->flags & (f)) /**< Check system flag. */ +#define sys_setFlag(s,f) if(!sys_isFlag(s,f)) (s)->flags |= (f) /**< Set a system flag. */ +#define sys_rmFlag(s,f) if(sys_isFlag(s,f)) (s)->flags ^= (f) /**< Remove a system flag. */ +#define sys_isKnown(s) sys_isFlag(s, SYSTEM_KNOWN) /**< Check if system is known. */ +#define sys_isMarked(s) sys_isFlag(s, SYSTEM_MARKED) /**< Check if system is marked. */ -/* Star systems. */ +/** + * @struct SystemFleet + * + * @brief Represents a fleet that can appear in the system. + */ typedef struct SystemFleet_ { - Fleet* fleet; /* Fleet to appear. */ - int chance; /* Chance of fleet appearing in the system. */ + Fleet* fleet; /**< Fleet to appear. */ + int chance; /**< Chance of fleet appearing in the system. */ } SystemFleet; +/** + * @struct StarSystem + * + * @brief Represents a star system. + * + * The star system is the basic setting in Lephisto. + */ typedef struct StarSystem_ { - char* name; /* Star system identifier. */ - Vec2 pos; /* Position. */ - int stars, asteroids; /* Un numero! */ - double interference; /* Un uh.. Percentage. */ + char* name; /**< Star system identifier. */ + Vec2 pos; /**< Position. */ + int stars; /**< Ammount of "stars" it has. */ + int asteroids; /**< @todo Implement asteroids. */ + double interference; /**< in % @todo Implement interference. */ - int faction; /* Overall faction. */ + int faction; /**< Overall faction. */ - Planet* planets; /* Planets. */ - int nplanets; /* Total number of planets. */ + Planet* planets; /**< Planets. */ + int nplanets; /**< Total number of planets. */ - SystemFleet* fleets; /* Fleets that can appear in the current system. */ - int nfleets; /* Total number of fleets. */ + SystemFleet* fleets; /**< Fleets that can appear in the current system. */ + int nfleets; /**< Total number of fleets. */ - int* jumps; /* Adjacent star system index number. */ - int njumps; /* Number of adjacent jumps. */ + int* jumps; /**< Adjacent star system index number. */ + int njumps; /**< Number of adjacent jumps. */ - double nebu_density; /* Nebulae density (0. - 1000.).*/ - double nebu_volatility; /* Nebulae volatility (0. - 1000.). */ + double nebu_density; /**< Nebulae density (0. - 1000.).*/ + double nebu_volatility; /**< Nebulae volatility (0. - 1000.). */ - unsigned int flags; /* Flags for system properties. */ + unsigned int flags; /**< Flags for system properties. */ } StarSystem; -extern StarSystem* cur_system; /* Current star system. */ +extern StarSystem* cur_system; /**< Current star system. */ /* Load/Exit. */ void space_init(const char* sysname);