cl_actor.c File Reference

Actor related routines. More...

#include "../client.h"
#include "cl_actor.h"
#include "../cl_game.h"
#include "cl_hud.h"
#include "cl_parse.h"
#include "cl_particle.h"
#include "../cl_team.h"
#include "cl_view.h"
#include "../ui/ui_main.h"
#include "../ui/ui_popup.h"
#include "../ui/node/ui_node_container.h"
#include "../renderer/r_entity.h"
#include "../renderer/r_mesh_anim.h"
#include "../sound/s_main.h"
#include "../../common/routing.h"
#include "../../common/grid.h"
Include dependency graph for cl_actor.c:

Go to the source code of this file.

Defines

#define GRENADE_PARTITIONS   20
#define BoxSize(i, source, target)   (target[0]=i*source[0]+((i-1)*UNIT_SIZE),target[1]=i*source[1]+((i-1)*UNIT_SIZE),target[2]=source[2])
#define BoxOffset(i, target)   (target[0]=(i-1)*(UNIT_SIZE+BOX_DELTA_WIDTH), target[1]=(i-1)*(UNIT_SIZE+BOX_DELTA_LENGTH), target[2]=0)

Functions

void MSG_Write_PA (player_action_t playerAction, int entnum,...)
 Writes player action with its data.
const char * CL_ActorGetSkillString (const int skill)
 Return the skill string for the given skill level.
void CL_ActorSetFireDef (le_t *actor, const fireDef_t *fd)
int CL_ActorMoveMode (const le_t *le, int length)
 Decide how the actor will walk, taking into account autostanding.
static int CL_ActorGetNumber (const le_t *le)
 Returns the number of the actor in the teamlist.
character_tCL_ActorGetChr (const le_t *le)
 Returns the character information for an actor in the teamlist.
void CL_ActorSetRFMode (character_t *chr, actorHands_t hand, int fireModeIndex, const objDef_t *weapon)
 Sets reactionfire firemode for given actor.
void CL_ActorSetShotSettings (character_t *chr, actorHands_t hand, int fireModeIndex, const objDef_t *weapon)
 Sets shoot firemode for given actor.
int CL_ActorReservedTUs (const le_t *le, const reservation_types_t type)
 Returns the amount of reserved TUs for a certain type.
int CL_ActorUsableTUs (const le_t *le)
 Returns the amount of usable (overall-reserved) TUs for an actor.
void CL_ActorReserveTUs (const le_t *le, const reservation_types_t type, const int tus)
 Replace the reserved TUs for a certain type.
void CL_ActorAddToTeamList (le_t *le)
 Adds the actor to the team list.
void CL_ActorCleanup (le_t *le)
void CL_ActorRemoveFromTeamList (le_t *le)
 Removes an actor (from your team) from the team list.
qboolean CL_ActorSelect (le_t *le)
 Selects an actor.
qboolean CL_ActorSelectList (int num)
 Selects an actor from a list.
qboolean CL_ActorSelectNext (void)
 selects the next actor
static void CL_BuildForbiddenList (void)
 Builds a list of locations that cannot be moved to (client side).
void CL_ActorConditionalMoveCalc (le_t *le)
 Recalculate forbidden list, available moves and actor's move length for the current selected actor.
int CL_ActorCheckAction (const le_t *le)
 Checks that an action is valid.
static byte CL_ActorMoveLength (const le_t *le, const pos3_t to)
 Get the real move length (depends on crouch-state of the current actor).
void CL_ActorResetMoveLength (le_t *le)
 Recalculates the currently selected Actor's move length.
static qboolean CL_ActorTraceMove (const pos3_t to)
 Draws the way to walk when confirm actions is activated.
static void CL_ActorMaximumMove (const pos3_t to, const le_t *le, pos3_t pos)
 Return the last position we can walk to with a defined amount of TUs.
void CL_ActorSetMode (le_t *actor, actorModes_t actorMode)
void CL_ActorStartMove (le_t *le, const pos3_t to)
 Starts moving actor.
void CL_ActorShoot (const le_t *le, const pos3_t at)
 Shoot with actor.
int CL_ActorGetContainerForReload (invList_t **invList, const inventory_t *inv, const objDef_t *weapon)
 Searches the clip with the least TU usage to put it into the weapon.
void CL_ActorReload (le_t *le, containerIndex_t containerID)
 Reload weapon with actor.
void CL_ActorInvMove (const le_t *le, containerIndex_t fromContainer, int fromX, int fromY, containerIndex_t toContainer, int toX, int toY)
static void CL_ActorUseDoor (const le_t *le)
 Opens a door.
void CL_ActorDoorAction_f (void)
 Hud callback to open/close a door.
qboolean CL_ActorFireModeActivated (const actorModes_t mode)
 Checks whether we are in fire mode or node.
void CL_ActorTurnMouse (void)
 Turns the actor around without moving.
static void CL_ActorStandCrouch_f (void)
 Stands or crouches actor.
static void CL_ActorUseHeadgear_f (void)
 Toggles the headgear for the current selected player.
static void CL_ActorMoveMouse (void)
 handle select or action clicking in either move mode
void CL_ActorSelectMouse (void)
 Selects an actor using the mouse.
void CL_ActorActionMouse (void)
 initiates action with mouse.
static le_tCL_ActorSearchAtGridPos (const pos3_t pos, qboolean includingStunned)
 Searches an actor at the given position.
qboolean CL_ActorMouseTrace (void)
 Battlescape cursor positioning.
static qboolean CL_AddActorWeapon (int objID)
 Checks whether a weapon should be added to the entity's hand.
qboolean CL_AddActor (le_t *le, entity_t *ent)
 Adds an actor to the render entities with all it's models and items.
static void CL_TargetingRadius (const vec3_t center, const float radius)
 Show weapon radius.
