AActor *COPY_AAPTR(AActor *origin, int selector) { if (selector == AAPTR_DEFAULT) return origin; FTranslatedLineTarget t; if (origin) { if (origin->player) { switch (selector & AAPTR_PLAYER_SELECTORS) { case AAPTR_PLAYER_GETTARGET: P_BulletSlope(origin, &t, ALF_PORTALRESTRICT); return t.linetarget; case AAPTR_PLAYER_GETCONVERSATION: return origin->player->ConversationNPC; } } switch (selector & AAPTR_GENERAL_SELECTORS) { case AAPTR_TARGET: return origin->target; case AAPTR_MASTER: return origin->master; case AAPTR_TRACER: return origin->tracer; case AAPTR_FRIENDPLAYER: return origin->FriendPlayer ? AAPTR_RESOLVE_PLAYERNUM(origin->FriendPlayer - 1) : NULL; case AAPTR_GET_LINETARGET: P_BulletSlope(origin, &t, ALF_PORTALRESTRICT); return t.linetarget; } } switch (selector & AAPTR_STATIC_SELECTORS) { case AAPTR_PLAYER1: return AAPTR_RESOLVE_PLAYERNUM(0); case AAPTR_PLAYER2: return AAPTR_RESOLVE_PLAYERNUM(1); case AAPTR_PLAYER3: return AAPTR_RESOLVE_PLAYERNUM(2); case AAPTR_PLAYER4: return AAPTR_RESOLVE_PLAYERNUM(3); case AAPTR_PLAYER5: return AAPTR_RESOLVE_PLAYERNUM(4); case AAPTR_PLAYER6: return AAPTR_RESOLVE_PLAYERNUM(5); case AAPTR_PLAYER7: return AAPTR_RESOLVE_PLAYERNUM(6); case AAPTR_PLAYER8: return AAPTR_RESOLVE_PLAYERNUM(7); case AAPTR_NULL: return NULL; } return origin; }
AActor *COPY_AAPTR(AActor *origin, int selector) { if (origin) { if (origin->player) { switch (selector & AAPTR_PLAYER_SELECTORS) { case AAPTR_PLAYER_GETTARGET: { AActor *gettarget = NULL; P_BulletSlope(origin, &gettarget); return gettarget; } case AAPTR_PLAYER_GETCONVERSATION: return origin->player->ConversationNPC; } } switch (selector & AAPTR_GENERAL_SELECTORS) { case AAPTR_TARGET: return origin->target; case AAPTR_MASTER: return origin->master; case AAPTR_TRACER: return origin->tracer; case AAPTR_FRIENDPLAYER: return origin->FriendPlayer ? AAPTR_RESOLVE_PLAYERNUM(origin->FriendPlayer - 1) : NULL; } } switch (selector & AAPTR_STATIC_SELECTORS) { case AAPTR_PLAYER1: return AAPTR_RESOLVE_PLAYERNUM(0); case AAPTR_PLAYER2: return AAPTR_RESOLVE_PLAYERNUM(1); case AAPTR_PLAYER3: return AAPTR_RESOLVE_PLAYERNUM(2); case AAPTR_PLAYER4: return AAPTR_RESOLVE_PLAYERNUM(3); case AAPTR_PLAYER5: return AAPTR_RESOLVE_PLAYERNUM(4); case AAPTR_PLAYER6: return AAPTR_RESOLVE_PLAYERNUM(5); case AAPTR_PLAYER7: return AAPTR_RESOLVE_PLAYERNUM(6); case AAPTR_PLAYER8: return AAPTR_RESOLVE_PLAYERNUM(7); case AAPTR_NULL: return NULL; } return origin; }