diff options
Diffstat (limited to 'dat.h')
-rw-r--r-- | dat.h | 94 |
1 files changed, 94 insertions, 0 deletions
@@ -1,3 +1,28 @@ +typedef enum +{ + K↑, + K↺, + K↻, + Kfire, + Khyper, + Ksay, + Kquit, + NKEYOPS +} KeyOp; + +typedef enum +{ + NEEDLE, + WEDGE +} Kind; + +typedef struct Vector Vector; +typedef struct VModel VModel; +typedef struct Sprite Sprite; +typedef struct Particle Particle; +typedef struct Ship Ship; +typedef struct Star Star; +typedef struct Universe Universe; typedef struct GameState GameState; typedef struct Derivative Derivative; typedef struct Conn Conn; @@ -5,8 +30,72 @@ typedef struct Player Player; typedef struct Lobby Lobby; typedef struct Party Party; +struct Vector +{ + double x, y; +}; + +/* + * Vector model - made out of lines and curves + */ +struct VModel +{ + Vector *pts; + ulong npts; + /* WIP + * l(ine) → takes 2 points + * c(urve) → takes 3 points + */ +// char *strokefmt; +}; + +struct Sprite +{ + Image *sheet; + Point sp; + Rectangle r; + int nframes; + int curframe; + ulong period; + ulong elapsed; + + void (*step)(Sprite*, ulong); + void (*draw)(Sprite*, Image*, Point); +}; + +struct Particle +{ + Vector p, v; + double yaw; + double mass; +}; + +struct Ship +{ + Particle; + Kind kind; + uint ammo; + VModel *mdl; +// Matrix mdlxform; +}; + +struct Star +{ + Particle; + Sprite spr; +}; + +struct Universe +{ + Ship ships[2]; + Star star; + + int (*step)(Universe*); +}; + struct GameState { + double t, timeacc; double x, v; }; @@ -43,7 +132,12 @@ struct Lobby struct Party { Player players[2]; /* the needle and the wedge */ + Universe *u; Party *prev, *next; + + /* testing */ + GameState state; }; + extern Party theparty; |