static void CL_TargetingStraight (const pos3_t fromPos, actorSizeEnum_t fromActorSize, const pos3_t toPos)
 Draws line to target.
static void CL_TargetingGrenade (const pos3_t fromPos, actorSizeEnum_t fromActorSize, const pos3_t toPos)
 Shows targeting for a grenade.
static void CL_AddTargetingBox (pos3_t pos, qboolean pendBox)
 create a targeting box at the given position
void CL_ActorTargetAlign_f (void)
 Targets to the ground when holding the assigned button.
void CL_AddTargeting (void)
 Adds a target cursor when we render the world.
static void CL_AddPathingBox (pos3_t pos)
 create a targeting box at the given position
void CL_AddPathing (void)
 Adds a pathing marker to the current floor when we render the world.
void CL_ActorPlaySound (const le_t *le, actorSound_t soundType)
 Plays various sounds on actor action.
static void CL_AddArrow (vec3_t from, vec3_t to, float red, float green, float blue)
 create an arrow between from and to with the specified color ratios
void CL_DisplayFloorArrows (void)
 Useful for debugging pathfinding.
void CL_DisplayObstructionArrows (void)
 Useful for debugging pathfinding.
static void CL_ActorNext_f (void)
 Switch to the next living soldier.
static void CL_ActorEquipmentSelect_f (void)
static void CL_ActorSelect_f (void)
 Selects a soldier while we are on battlescape.
static void CL_ActorUpdate_f (void)
 Update the skin of the current soldier.
static qboolean CL_ActorVis (const le_t *le, const le_t *check)
static void CL_NextAlienVisibleFromActor_f (void)
 Cycles between visible (to selected actor) aliens.
static void CL_NextAlien_f (void)
 Cycles between visible aliens.
static void CL_ActorConfirmAction (le_t *le)
static void CL_ActorConfirmAction_f (void)
 Executes "pending" actions such as walking and firing.
void ACTOR_InitStartup (void)

Variables

static cvar_tconfirm_actions
 Confirm actions in tactical mode - valid values are 0, 1 and 2.
static cvar_tcl_autostand
 Player preference: should the server make guys stand for long walks, to save TU.
static cvar_tcl_showactors
static cvar_tcl_reactionleftover
le_tselActor
pos3_t truePos
pos3_t mousePos
static int mousePosTargettingAlign = 0
 If you want to change the z level of targeting and shooting, use this value. Negative and positive offsets are possible.
static le_tmouseActor
static pos3_t mouseLastPos
static pos_tforbiddenList [MAX_FORBIDDENLIST]
 A list of locations that cannot be moved to.
static int forbiddenListLength
 Current length of fb_list.
static const vec3_t boxSize = { BOX_DELTA_WIDTH, BOX_DELTA_LENGTH, BOX_DELTA_HEIGHT }
 field marker box
static const vec3_t boxShift = { PLAYER_WIDTH, PLAYER_WIDTH, UNIT_HEIGHT / 2 - DIST_EPSILON }

Detailed Description

Actor related routines.

Definition in file cl_actor.c.


Define Documentation

#define BoxOffset ( i,
target   )     (target[0]=(i-1)*(UNIT_SIZE+BOX_DELTA_WIDTH), target[1]=(i-1)*(UNIT_SIZE+BOX_DELTA_LENGTH), target[2]=0)

Definition at line 1698 of file cl_actor.c.

Referenced by CL_AddTargetingBox().

#define BoxSize ( i,
source,
target   )     (target[0]=i*source[0]+((i-1)*UNIT_SIZE),target[1]=i*source[1]+((i-1)*UNIT_SIZE),target[2]=source[2])

Definition at line 1697 of file cl_actor.c.

Referenced by CL_AddTargetingBox().

#define GRENADE_PARTITIONS   20

Definition at line 1599 of file cl_actor.c.

Referenced by CL_TargetingGrenade().


Function Documentation

void ACTOR_InitStartup ( void   ) 
void CL_ActorActionMouse ( void   ) 

initiates action with mouse.

See also:
CL_ActionDown
CL_ActorStartMove

Definition at line 1187 of file cl_actor.c.

References le_s::actorMode, CL_ActorFireModeActivated(), CL_ActorMoveMouse(), CL_ActorSetMode(), M_MOVE, mouseSpace, and MS_WORLD.

Referenced by CL_ActionDown_f(), and CL_ActorTurnMouse().

void CL_ActorAddToTeamList ( le_t le  ) 

Adds the actor to the team list.

See also:
CL_ActorAppear
CL_ActorRemoveFromTeamList
Parameters:
le Pointer to local entity struct

Definition at line 329 of file cl_actor.c.

References cl, CL_ActorGetNumber(), CL_ActorSelectList(), cl_genericPool, cls, Com_Printf(), LE_IsDead, lengthof, Mem_PoolAlloc, le_s::pathMap, le_s::pnum, client_static_s::team, le_s::team, and UI_ExecuteConfunc().

Referenced by CL_ActorAppear(), and CL_ActorRevitalised().

int CL_ActorCheckAction ( const le_t le  ) 

Checks that an action is valid.

Parameters:
[in] le Pointer to actor for which we check an action.
Returns:
qtrue if action is valid.

Definition at line 654 of file cl_actor.c.

References _, cl, cls, HUD_DisplayMessage(), le_s::pathLength, qfalse, qtrue, and client_static_s::team.

Referenced by CL_ActorDoorAction_f(), CL_ActorReload(), CL_ActorShoot(), CL_ActorStandCrouch_f(), CL_ActorStartMove(), CL_ActorTurnMouse(), CL_ActorUseDoor(), CL_ActorUseHeadgear_f(), HUD_ToggleCrouchReservation_f(), and HUD_ToggleReaction_f().

void CL_ActorCleanup ( le_t le  ) 
void CL_ActorConditionalMoveCalc ( le_t le  ) 

