ref: d4208c3e4679b3791f5a7c011b9845aa2f99e07f
dir: /dat.h/
typedef struct Node Node;
typedef struct Pairheap Pairheap;
typedef struct Attack Attack;
typedef struct Pic Pic;
typedef struct Pics Pics;
typedef struct Obj Obj;
typedef struct Path Path;
typedef struct Mobj Mobj;
typedef struct Mobjl Mobjl;
typedef struct Terrain Terrain;
typedef struct Map Map;
typedef struct Resource Resource;
typedef struct Team Team;
enum{
Nresource = 3,
Nteam = 8,
Nselect = 12,
Nrot = 32,
Tlwidth = 32,
Tlheight = Tlwidth,
Tlsubshift = 2,
Tlsubwidth = Tlwidth >> Tlsubshift,
Tlsubheight = Tlheight >> Tlsubshift,
Tlnsub = Tlwidth / Tlsubwidth,
Subpxshift = 16,
Subpxmask = (1 << Subpxshift) - 1,
};
enum{
Bshift = 6,
Bmask = (1 << Bshift) - 1,
};
struct Pairheap{
double sum;
Node *n;
Pairheap *parent;
Pairheap *left;
Pairheap *right;
};
struct Node{
int x;
int y;
int closed;
int open;
double g;
double Δg;
double h;
int step;
int dir;
Node *from;
Pairheap *p;
};
extern Node *node;
struct Attack{
char *name;
int dmg;
int range;
int cool;
};
enum{
PFterrain = 0,
PFidle = 1<<0,
PFmove = 2<<0,
PFshadow = 1<<15,
};
struct Pic{
u32int *p;
int w;
int h;
int dx;
int dy;
};
struct Pics{
Pic **p;
Pic **shadow;
int nf;
};
enum{
Fbio = 1<<0,
Fmech = 1<<1,
Fair = 1<<2,
Fbuild = 1<<3,
};
struct Obj{
char *name;
Pics pidle;
Pics pmove;
int nr;
int w;
int h;
int f;
Attack *atk[2];
int hp;
int def;
int speed;
int vis;
int cost[Nresource];
int time;
Obj **spawn;
int nspawn;
};
struct Path{
Point target;
int goalblocked;
int npatherr;
int npathbuf;
Point *paths;
Point *pathp;
Point *pathe;
};
struct Mobj{
Obj *o;
Pics *pics;
int θ;
Point;
int px;
int py;
int subpx;
int subpy;
Path;
int Δθ;
double u;
double v;
double speed;
Mobjl *movingp;
Mobjl *mapp;
int f;
int team;
int hp;
int xp;
};
struct Mobjl{
Mobj *mo;
Mobjl *l;
Mobjl *lp;
};
struct Terrain{
Pic *p;
};
extern Terrain **terrain;
extern terwidth, terheight;
struct Map{
Mobjl ml;
};
extern Map *map;
extern int mapwidth, mapheight;
struct Resource{
char *name;
int init;
};
extern Resource resource[Nresource];
struct Team{
int r[Nresource];
int nunit;
int nbuild;
};
extern Team team[Nteam], *curteam;
extern int nteam;
extern int lport;
extern char *netmtpt;
extern int scale;
enum{
Tquit,
};
extern char *progname, *prefix, *dbname, *mapname;
extern int clon;
extern vlong tc;
extern int pause, debugmap;
extern int debug;