UFO: Alien Invasion
Doxygen documentation generating
e_event_entappear.cpp
Go to the documentation of this file.
1 
5 /*
6 Copyright (C) 2002-2023 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_entappear.h"
28 #include "../../../../../common/grid.h"
29 
30 int CL_EntAppearTime (const struct eventRegister_s* self, dbuffer* msg, eventTiming_t* eventTiming)
31 {
32  if (eventTiming->parsedShot) {
33  if (eventTiming->parsedDeath) { /* drop items after death (caused by impact) */
34  return eventTiming->impactTime + 1400;
35  } else if (eventTiming->impactTime > cl.time) { /* item thrown on the ground */
36  return eventTiming->impactTime + 75;
37  }
38  }
39 
40  return eventTiming->nextTime;
41 }
42 
49 void CL_EntAppear (const eventRegister_t* self, dbuffer* msg)
50 {
51  int entnum;
53  pos3_t pos;
54 
55  NET_ReadFormat(msg, self->formatString, &entnum, &type, &pos);
56 
57  /* check if the ent is already visible */
58  le_t* le = LE_Get(entnum);
59  if (!le) {
60  le = LE_Add(entnum);
61  } else {
62  Com_DPrintf(DEBUG_CLIENT, "CL_EntAppear: Entity appearing already visible... overwriting the old one\n");
63  le->inuse = true;
64  }
65 
66  le->type = type;
67 
68  /* the default is invisible - another event will follow which spawns not
69  * only the le, but also the particle. The visibility is set there, too */
70  if (le->type == ET_PARTICLE)
71  LE_SetInvisible(le);
72 
73  VectorCopy(pos, le->pos);
75 }
#define VectorCopy(src, dest)
Definition: vector.h:51
QGL_EXTERN GLint GLenum type
Definition: r_gl.h:94
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
int CL_EntAppearTime(const struct eventRegister_s *self, dbuffer *msg, eventTiming_t *eventTiming)
vec3_t origin
int impactTime
Definition: e_main.h:33
int nextTime
Definition: e_main.h:31
a local entity
#define DEBUG_CLIENT
Definition: defines.h:59
le_t * LE_Get(int entnum)
Searches all local entities for the one with the searched entnum.
bool parsedShot
Definition: e_main.h:36
le_t * LE_Add(int entnum)
Add a new local entity to the scene.
clientBattleScape_t cl
void Com_DPrintf(int level, const char *fmt,...)
A Com_Printf that only shows up if the "developer" cvar is set.
Definition: common.cpp:398
pos_t pos3_t[3]
Definition: ufotypes.h:58
#define LE_SetInvisible(le)
void CL_EntAppear(const eventRegister_t *self, dbuffer *msg)
Let an entity appear - like an item on the ground that just got visible.
entity_type_t
Definition: q_shared.h:145
entity_type_t type
CL_ParseEvent timers and vars.
Definition: e_main.h:30
bool parsedDeath
Definition: e_main.h:35
actorSizeEnum_t fieldSize
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
bool inuse
Routing routing
Definition: typedefs.h:341
Struct that defines one particular event with all its callbacks and data.
Definition: e_main.h:42
pos3_t pos