Recalculate forbidden list, available moves and actor's move length for the current selected actor.

Note:
An attempt to do this with le->TU to save time ended up with the first actor not being able to move at gamestart.
Todo:
seems like this function is called *before* the TUs are set

Definition at line 639 of file cl_actor.c.

References byte, cl, CL_ActorResetMoveLength(), CL_BuildForbiddenList(), le_s::fieldSize, forbiddenList, forbiddenListLength, Grid_MoveCalc(), LE_IsCrouched, MAX_ROUTE, le_s::pathMap, le_s::pos, and le_s::selected.

Referenced by CL_ActorAppear(), CL_ActorDie(), CL_ActorRevitalised(), CL_ActorSelect(), CL_ActorStateChange(), CL_DoEndRound(), CL_RecalcRouting(), and LE_DoEndPathMove().

static void CL_ActorConfirmAction ( le_t le  )  [static]

Performs pending actions for the given actor

Parameters:
le The actor that should perform the pending actions

Definition at line 2338 of file cl_actor.c.

References le_s::actorMode, cl, CL_ActorShoot(), CL_ActorStartMove(), M_PEND_FIRE_L, M_PEND_FIRE_R, M_PEND_MOVE, le_s::mousePendPos, le_s::pnum, and le_s::team.

Referenced by CL_ActorConfirmAction_f().

static void CL_ActorConfirmAction_f ( void   )  [static]

Executes "pending" actions such as walking and firing.

Note:
Manually triggered by the player when hitting the "confirm" button.
When triggering this twice in 1000ms all pending actions are performed, otherwise only the current selected actor is handled.

Definition at line 2366 of file cl_actor.c.

References cl, CL_ActorConfirmAction(), cls, LE_GetNextInUse(), LE_IsLivingActor(), LE_IsStunned, client_static_s::team, and le_s::team.

Referenced by ACTOR_InitStartup().

void CL_ActorDoorAction_f ( void   ) 

Hud callback to open/close a door.

Definition at line 969 of file cl_actor.c.

References CL_ActorCheckAction(), CL_ActorUsableTUs(), CL_ActorUseDoor(), le_s::clientAction, Com_DPrintf(), DEBUG_CLIENT, le_s::entnum, and TU_DOOR_ACTION.

Referenced by ACTOR_InitStartup().

static void CL_ActorEquipmentSelect_f ( void   )  [static]
qboolean CL_ActorFireModeActivated ( const actorModes_t  mode  ) 

Checks whether we are in fire mode or node.

Parameters:
mode The actor mode
Returns:
true if we are in fire mode, false otherwise

Definition at line 990 of file cl_actor.c.

References IS_MODE_FIRE_HEADGEAR, IS_MODE_FIRE_LEFT, and IS_MODE_FIRE_RIGHT.

Referenced by CL_ActorActionMouse(), CL_ActorTargetAlign_f(), CL_ActorTurnMouse(), and HUD_UpdateActor().

character_t* CL_ActorGetChr ( const le_t le  ) 

Returns the character information for an actor in the teamlist.

Parameters:
[in] le The actor to search.
Returns:
A pointer to a character struct.
Todo:
We really needs a better way to sync this up.

Definition at line 186 of file cl_actor.c.

References cl, CL_ActorGetNumber(), Com_DPrintf(), DEBUG_CLIENT, and le_s::state.

Referenced by CL_ActorDie(), CL_ActorReactionFireChange(), CL_ActorReservationChange(), CL_ActorReservedTUs(), CL_ActorReserveTUs(), CL_ActorRevitalised(), CL_ActorSelect(), CL_ActorStateChange(), CL_AddTargetingBox(), CL_GetHitProbability(), HUD_ActorGetCvarData_f(), HUD_DisplayFiremodeEntry(), HUD_DisplayFiremodes(), HUD_PopupFiremodeReservation(), HUD_SetShootReservation(), and HUD_UpdateAllActors().

int CL_ActorGetContainerForReload ( invList_t **  invList,
const inventory_t inv,
const objDef_t weapon 
)

Searches the clip with the least TU usage to put it into the weapon.

Parameters:
invList The inventory list that can be used outside of this function for the found ammo
inv The inventory to do the search in
weapon The weapon to reload
Returns:
NONE if no container was found, the container id otherwise.

Definition at line 850 of file cl_actor.c.

References inventory_s::c, csi, GAME_ItemIsUseable(), INVDEF, INVSH_LoadableInWeapon(), invList_s::item, invList_s::next, NONE, csi_s::numIDs, and item_s::t.

Referenced by CL_ActorReload(), and HUD_CalcReloadTime().

static int CL_ActorGetNumber ( const le_t le  )  [static]

Returns the number of the actor in the teamlist.

Parameters:
[in] le The actor to search.
Returns:
The number of the actor in the teamlist. Or -1 if the given entity is not in the team list.

Definition at line 167 of file cl_actor.c.

References cl.

Referenced by CL_ActorAddToTeamList(), CL_ActorGetChr(), and CL_ActorSelect().

const char* CL_ActorGetSkillString ( const int  skill  ) 

Return the skill string for the given skill level.

Returns:
skill string
Parameters:
[in] skill a skill value between 0 and MAX_SKILL

Definition at line 96 of file cl_actor.c.

References _, Com_Printf(), and MAX_SKILL.

Referenced by CL_CharacterSkillAndScoreCvars(), and CL_UGVCvars().

void CL_ActorInvMove ( const le_t le,
containerIndex_t  fromContainer,
int  fromX,
int  fromY,
containerIndex_t  toContainer,
int  toX,
int  toY 
)
Parameters:
le The le that is doing the inventory move (an actor)
fromContainer The container to fetch the item from
fromX The x position in the container to get the item from
fromY The y position in the container to get the item from
toContainer The container to store the item in
toX The x position in the container to move the item to
toY The y position in the container to move the item to

Definition at line 942 of file cl_actor.c.

