1 /** 2 * @file 3 */ 4 5 /* 6 Copyright (C) 2002-2013 UFO: Alien Invasion. 7 8 This program is free software; you can redistribute it and/or 9 modify it under the terms of the GNU General Public License 10 as published by the Free Software Foundation; either version 2 11 of the License, or (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 17 See the GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program; if not, write to the Free Software 21 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 22 23 */ 24 25 #pragma once 26 27 #include "g_local.h" 28 29 #define G_IsState(ent, s) ((ent)->state & (s)) 30 #define G_IsShaken(ent) G_IsState(ent, STATE_SHAKEN) 31 #define G_IsStunned(ent) (G_IsState(ent, STATE_STUN) & ~STATE_DEAD) 32 #define G_IsPanicked(ent) G_IsState(ent, STATE_PANIC) 33 #define G_IsReaction(ent) G_IsState(ent, STATE_REACTION) 34 #define G_IsRaged(ent) G_IsState(ent, STATE_RAGE) 35 #define G_IsInsane(ent) (G_IsState(ent, STATE_INSANE) & ~STATE_RAGE) 36 #define G_IsDazed(ent) G_IsState(ent, STATE_DAZED) 37 #define G_IsCrouched(ent) G_IsState(ent, STATE_CROUCHED) 38 /** @note This check also includes the IsStunned check - see the STATE_* bitmasks */ 39 #define G_IsDead(ent) G_IsState(ent, STATE_DEAD) 40 41 #define G_SetState(ent, s) (ent)->state |= (s) 42 #define G_SetShaken(ent) G_SetState((ent), STATE_SHAKEN) 43 #define G_SetDazed(ent) G_SetState((ent), STATE_DAZED) 44 #define G_SetStunned(ent) G_SetState((ent), STATE_STUN) 45 #define G_SetDead(ent) G_SetState((ent), STATE_DEAD) 46 #define G_SetInsane(ent) G_SetState((ent), STATE_INSANE) 47 #define G_SetRage(ent) G_SetState((ent), STATE_RAGE) 48 #define G_SetPanic(ent) G_SetState((ent), STATE_PANIC) 49 #define G_SetCrouched(ent) G_SetState((ent), STATE_CROUCHED) 50 51 #define G_RemoveState(ent, s) (ent)->state &= ~(s) 52 #define G_RemoveShaken(ent) G_RemoveState((ent), STATE_SHAKEN) 53 #define G_RemoveDazed(ent) G_RemoveState((ent), STATE_DAZED) 54 #define G_RemoveStunned(ent) G_RemoveState((ent), STATE_STUN) 55 #define G_RemoveDead(ent) G_RemoveState((ent), STATE_DEAD) 56 #define G_RemoveInsane(ent) G_RemoveState((ent), STATE_INSANE) 57 #define G_RemoveRage(ent) G_RemoveState((ent), STATE_RAGE) 58 #define G_RemovePanic(ent) G_RemoveState((ent), STATE_PANIC) 59 #define G_RemoveCrouched(ent) G_RemoveState((ent), STATE_CROUCHED) 60 #define G_RemoveReaction(ent) G_RemoveState((ent), STATE_REACTION) 61 62 #define G_ToggleState(ent, s) (ent)->state ^= (s) 63 #define G_ToggleCrouched(ent) G_ToggleState(ent, STATE_CROUCHED) 64 65 bool G_IsLivingActor(const Edict* ent) __attribute__((nonnull)); 66 void G_ActorUseDoor(Edict* actor, Edict* door); 67 bool G_ActorIsInRescueZone(const Edict* actor); 68 void G_ActorSetInRescueZone(Edict* actor, bool inRescueZone); 69 void G_ActorSetClientAction(Edict* actor, Edict* ent); 70 int G_ActorGetReservedTUs(const Edict* ent); 71 int G_ActorUsableTUs(const Edict* ent); 72 int G_ActorGetTUForReactionFire(const Edict* ent); 73 void G_ActorReserveTUs(Edict* ent, int resReaction, int resShot, int resCrouch); 74 int G_ActorDoTurn(Edict* ent, byte dir); 75 void G_ActorSetMaxs(Edict* ent); 76 int G_ActorCalculateMaxTU(const Edict* ent); 77 void G_ActorGiveTimeUnits(Edict* ent); 78 void G_ActorSetTU(Edict* ent, int tus); 79 void G_ActorUseTU(Edict* ent, int tus); 80 void G_ActorModifyCounters(const Edict* attacker, const Edict* victim, int deltaAlive, int deltaKills, int deltaStuns); 81 void G_ActorGetEyeVector(const Edict* actor, vec3_t eye); 82 void G_ActorCheckRevitalise(Edict* ent); 83 bool G_ActorDieOrStun(Edict* ent, Edict* attacker); 84 int G_ActorGetContentFlags(const vec3_t origin); 85 bool G_ActorInvMove(Edict* ent, const invDef_t* from, Item* fItem, const invDef_t* to, int tx, int ty, bool checkaction); 86 void G_ActorReload(Edict* ent, const invDef_t* invDef); 87 int G_ActorGetModifiedTimeForFiredef(const Edict* ent, const fireDef_t* const fd, bool reaction); 88