UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
e_event_actoradd.cpp
Go to the documentation of this file.
1 
5 /*
6 Copyright (C) 2002-2020 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 #include "../../../../client.h"
26 #include "../../../cl_localentity.h"
27 #include "e_event_actoradd.h"
28 #include "../../../../../common/grid.h"
29 
37 void CL_ActorAdd (const eventRegister_t* self, dbuffer* msg)
38 {
39  /* check if the actor is already visible */
40  const int entnum = NET_ReadShort(msg);
41  le_t* le = LE_Get(entnum);
42  if (le) {
43  Com_Printf("CL_ActorAdd: Actor with number %i already exists\n", entnum);
44  NET_SkipFormat(msg, self->formatString);
45  return;
46  }
47  le = LE_Add(entnum);
48 
49  /* get the info */
50  int teamDefID;
51  NET_ReadFormat(msg, self->formatString,
52  &le->team, &teamDefID,
53  &le->gender, &le->pnum, &le->pos,
54  &le->state, &le->fieldSize);
55 
56  if (teamDefID < 0 || teamDefID > csi.numTeamDefs)
57  Com_Printf("CL_ActorAdd: Invalid teamDef index\n");
58  else
59  le->teamDef = &csi.teamDef[teamDefID];
60 
61  /*Com_Printf("CL_ActorAdd: Add number: %i\n", entnum);*/
62 
63  le->type = ET_ACTORHIDDEN;
64 
66  le->flags = LE_INVISIBLE;
67 }
teamDef_t * teamDef
int pnum
int gender
pos3_t pos
csi_t csi
Definition: common.cpp:39
void NET_ReadFormat(dbuffer *buf, const char *format,...)
The user-friendly version of NET_ReadFormat that reads variable arguments from a buffer according to ...
Definition: netpack.cpp:533
void Com_Printf(const char *const fmt,...)
Definition: common.cpp:386
vec3_t origin
void CL_ActorAdd(const eventRegister_t *self, dbuffer *msg)
Adds an hidden actor to the list of le's.
actorSizeEnum_t fieldSize
int flags
le_t * LE_Get(int entnum)
Searches all local entities for the one with the searched entnum.
le_t * LE_Add(int entnum)
Add a new local entity to the scene.
int NET_ReadShort(dbuffer *buf)
Definition: netpack.cpp:242
clientBattleScape_t cl
teamDef_t teamDef[MAX_TEAMDEFS]
Definition: q_shared.h:548
Struct that defines one particular event with all its callbacks and data.
Definition: e_main.h:42
a local entity
#define LE_INVISIBLE
entity_type_t type
int numTeamDefs
Definition: q_shared.h:549
int team
void Grid_PosToVec(const Routing &routing, const actorSizeEnum_t actorSize, const pos3_t pos, vec3_t vec)
Converts a grid position to world coordinates.
Definition: grid.cpp:832
Routing routing
Definition: typedefs.h:341
void NET_SkipFormat(dbuffer *buf, const char *format)
Definition: netpack.cpp:476
int state