References CL_BattlescapeRunning(), le_s::entnum, LE_IsActor(), MSG_Write_PA(), and PA_INVMOVE.

Referenced by CL_ActorReload(), and UI_ContainerNodeDNDFinished().

static void CL_ActorMaximumMove ( const pos3_t  to,
const le_t le,
pos3_t  pos 
) [static]

Return the last position we can walk to with a defined amount of TUs.

Parameters:
[in] to The location we want to reach.
[in] le Pointer to an actor for which we check maximum move.
[in,out] pos The location we can reach with the given amount of TUs.
See also:
CL_TraceMove (similar algo.)

Definition at line 747 of file cl_actor.c.

References byte, CL_ActorMoveLength(), CL_ActorUsableTUs(), Grid_MoveNext(), LE_IsCrouched, le_s::pathMap, PosSubDV, ROUTING_NOT_REACHABLE, ROUTING_UNREACHABLE, and VectorCopy.

Referenced by CL_ActorStartMove().

qboolean CL_ActorMouseTrace ( void   ) 

Battlescape cursor positioning.

Note:
Sets global var mouseActor to current selected le
See also:
IN_Parse

Todo:
Shouldn't we check the return value of CM_TestLineDM here - maybe we don't have to do the second Grid_Fall call at all and can safe a lot of traces

Definition at line 1249 of file cl_actor.c.

References ACTOR_GET_FIELDSIZE, cl, CL_ActorResetMoveLength(), CL_ActorSearchAtGridPos(), cl_isometric, CL_OutsideMap(), cl_worldlevel, CM_EntTestLineDM(), CURSOR_OFFSET, DotProduct, dbuffer::end, rendererData_t::fieldOfViewX, Grid_Fall(), cvar_s::integer, MAP_SIZE_OFFSET, mouseLastPos, mousePos, mousePosX, mousePosY, PATHFINDING_HEIGHT, PosToVec, qfalse, qtrue, refdef, right, viddef_t::rx, viddef_t::ry, TL_FLAG_ACTORCLIP, truePos, UNIT_HEIGHT, VecToPos, VectorAdd, VectorCompare, VectorCopy, VectorMA(), VectorScale, VectorSet, VectorSubtract, viddef, viddef_t::viewHeight, viddef_t::viewWidth, viddef_t::x, and viddef_t::y.

Referenced by IN_Parse().

static byte CL_ActorMoveLength ( const le_t le,
const pos3_t  to 
) [static]

Get the real move length (depends on crouch-state of the current actor).

Note:
The part of the line that is not reachable in this turn (i.e. not enough
TUs left) will be drawn differently.
Parameters:
[in] to The position in the map to calculate the move-length for.
[in] le Pointer to actor for which we calculate move lenght.
Returns:
The amount of TUs that are needed to walk to the given grid position

Definition at line 679 of file cl_actor.c.

References byte, Grid_MoveLength(), LE_IsCrouched, le_s::pathMap, and qfalse.

Referenced by CL_ActorMaximumMove(), CL_ActorResetMoveLength(), CL_ActorStartMove(), and CL_ActorTraceMove().

int CL_ActorMoveMode ( const le_t le,
int  length 
)

Decide how the actor will walk, taking into account autostanding.

Parameters:
[in] le Pointer to an actor for which we set the moving mode.
[in] length The distance to move: units are TU required assuming actor is standing.

Definition at line 144 of file cl_actor.c.

References cvar_s::integer, LE_IsCrouched, SHOULD_USE_AUTOSTAND, WALKTYPE_AUTOSTAND_BEING_USED, WALKTYPE_AUTOSTAND_BUT_NOT_FAR_ENOUGH, WALKTYPE_CROUCH_WALKING, and WALKTYPE_WALKING.

Referenced by HUD_UpdateActorMove().

static void CL_ActorMoveMouse ( void   )  [static]
static void CL_ActorNext_f ( void   )  [static]

Switch to the next living soldier.

Definition at line 2145 of file cl_actor.c.

References CL_ActorSelectNext(), and CL_BattlescapeRunning().

Referenced by ACTOR_InitStartup().

void CL_ActorPlaySound ( const le_t le,
actorSound_t  soundType 
)

Plays various sounds on actor action.

Parameters:
[in] le The actor
[in] soundType Type of action (among actorSound_t) for which we need a sound.

Definition at line 1989 of file cl_actor.c.

References Com_DPrintf(), Com_GetActorSound(), DEBUG_CLIENT, DEBUG_SOUND, le_s::gender, le_s::origin, S_LoadSample(), S_PlaySample(), SND_VOLUME_DEFAULT, SOUND_ATTN_IDLE, and le_s::teamDef.

Referenced by CL_ActorDie(), LE_AddProjectile(), and LET_Projectile().

void CL_ActorReload ( le_t le,
containerIndex_t  containerID 
)

Reload weapon with actor.

Parameters:
[in,out] le The actor to reload the weapon for
[in] containerID The container to reload
See also:
CL_ActorCheckAction

Definition at line 884 of file cl_actor.c.

References _, inventory_s::c, CL_ActorCheckAction(), CL_ActorGetContainerForReload(), CL_ActorInvMove(), csi, GAME_ItemIsUseable(), objDef_s::holdTwoHanded, HUD_DisplayMessage(), le_s::i, csi_s::idLeft, csi_s::idRight, INVSH_GetFirstShapePosition(), invList_s::item, NONE, objDef_s::reload, item_s::t, invList_s::x, and invList_s::y.

Referenced by HUD_ReloadLeft_f(), and HUD_ReloadRight_f().

void CL_ActorRemoveFromTeamList ( le_t le  ) 

Removes an actor (from your team) from the team list.

See also:
CL_ActorStateChange
CL_ActorAddToTeamList
Parameters:
[in,out] le Pointer to local entity struct of the actor of your team

