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;
|
|
|