UFO: Alien Invasion
Loading...
Searching...
No Matches
e_event_entappear.cpp
Go to the documentation of this file.
1
4
5/*
6Copyright (C) 2002-2025 UFO: Alien Invasion.
7
8This program is free software; you can redistribute it and/or
9modify it under the terms of the GNU General Public License
10as published by the Free Software Foundation; either version 2
11of the License, or (at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
17See the GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program; if not, write to the Free Software
21Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23*/
24
25#include "../../../../client.h"
27#include "e_event_entappear.h"
29
30int 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
49void 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)
72
73 VectorCopy(pos, le->pos);
74 Grid_PosToVec(cl.mapData->routing, le->fieldSize, le->pos, le->origin);
75}
clientBattleScape_t cl
le_t * LE_Add(int entnum)
Add a new local entity to the scene.
le_t * LE_Get(int entnum)
Searches all local entities for the one with the searched entnum.
#define LE_SetInvisible(le)
Primary header for client.
void Com_DPrintf(int level, const char *fmt,...)
A Com_Printf that only shows up if the "developer" cvar is set.
Definition common.cpp:440
#define DEBUG_CLIENT
Definition defines.h:59
int CL_EntAppearTime(const struct eventRegister_s *self, dbuffer *msg, eventTiming_t *eventTiming)
void CL_EntAppear(const eventRegister_t *self, dbuffer *msg)
Let an entity appear - like an item on the ground that just got visible.
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
Battlescape grid functions.
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
entity_type_t
Definition q_shared.h:145
@ ET_PARTICLE
Definition q_shared.h:164
QGL_EXTERN GLint GLenum type
Definition r_gl.h:94
Struct that defines one particular event with all its callbacks and data.
Definition e_main.h:42
const char * formatString
The format string that is used to write and parse this event.
Definition e_main.h:54
CL_ParseEvent timers and vars.
Definition e_main.h:30
int nextTime
Definition e_main.h:31
int impactTime
Definition e_main.h:33
bool parsedDeath
Definition e_main.h:35
bool parsedShot
Definition e_main.h:36
a local entity
vec3_t origin
actorSizeEnum_t fieldSize
pos3_t pos
bool inuse
entity_type_t type
pos_t pos3_t[3]
Definition ufotypes.h:58
#define VectorCopy(src, dest)
Definition vector.h:51