Todo:
why the heck is that needed? the inventory was already dropped to floor.

Definition at line 374 of file cl_actor.c.

References cl, CL_ActorCleanup(), CL_ActorSelect(), cls, inventoryInterface_s::DestroyInventory, le_s::extension, le_s::headgear, le_s::i, client_static_s::i, i, LE_IsStunned, le_s::left, NONE, le_s::right, le_s::selected, and UI_ExecuteConfunc().

Referenced by CL_ActorDie(), and CL_ActorStateChange().

int CL_ActorReservedTUs ( const le_t le,
const reservation_types_t  type 
)

Returns the amount of reserved TUs for a certain type.

Parameters:
[in] le The actor to check.
[in] type The type to check. Use RES_ALL_ACTIVE to get all reserved TUs that are not "active" (e.g. RF is skipped if disabled). RES_ALL returns ALL of them, no matter what. See reservation_types_t for a list of options.
Returns:
The reserved TUs for the given type.
-1 on error.

Definition at line 233 of file cl_actor.c.

References CL_ActorGetChr(), Com_DPrintf(), chrReservations_s::crouch, DEBUG_CLIENT, chrReservations_s::reaction, RES_ALL, RES_ALL_ACTIVE, RES_CROUCH, RES_REACTION, RES_SHOT, character_s::reservedTus, chrReservations_s::shot, le_s::state, and STATE_REACTION.

Referenced by CL_ActorStandCrouch_f(), CL_ActorStateChange(), CL_ActorUsableTUs(), HUD_CheckFiremodeReservation(), HUD_PopupFiremodeReservation(), HUD_RefreshButtons(), HUD_ShotReserve_f(), HUD_ToggleCrouchReservation_f(), HUD_UpdateActorCvar(), HUD_UpdateActorMove(), and HUD_UsableReactionTUs().

void CL_ActorReserveTUs ( const le_t le,
const reservation_types_t  type,
const int  tus 
)

Replace the reserved TUs for a certain type.

Parameters:
[in] le The actor to change it for.
[in] type The reservation type to be changed (i.e be replaced).
[in] tus How many TUs to set.

Definition at line 295 of file cl_actor.c.

References CL_ActorGetChr(), chrReservations_s::crouch, le_s::entnum, MSG_Write_PA(), PA_RESERVE_STATE, RES_CROUCH, RES_REACTION, RES_SHOT, character_s::reservedTus, and chrReservations_s::shot.

Referenced by CL_ActorStateChange(), HUD_SetShootReservation(), and HUD_ToggleCrouchReservation_f().

void CL_ActorResetMoveLength ( le_t le  ) 

Recalculates the currently selected Actor's move length.

Parameters:
[in,out] le Pointer to actor for which we reset move lenght.

Definition at line 690 of file cl_actor.c.

References le_s::actorMoveLength, CL_ActorMoveLength(), and mousePos.

Referenced by CL_ActorConditionalMoveCalc(), CL_ActorMouseTrace(), and CL_ActorStats().

static le_t* CL_ActorSearchAtGridPos ( const pos3_t  pos,
qboolean  includingStunned 
) [static]

Searches an actor at the given position.

Parameters:
[in] pos The grid position to search an actor at
[in] includingStunned Also search for stunned actors if true.

Definition at line 1210 of file cl_actor.c.

References ACTOR_SIZE_2x2, ACTOR_SIZE_NORMAL, Com_Error(), ERR_DROP, le_s::fieldSize, LE_GetNextInUse(), LE_IsLivingAndVisibleActor(), LE_IsStunned, le_s::pos, VectorCompare, and VectorSet.

Referenced by CL_ActorMouseTrace(), CL_TargetingGrenade(), and CL_TargetingStraight().

qboolean CL_ActorSelect ( le_t le  ) 

Selects an actor.

Parameters:
le Pointer to local entity struct. If this is NULL the ui_inventory that is linked from the actors
See also:
CL_UGVCvars
CL_ActorCvars

Todo:
remove this here, doesn't really belong here

Definition at line 418 of file cl_actor.c.

References CL_ActorConditionalMoveCalc(), CL_ActorGetChr(), CL_ActorGetNumber(), CL_UpdateCharacterValues(), cls, Com_Error(), Cvar_ForceSet(), ERR_DROP, HUD_HideFiremodes(), le_s::i, le_s::inuse, LE_IsDead, mousePosTargettingAlign, qfalse, qtrue, le_s::selected, client_static_s::team, le_s::team, ui_inventory, and va().

Referenced by CL_ActorRemoveFromTeamList(), CL_ActorSelectList(), CL_ActorSelectMouse(), CL_Reset(), and CL_StartGame().

static void CL_ActorSelect_f ( void   )  [static]

Selects a soldier while we are on battlescape.

Definition at line 2191 of file cl_actor.c.

References CL_ActorSelectList(), CL_BattlescapeRunning(), Cmd_Argc(), Cmd_Argv(), and Com_Printf().

Referenced by ACTOR_InitStartup().

qboolean CL_ActorSelectList ( int  num  ) 

Selects an actor from a list.

This function is used to select an actor from the lists that are used in equipment and team assemble screens

Parameters:
num The index value from the list of actors
See also:
CL_ActorSelect
Returns:
qtrue if selection was possible otherwise qfalse

Definition at line 480 of file cl_actor.c.

References cl, CL_ActorSelect(), Cvar_SetValue(), LE_CenterView(), le_s::pos, qfalse, and qtrue.

Referenced by CL_ActorAddToTeamList(), CL_ActorSelect_f(), and CL_ActorSelectNext().

void CL_ActorSelectMouse ( void   ) 
qboolean CL_ActorSelectNext ( void   ) 

selects the next actor

Definition at line 503 of file cl_actor.c.

References cl, CL_ActorSelectList(), i, le_s::inuse, LE_IsDead, qfalse, qtrue, and le_s::selected.

