82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #pragma once
 | |
| #include "faction.h"
 | |
| #include "opengl.h"
 | |
| #include "pilot.h"
 | |
| 
 | |
| #define MIN_HYPERSPACE_DIST 1500
 | |
| #define MAX_HYPERSPACE_VEL  15
 | |
| 
 | |
| // Planet types. I didn't take them from Star Trek, I promise.
 | |
| typedef enum {
 | |
|   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.
 | |
| } PlanetClass;
 | |
| 
 | |
| typedef struct {
 | |
|   char* name; // Planet name
 | |
|   Vec2 pos; // Position in star system.
 | |
| 
 | |
|   PlanetClass class; // Planet type.
 | |
|   char* description;  // Planet description.
 | |
|   Faction* faction; // Planet faction.
 | |
|   glTexture* gfx_space; // Graphics in space.
 | |
|   glTexture* gfx_exterior; // Graphics in the exterior.
 | |
| } Planet;
 | |
| 
 | |
| // Star systems.
 | |
| typedef struct {
 | |
|   Fleet* fleet; // Fleet to appear.
 | |
|   int chance; // Chance of fleet appearing in the system.
 | |
| } SystemFleet;
 | |
| 
 | |
| typedef struct {
 | |
|   char* name; // Star system identifier.
 | |
|   Vec2 pos; // Position.
 | |
|   int stars, asteroids; // Un numero!
 | |
|   double interference; // Un uh.. Percentage.
 | |
| 
 | |
|   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.
 | |
| } StarSystem;
 | |
| 
 | |
| extern StarSystem* cur_system; // Current star system.
 | |
| 
 | |
| // Load/Exit.
 | |
| void space_init(const char* sysname);
 | |
| int space_load(void);
 | |
| void space_exit(void);
 | |
| 
 | |
| // Render.
 | |
| void space_render(double dt);
 | |
| void planets_render(void);
 | |
| 
 | |
| // Misc.
 | |
| int space_hyperspace(Pilot* p);
 | |
| extern char* stardate;
 | |
| 
 | 
