From 052767a29dd52a0fa82e2d88170de17f2d380ee5 Mon Sep 17 00:00:00 2001 From: terminx Date: Sat, 22 Nov 2008 06:53:45 +0000 Subject: [PATCH] git-svn-id: https://svn.eduke32.com/eduke32@1147 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/source/swmacros.h | 183 ++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 polymer/eduke32/source/swmacros.h diff --git a/polymer/eduke32/source/swmacros.h b/polymer/eduke32/source/swmacros.h new file mode 100644 index 000000000..54e73850b --- /dev/null +++ b/polymer/eduke32/source/swmacros.h @@ -0,0 +1,183 @@ +// Macros, some from SW source + +#define TRAVERSE_SPRITE_SECT(l, o, n) for ((o) = (l); (n) = nextspritesect[o], (o) != -1; (o) = (n)) +#define TRAVERSE_SPRITE_STAT(l, o, n) for ((o) = (l); (n) = nextspritestat[o], (o) != -1; (o) = (n)) +#define TRAVERSE_CONNECT(i) for (i = connecthead; i != -1; i = connectpoint2[i]) + +#define TEST(flags,mask) ((flags) & (mask)) +#define SET(flags,mask) ((flags) |= (mask)) +#define RESET(flags,mask) ((flags) &= ~(mask)) +#define FLIP(flags,mask) ((flags) ^= (mask)) + +// mask definitions + +#define BIT(shift) (1<<(shift)) + +#define TEST_SYNC_KEY(bits, sync_num) TEST(bits, BIT(sync_num)) + +#define IFWITHIN(B,E) if((PN)>=(B) && (PN)<=(E)) +#define IFMOVING if(A_SetSprite(i,CLIPMASK0)) +#define IFHIT j=A_IncurDamage(i);if(j >= 0) +#define AFLAMABLE(X) (X==BOX||X==TREE1||X==TREE2||X==TIRE||X==CONE) +#define rnd(X) ((krand()>>8)>=(255-(X))) + +#define clamp(in, min, max) ((in) <= (min) ? (min) : (in) >= (max) ? (max) : (in)) + +// +// NETWORK - REDEFINABLE SHARED (SYNC) KEYS BIT POSITIONS +// + +#define SK_JUMP 0 +#define SK_CROUCH 1 +#define SK_FIRE 2 +#define SK_AIM_UP 3 +#define SK_AIM_DOWN 4 +#define SK_RUN 5 +#define SK_LOOK_LEFT 6 +#define SK_LOOK_RIGHT 7 +// weapons take up 4 bits... +#define SK_WEAPON_BITS 8 +#define SK_WEAPON_BITS1 9 +#define SK_WEAPON_BITS2 10 +#define SK_WEAPON_BITS3 11 +#define SK_STEROIDS 12 +#define SK_LOOK_UP 13 +#define SK_LOOK_DOWN 14 +#define SK_NIGHTVISION 15 +#define SK_MEDKIT 16 +#define SK_MULTIFLAG 17 +#define SK_CENTER_VIEW 18 +#define SK_HOLSTER 19 +#define SK_INV_LEFT 20 +#define SK_PAUSE 21 +#define SK_QUICK_KICK 22 +#define SK_AIMMODE 23 +#define SK_HOLODUKE 24 +#define SK_JETPACK 25 +#define SK_GAMEQUIT 26 +#define SK_INV_RIGHT 27 +#define SK_TURNAROUND 28 +#define SK_OPEN 29 +#define SK_INVENTORY 30 +#define SK_ESCAPE 31 + +// rotatesprite flags +#define ROTATE_SPRITE_TRANSLUCENT (BIT(0)) +#define ROTATE_SPRITE_VIEW_CLIP (BIT(1)) // clip to view +#define ROTATE_SPRITE_YFLIP (BIT(2)) +#define ROTATE_SPRITE_IGNORE_START_MOST (BIT(3)) // don't clip to startumost +#define ROTATE_SPRITE_SCREEN_CLIP (BIT(1)|BIT(3)) // use window +#define ROTATE_SPRITE_CORNER (BIT(4)) // place sprite from upper left corner +#define ROTATE_SPRITE_TRANS_FLIP (BIT(5)) +#define ROTATE_SPRITE_NON_MASK (BIT(6)) // non masked sprites +#define ROTATE_SPRITE_ALL_PAGES (BIT(7)) // copies to all pages + +#define RS_SCALE BIT(16) + +// system defines for status bits +#define CEILING_STAT_PLAX BIT(0) +#define CEILING_STAT_SLOPE BIT(1) +#define CEILING_STAT_SWAPXY BIT(2) +#define CEILING_STAT_SMOOSH BIT(3) +#define CEILING_STAT_XFLIP BIT(4) +#define CEILING_STAT_YFLIP BIT(5) +#define CEILING_STAT_RELATIVE BIT(6) +#define CEILING_STAT_TYPE_MASK (BIT(7)|BIT(8)) +#define CEILING_STAT_MASKED BIT(7) +#define CEILING_STAT_TRANS BIT(8) +#define CEILING_STAT_TRANS_FLIP (BIT(7)|BIT(8)) +#define CEILING_STAT_FAF_BLOCK_HITSCAN BIT(15) + +#define FLOOR_STAT_PLAX BIT(0) +#define FLOOR_STAT_SLOPE BIT(1) +#define FLOOR_STAT_SWAPXY BIT(2) +#define FLOOR_STAT_SMOOSH BIT(3) +#define FLOOR_STAT_XFLIP BIT(4) +#define FLOOR_STAT_YFLIP BIT(5) +#define FLOOR_STAT_RELATIVE BIT(6) +#define FLOOR_STAT_TYPE_MASK (BIT(7)|BIT(8)) +#define FLOOR_STAT_MASKED BIT(7) +#define FLOOR_STAT_TRANS BIT(8) +#define FLOOR_STAT_TRANS_FLIP (BIT(7)|BIT(8)) +#define FLOOR_STAT_FAF_BLOCK_HITSCAN BIT(15) + +#define CSTAT_WALL_BLOCK BIT(0) +#define CSTAT_WALL_BOTTOM_SWAP BIT(1) +#define CSTAT_WALL_ALIGN_BOTTOM BIT(2) +#define CSTAT_WALL_XFLIP BIT(3) +#define CSTAT_WALL_MASKED BIT(4) +#define CSTAT_WALL_1WAY BIT(5) +#define CSTAT_WALL_BLOCK_HITSCAN BIT(6) +#define CSTAT_WALL_TRANSLUCENT BIT(7) +#define CSTAT_WALL_YFLIP BIT(8) +#define CSTAT_WALL_TRANS_FLIP BIT(9) +#define CSTAT_WALL_BLOCK_ACTOR (BIT(14)) // my def +#define CSTAT_WALL_WARP_HITSCAN (BIT(15)) // my def + +//cstat, bit 0: 1 = Blocking sprite (use with clipmove, getzrange) "B" +// bit 1: 1 = 50/50 transluscence, 0 = normal "T" +// bit 2: 1 = x-flipped, 0 = normal "F" +// bit 3: 1 = y-flipped, 0 = normal "F" +// bits 5-4: 00 = FACE sprite (default) "R" +// 01 = WALL sprite (like masked walls) +// 10 = FLOOR sprite (parallel to ceilings&floors) +// 11 = SPIN sprite (face sprite that can spin 2draw style - not done yet) +// bit 6: 1 = 1-sided sprite, 0 = normal "1" +// bit 7: 1 = Real centered centering, 0 = foot center "C" +// bit 8: 1 = Blocking sprite (use with hitscan) "H" +// bit 9: reserved +// bit 10: reserved +// bit 11: reserved +// bit 12: reserved +// bit 13: reserved +// bit 14: reserved +// bit 15: 1 = Invisible sprite, 0 = not invisible + +#define CSTAT_SPRITE_BLOCK BIT(0) +#define CSTAT_SPRITE_TRANSLUCENT BIT(1) +#define CSTAT_SPRITE_XFLIP BIT(2) +#define CSTAT_SPRITE_YFLIP BIT(3) +#define CSTAT_SPRITE_WALL BIT(4) +#define CSTAT_SPRITE_FLOOR BIT(5) +#define CSTAT_SPRITE_SLAB (BIT(4)|BIT(5)) +#define CSTAT_SPRITE_ONE_SIDE BIT(6) +#define CSTAT_SPRITE_YCENTER BIT(7) +#define CSTAT_SPRITE_BLOCK_HITSCAN BIT(8) +#define CSTAT_SPRITE_TRANS_FLIP BIT(9) + +#define CSTAT_SPRITE_INVISIBLE BIT(15) + +#define CSTAT_SPRITE_BREAKABLE (CSTAT_SPRITE_BLOCK_HITSCAN) + +#define SP sprite[i].yvel +#define SX sprite[i].x +#define SY sprite[i].y +#define SZ sprite[i].z +#define SS sprite[i].shade +#define PN sprite[i].picnum +#define SA sprite[i].ang +#define SV sprite[i].xvel +#define ZV sprite[i].zvel +#define RX sprite[i].xrepeat +#define RY sprite[i].yrepeat +#define OW sprite[i].owner +#define CS sprite[i].cstat +#define SH sprite[i].extra +#define CX sprite[i].xoffset +#define CY sprite[i].yoffset +#define CD sprite[i].clipdist +#define PL sprite[i].pal +#define SLT sprite[i].lotag +#define SHT sprite[i].hitag +#define SECT sprite[i].sectnum + +#define T1 ActorExtra[i].temp_data[0] +#define T2 ActorExtra[i].temp_data[1] +#define T3 ActorExtra[i].temp_data[2] +#define T4 ActorExtra[i].temp_data[3] +#define T5 ActorExtra[i].temp_data[4] +#define T6 ActorExtra[i].temp_data[5] +#define T7 ActorExtra[i].temp_data[6] +#define T8 ActorExtra[i].temp_data[7] +#define T9 ActorExtra[i].temp_data[8] +