Referenced by CL_ActorNext_f().

void CL_ActorSetFireDef ( le_t actor,
const fireDef_t fd 
)

Definition at line 132 of file cl_actor.c.

References le_s::fd, and mousePosTargettingAlign.

Referenced by HUD_UpdateActorFireMode().

void CL_ActorSetMode ( le_t actor,
actorModes_t  actorMode 
)
void CL_ActorSetRFMode ( character_t chr,
actorHands_t  hand,
int  fireModeIndex,
const objDef_t weapon 
)

Sets reactionfire firemode for given actor.

Parameters:
[out] chr Pointer to an actor for which RF is being set.
[in] hand Store the given hand.
[in] fireModeIndex Store the given firemode for this hand.
[in] weapon Pointer to weapon in the hand.

Definition at line 205 of file cl_actor.c.

References chrFiremodeSettings_s::fmIdx, chrFiremodeSettings_s::hand, character_s::RFmode, and chrFiremodeSettings_s::weapon.

Referenced by CL_ActorReactionFireChange().

void CL_ActorSetShotSettings ( character_t chr,
actorHands_t  hand,
int  fireModeIndex,
const objDef_t weapon 
)

Sets shoot firemode for given actor.

Parameters:
[out] chr Pointer to an actor for which shoot is being set.
[in] hand Store the given hand.
[in] fireModeIndex Store the given firemode for this hand.
[in] weapon Pointer to weapon in the hand.

Definition at line 219 of file cl_actor.c.

References chrFiremodeSettings_s::fmIdx, chrFiremodeSettings_s::hand, character_s::reservedTus, chrReservations_s::shotSettings, and chrFiremodeSettings_s::weapon.

Referenced by CL_GenerateCharacter(), and HUD_SetShootReservation().

void CL_ActorShoot ( const le_t le,
const pos3_t  at 
)
static void CL_ActorStandCrouch_f ( void   )  [static]
void CL_ActorStartMove ( le_t le,
const pos3_t  to 
)
void CL_ActorTargetAlign_f ( void   ) 

Targets to the ground when holding the assigned button.

See also:
mousePosTargettingAlign

Definition at line 1805 of file cl_actor.c.

References le_s::actorMode, CL_ActorFireModeActivated(), Cmd_Argc(), Cmd_Argv(), le_s::fd, fireDef_s::gravity, GROUND_DELTA, and mousePosTargettingAlign.

Referenced by CL_InitLocal().

static qboolean CL_ActorTraceMove ( const pos3_t  to  )  [static]

Draws the way to walk when confirm actions is activated.

Parameters:
[in] to The location we draw the line to (starting with the location of selActor)
Returns:
qtrue if everything went ok, otherwise qfalse.
See also:
CL_MaximumMove (similar algo.)
CL_AddTargetingBox

Definition at line 702 of file cl_actor.c.

References byte, cl, CL_ActorMoveLength(), CL_ActorUsableTUs(), CL_ParticleSpawn(), Com_DPrintf(), DEBUG_PATHING, le_s::fieldSize, Grid_MoveNext(), Grid_PosToVec(), LE_IsCrouched, le_s::pathMap, pos, PosSubDV, qfalse, qtrue, ROUTING_NOT_REACHABLE, ROUTING_UNREACHABLE, and VectorCopy.

Referenced by CL_AddTargeting().

void CL_ActorTurnMouse ( void   ) 
static void CL_ActorUpdate_f ( void   )  [static]

Update the skin of the current soldier.

Definition at line 2209 of file cl_actor.c.

References chr_list_s::chr, chrDisplayList, cl_selected, CL_UpdateCharacterValues(), cvar_s::integer, and chr_list_s::num.

Referenced by ACTOR_InitStartup().

int CL_ActorUsableTUs ( const le_t le  ) 

Returns the amount of usable (overall-reserved) TUs for an actor.

Parameters:
[in] le The actor to check.
Returns:
The remaining/usable TUs for this actor
-1 on error (this includes bad [very large] numbers stored in the struct).

Definition at line 281 of file cl_actor.c.

References CL_ActorReservedTUs(), RES_ALL_ACTIVE, and le_s::TU.

Referenced by CL_ActorDoorAction_f(), CL_ActorMaximumMove(), CL_ActorStandCrouch_f(), CL_ActorStartMove(), CL_ActorStateChange(), CL_ActorTraceMove(), CL_ActorTurnMouse(), CL_AddPathingBox(), CL_AddTargetingBox(), HUD_CheckFiremodeReservation(), HUD_DisplayFiremodeEntry(), HUD_FireWeapon_f(), HUD_PopupFiremodeReservation(), HUD_RefreshButtons(), HUD_ShotReserve_f(), HUD_UpdateActor(), HUD_UpdateActorCvar(), HUD_UpdateActorFireMode(), HUD_UpdateActorMove(), HUD_UsableReactionTUs(), and HUD_WeaponCanBeReloaded().

static void CL_ActorUseDoor ( const le_t le  )  [static]
static void CL_ActorUseHeadgear_f ( void   )  [static]

Toggles the headgear for the current selected player.

Todo:
make this a variable somewhere?

Definition at line 1046 of file cl_actor.c.

References CL_ActorCheckAction(), CL_ActorSetMode(), CL_ActorShoot(), le_s::currentSelectedFiremode, HEADGEAR, M_FIRE_HEADGEAR, M_MOVE, mouseSpace, MS_WORLD, and le_s::pos.

Referenced by ACTOR_InitStartup().

static qboolean CL_ActorVis ( const le_t le,
const le_t check 
) [static]
See also:
G_ActorVis
Parameters:
[in] le The local entity to do the check for
[in] check The local entity to check the visibility for
Returns:
true if the given edict is visible from the given world coordinate, false otherwise.

Definition at line 2226 of file cl_actor.c.

