ref: b079d708225b49908129e3ea54d1bb80c004b25f
dir: /dat.h/
typedef struct Wall Wall; typedef struct Pic Pic; typedef struct Sprite Sprite; typedef struct Map Map; typedef struct Node Node; typedef struct Line Line; extern char *prefix; enum{ Vw = 320, Vfullh = 210, Vdrwh = Vfullh - 60 - 2, /* FIXME: ? */ Vh = Vdrwh + 40, Vcenterx = Vw / 2, Vcentery = Vh / 2, Vfntw = 7, Vfnth = 12, Vfntspc = 1, Vfntpicw = Vfntspc+Vfntw+Vfntspc, Npalcol = 16, Wallsz = 64, Wtexelsz = Wallsz / 2, Kfire = 0, K↑, K↓, K←, K→, }; enum{ BScontinue = 114, BSgameloaded, BSmore, BSintro1 = 256, BSintro2, BSintro3, BSend = 270, }; extern char **basestr; extern int npal; extern u32int *pal; struct Wall{ u32int p[Wallsz*Wallsz]; }; extern Wall *walls; extern int nwalls; enum{ PCarrow, PCspace, PCgrid, PCplanets, PCship, PChud, PCface, PCammo, PChit, PCdir, PCcur, PCscroll, PCgibs, PCend, }; struct Pic{ u32int *p; int w; int h; }; extern Pic pics[PCend], canvas; extern nfontmap; extern uchar *fontmap; extern int nglyph; extern Pic *dfont; struct Sprite{ Pic; Rectangle r; }; extern Sprite *sprites; extern int nsprites; enum{ DShip = 0xffbb0000, DHud1 = 0xff313131, DHud2 = 0xff808591, DFace = 0xff323232, DAmmo = 0xff828282, }; struct Node{ int type; Rectangle; int split; int left; int right; }; enum{ LFwall = 0<<0, LFdoor = 1<<0 | 1<<2, LFshiftS⋁E = 1<<3, LFshiftN∨W = 1<<4, LFsecret = 1<<5, LFyshift = 1<<8, LFxshift = 1<<9, LFlock = 1<<10, LFwallS = 1<<11, LFwallN = 1<<12, LFwallW = 1<<13, LFwallE = 1<<14, LFmirrored = 1<<15, Fineshift = 3, }; struct Line{ int flags; int tex; int unkn1; Rectangle; int minpshift; int maxpshift; }; struct Map{ int id; int nnodes; Node *nodes; int nlines; Line *lines; u32int ceilc; u32int floorc; u32int backc; int unkn1; int unkn2; }; extern Map map; extern void (*step)(void); extern void (*input)(Rune); extern vlong tc;