References CL_Trace(), cl_worldlevel, trace_s::fraction, i, cvar_s::integer, LE_IsCrouched, LE_IsDead, MASK_SOLID, le_s::origin, PLAYER_CROUCH, PLAYER_DEAD, PLAYER_MIN, PLAYER_STAND, qfalse, qtrue, vec3_origin, VectorCopy, VectorMA(), and VectorNormalize().

Referenced by CL_NextAlienVisibleFromActor_f().

qboolean CL_AddActor ( le_t le,
entity_t ent 
)

Adds an actor to the render entities with all it's models and items.

Parameters:
[in] le The local entity to get the values from
[in] ent The body entity used in the renderer
See also:
CL_AddUGV
LE_AddToScene
CL_ActorAppear
Note:
Called via addfunc for each local entity in every frame

Add actor special effects. Only draw blood if the actor is dead or (if stunned) was damaged more than half its maximum HPs.

Todo:
Better value for this?

Definition at line 1408 of file cl_actor.c.

References le_s::alpha, cl, CL_AddActorWeapon(), CL_ParticleSpawn(), cls, Com_Error(), teamDef_s::deathTextureName, ERR_DROP, le_s::HP, cvar_s::integer, it_effect, LE_IsDead, LE_IsStunned, le_s::left, le_s::maxHP, le_s::model2, client_static_s::modelPool, le_s::origin, le_s::pnum, qfalse, qtrue, R_AddEntity(), R_FindImage(), R_GetFreeEntity(), RF_ACTOR, RF_ALLIED, RF_BLOOD, RF_IRGOGGLES, RF_MEMBER, RF_SELECTED, RF_SHADOW, le_s::right, le_s::selected, le_s::skinnum, client_static_s::team, le_s::team, and le_s::teamDef.

Referenced by CL_ActorAppear().

static qboolean CL_AddActorWeapon ( int  objID  )  [inline, static]

Checks whether a weapon should be added to the entity's hand.

Parameters:
[in] objID The item id that the actor is holding in his hand (le->left or le->right)
Returns:
true if the weapon is a valid item and false if it's a dummy item or the actor has nothing in the given hand

Definition at line 1388 of file cl_actor.c.

References INVSH_GetItemByIDX(), objDef_s::isVirtual, NONE, qfalse, and qtrue.

Referenced by CL_AddActor().

static void CL_AddArrow ( vec3_t  from,
vec3_t  to,
float  red,
float  green,
float  blue 
) [static]

create an arrow between from and to with the specified color ratios

Definition at line 2004 of file cl_actor.c.

References entity_t::origin, R_AddEntity(), RF_ARROW, VectorCopy, and VectorSet.

Referenced by CL_DisplayFloorArrows(), and CL_DisplayObstructionArrows().

void CL_AddPathing ( void   ) 

Adds a pathing marker to the current floor when we render the world.

See also:
CL_ViewRender Draws the tracer (red, yellow, green box) on the grid

Definition at line 1974 of file cl_actor.c.

References CL_AddPathingBox(), cl_worldlevel, cvar_s::integer, mousePos, PATHFINDING_WIDTH, and pos.

Referenced by CL_ViewRender().

static void CL_AddPathingBox ( pos3_t  pos  )  [static]
void CL_AddTargeting ( void   ) 
static void CL_AddTargetingBox ( pos3_t  pos,
qboolean  pendBox 
) [static]
static void CL_BuildForbiddenList ( void   )  [static]

Builds a list of locations that cannot be moved to (client side).

See also:
G_MoveCalc
G_BuildForbiddenList <- server side
Grid_CheckForbidden
Note:
This is used for pathfinding. It is a list of where the selected unit can not move to because others are standing there already.

Definition at line 560 of file cl_actor.c.

References byte, Com_Error(), ERR_DROP, ET_ACTOR2x2, le_s::fieldSize, forbiddenList, forbiddenListLength, le_s::invis, LE_GetNextInUse(), LE_IsLivingAndVisibleActor(), LE_IsStunned, MAX_FORBIDDENLIST, le_s::pos, and le_s::type.

Referenced by CL_ActorConditionalMoveCalc().

void CL_DisplayFloorArrows ( void   ) 

Useful for debugging pathfinding.

Definition at line 2025 of file cl_actor.c.

References ACTOR_GET_FIELDSIZE, cl, CL_AddArrow(), Grid_PosToVec(), QUANT, dbuffer::start, truePos, and VectorCopy.

Referenced by CL_ViewRender().

void CL_DisplayObstructionArrows ( void   ) 

Useful for debugging pathfinding.

Definition at line 2039 of file cl_actor.c.

References ACTOR_GET_FIELDSIZE, cl, CL_AddArrow(), Grid_PosToVec(), dbuffer::start, truePos, and VectorCopy.

Referenced by CL_ViewRender().

static void CL_NextAlien_f ( void   )  [static]
static void CL_NextAlienVisibleFromActor_f ( void   )  [static]

Cycles between visible (to selected actor) aliens.

See also:
CL_NextAlien_f

Definition at line 2278 of file cl_actor.c.

References cl, CL_ActorVis(), CL_ParticleSpawn(), CL_ViewCenterAtGridPosition(), cls, i, le_s::inuse, LE_IsCivilian, LE_IsLivingAndVisibleActor(), le_s::origin, le_s::pos, client_static_s::team, and le_s::team.

Referenced by ACTOR_InitStartup().

static void CL_TargetingGrenade ( const pos3_t  fromPos,
actorSizeEnum_t  fromActorSize,
const pos3_t  toPos 
) [static]

Shows targeting for a grenade.

Parameters:
[in] fromPos The (grid-) position of the aiming actor.
[in] fromActorSize The size of the aiming actor (1 for 1x1 or 2 for 2x2).
[in] toPos The (grid-) position of the target (mousePos or mousePendPos).
See also:
CL_TargetingStraight

Todo:
character strength should be used here, too the stronger the character, the further the throw

Definition at line 1608 of file cl_actor.c.

References ACTOR_SIZE_NORMAL, cl, CL_ActorSearchAtGridPos(), CL_ParticleSpawn(), CL_TargetingRadius(), CL_Trace(), Com_GrenadeTarget(), le_s::fd, le_s::fieldSize, trace_s::fraction, GRAVITY, GRENADE_PARTITIONS, Grid_PosToVec(), GROUND_DELTA, i, fireDef_s::launched, MASK_SHOT, mousePosTargettingAlign, next, qfalse, qtrue, fireDef_s::range, fireDef_s::rolled, fireDef_s::shotOrg, fireDef_s::splrad, vec3_origin, Vector2Compare, VectorAdd, VectorCopy, VectorLength(), VectorScale, and VectorSubtract.

Referenced by CL_AddTargeting().

static void CL_TargetingRadius ( const vec3_t  center,
const float  radius 
) [static]

Show weapon radius.

Parameters:
[in] center The center of the circle
[in] radius The radius of the damage circle

Definition at line 1518 of file cl_actor.c.

References CL_ParticleSpawn(), and ptl_s::size.

Referenced by CL_TargetingGrenade().

static void CL_TargetingStraight ( const pos3_t  fromPos,
actorSizeEnum_t  fromActorSize,
const pos3_t  toPos 
) [static]

Draws line to target.

Parameters:
[in] fromPos The (grid-) position of the aiming actor.
[in] fromActorSize The size of the aiming actor (1 for 1x1 or 2 for 2x2).
[in] toPos The (grid-) position of the target.
See also:
CL_TargetingGrenade
CL_AddTargeting
CL_Trace
G_ShootSingle

Definition at line 1534 of file cl_actor.c.

References ACTOR_SIZE_NORMAL, cl, CL_ActorSearchAtGridPos(), CL_ParticleSpawn(), CL_Trace(), cls, dbuffer::end, le_s::fd, le_s::fieldSize, trace_s::fraction, Grid_PosToVec(), trace_s::le, LE_IsCivilian, LE_IsCrouched, MASK_SHOT, mousePosTargettingAlign, qfalse, qtrue, fireDef_s::range, dbuffer::start, client_static_s::team, le_s::team, UNIT_SIZE, vec3_origin, VectorCopy, VectorDist, VectorDistSqr, VectorMA(), VectorNormalize(), and VectorSubtract.

Referenced by CL_AddTargeting().

void MSG_Write_PA ( player_action_t  playerAction,
int  entnum,
  ... 
)

Writes player action with its data.

Parameters:
[in] playerAction Type of action.
[in] entnum The server side edict number of the actor

Definition at line 73 of file cl_actor.c.

References clc_action, cls, NET_vWriteFormat(), NET_WriteFormat(), NET_WriteMsg(), client_static_s::netStream, new_dbuffer(), and pa_format.

Referenced by CL_ActorInvMove(), CL_ActorReserveTUs(), CL_ActorShoot(), CL_ActorStandCrouch_f(), CL_ActorStartMove(), CL_ActorTurnMouse(), CL_ActorUseDoor(), HUD_ToggleReaction_f(), and HUD_UpdateReactionFiremodes().


Variable Documentation

const vec3_t boxShift = { PLAYER_WIDTH, PLAYER_WIDTH, UNIT_HEIGHT / 2 - DIST_EPSILON } [static]

Definition at line 1919 of file cl_actor.c.

const vec3_t boxSize = { BOX_DELTA_WIDTH, BOX_DELTA_LENGTH, BOX_DELTA_HEIGHT } [static]

field marker box

See also:
ModelOffset

Definition at line 1696 of file cl_actor.c.

cvar_t* cl_autostand [static]

Player preference: should the server make guys stand for long walks, to save TU.

Definition at line 46 of file cl_actor.c.

Definition at line 48 of file cl_actor.c.

cvar_t* cl_showactors [static]

Definition at line 47 of file cl_actor.c.

Confirm actions in tactical mode - valid values are 0, 1 and 2.

Definition at line 44 of file cl_actor.c.

pos_t* forbiddenList[MAX_FORBIDDENLIST] [static]

A list of locations that cannot be moved to.

Note:
Pointer to le->pos or edict->pos followed by le->fieldSize or edict->fieldSize
See also:
CL_BuildForbiddenList

Definition at line 544 of file cl_actor.c.

Referenced by CL_ActorConditionalMoveCalc(), and CL_BuildForbiddenList().

int forbiddenListLength [static]

Current length of fb_list.

Note:
all byte pointers in the fb_list list (pos + fieldSize)
See also:
fb_list

Definition at line 550 of file cl_actor.c.

Referenced by CL_ActorConditionalMoveCalc(), and CL_BuildForbiddenList().

le_t* mouseActor [static]

Definition at line 65 of file cl_actor.c.

pos3_t mouseLastPos [static]

Definition at line 66 of file cl_actor.c.

Referenced by CL_ActorMouseTrace().

int mousePosTargettingAlign = 0 [static]

If you want to change the z level of targeting and shooting, use this value. Negative and positive offsets are possible.

See also:
CL_ActorTargetAlign_f
G_ClientShoot
G_ShootGrenade
G_ShootSingle

Definition at line 63 of file cl_actor.c.

Referenced by CL_ActorSelect(), CL_ActorSetFireDef(), CL_ActorShoot(), CL_ActorTargetAlign_f(), CL_TargetingGrenade(), and CL_TargetingStraight().

The cell at the current worldlevel under the mouse cursor.

Definition at line 52 of file cl_actor.c.

Referenced by CL_ActorMouseTrace(), CL_DisplayFloorArrows(), CL_DisplayObstructionArrows(), and HUD_MapDebugCursor().


Generated by  doxygen 1.6.2