UFO: Alien Invasion
Toggle main menu visibility
Loading...
Searching...
No Matches
e_event_actorreactionfireaddtarget.cpp
Go to the documentation of this file.
1
4
5
/*
6
Copyright (C) 2002-2025 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 "
../../../cl_actor.h
"
28
#include "
../../../cl_hud.h
"
29
#include "
../../../../ui/ui_main.h
"
30
#include "
e_event_actorreactionfireaddtarget.h
"
31
32
static
void
CL_GetReactionFireHead
(
const
le_t
* le,
const
char
** model,
int
* skin,
bool
* robot)
33
{
34
/* hack for robots, they don't have a head */
35
if
(le->
teamDef
->
robot
) {
36
*model = le->
model1
->
name
;
37
*skin = le->
bodySkin
;
38
}
else
{
39
*model = le->
model2
->
name
;
40
*skin = le->
headSkin
;
41
}
42
*robot = le->
teamDef
->
robot
;
43
}
44
45
int
CL_ActorReactionFireAddTargetTime
(
const
eventRegister_t
* self,
dbuffer
* msg,
eventTiming_t
* eventTiming)
46
{
47
int
targetEntNum;
48
int
unused;
49
int
step;
50
51
NET_ReadFormat
(msg, self->
formatString
, &unused, &targetEntNum, &unused, &step);
52
53
const
le_t
* target =
LE_Get
(targetEntNum);
54
if
(!target)
55
LE_NotFoundError
(targetEntNum);
56
if
(step >=
MAX_ROUTE
)
57
return
eventTiming->
nextTime
;
58
const
int
stepTime =
CL_GetStepTime
(eventTiming, target, step);
59
if
(eventTiming->
shootTime
> stepTime)
60
return
eventTiming->
impactTime
;
61
return
stepTime;
62
}
63
70
void
CL_ActorReactionFireAddTarget
(
const
eventRegister_t
* self,
dbuffer
* msg)
71
{
72
int
shooterEntNum;
73
int
targetEntNum;
74
// if these TUs have arrived at 0, the reaction fire can be triggered
75
int
tusUntilTriggered;
76
int
unused;
77
78
NET_ReadFormat
(msg, self->
formatString
, &shooterEntNum, &targetEntNum, &tusUntilTriggered, &unused);
79
80
const
le_t
* shooter =
LE_Get
(shooterEntNum);
81
if
(!shooter)
82
LE_NotFoundError
(shooterEntNum);
83
84
const
le_t
* target =
LE_Get
(targetEntNum);
85
if
(!target)
86
LE_NotFoundError
(targetEntNum);
87
88
const
char
* shooterModel;
89
int
shooterSkin;
90
bool
shooterRobot;
91
CL_GetReactionFireHead
(shooter, &shooterModel, &shooterSkin, &shooterRobot);
92
const
fireDef_t
* shooterFiredef =
CL_ActorGetReactionFireFireDef
(shooter);
93
const
float
distance =
VectorDist
(shooter->
origin
, target->
origin
);
94
const
bool
outOfRange = shooterFiredef->
range
< distance;
95
96
UI_ExecuteConfunc
(
"reactionfire_addtarget %i %i \"%s\" %i %i %i %i \"%s\""
, shooterEntNum, target->
entnum
, shooterModel,
97
shooterSkin, shooterRobot, tusUntilTriggered, outOfRange,
_
(shooterFiredef->
name
));
98
99
LE_CenterView
(target);
100
}
CL_ActorGetReactionFireFireDef
const fireDef_t * CL_ActorGetReactionFireFireDef(const le_t *shooter)
Definition
cl_actor.cpp:171
cl_actor.h
cl_hud.h
HUD related routines.
LE_CenterView
void LE_CenterView(const le_t *le)
Center the camera on the local entity's origin.
Definition
cl_localentity.cpp:1257
LE_Get
le_t * LE_Get(int entnum)
Searches all local entities for the one with the searched entnum.
Definition
cl_localentity.cpp:1287
cl_localentity.h
LE_NotFoundError
#define LE_NotFoundError(entnum)
Definition
cl_localentity.h:322
_
#define _(String)
Definition
cl_shared.h:44
dbuffer
Definition
dbuffer.h:20
client.h
Primary header for client.
MAX_ROUTE
#define MAX_ROUTE
Definition
defines.h:84
CL_ActorReactionFireAddTarget
void CL_ActorReactionFireAddTarget(const eventRegister_t *self, dbuffer *msg)
Network event function for reaction fire target handling. Responsible for updating the HUD with the i...
Definition
e_event_actorreactionfireaddtarget.cpp:70
CL_GetReactionFireHead
static void CL_GetReactionFireHead(const le_t *le, const char **model, int *skin, bool *robot)
Definition
e_event_actorreactionfireaddtarget.cpp:32
CL_ActorReactionFireAddTargetTime
int CL_ActorReactionFireAddTargetTime(const eventRegister_t *self, dbuffer *msg, eventTiming_t *eventTiming)
Definition
e_event_actorreactionfireaddtarget.cpp:45
e_event_actorreactionfireaddtarget.h
CL_GetStepTime
int CL_GetStepTime(const eventTiming_t *eventTiming, const le_t *le, int step)
Calculates the time when the given step was executed in the event chain.
Definition
e_main.cpp:177
NET_ReadFormat
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
eventRegister_t
Struct that defines one particular event with all its callbacks and data.
Definition
e_main.h:42
eventRegister_t::formatString
const char * formatString
The format string that is used to write and parse this event.
Definition
e_main.h:54
eventTiming_t
CL_ParseEvent timers and vars.
Definition
e_main.h:30
eventTiming_t::shootTime
int shootTime
Definition
e_main.h:32
eventTiming_t::nextTime
int nextTime
Definition
e_main.h:31
eventTiming_t::impactTime
int impactTime
Definition
e_main.h:33
fireDef_t
this is a fire definition for our weapons/ammo
Definition
inv_shared.h:110
fireDef_t::name
const char * name
Definition
inv_shared.h:111
fireDef_t::range
float range
Definition
inv_shared.h:152
le_t
a local entity
Definition
cl_localentity.h:65
le_t::origin
vec3_t origin
Definition
cl_localentity.h:70
le_t::model1
model_t * model1
Definition
cl_localentity.h:116
le_t::headSkin
unsigned int headSkin
Definition
cl_localentity.h:115
le_t::teamDef
teamDef_t * teamDef
Definition
cl_localentity.h:161
le_t::entnum
int entnum
Definition
cl_localentity.h:68
le_t::model2
model_t * model2
Definition
cl_localentity.h:116
le_t::bodySkin
unsigned int bodySkin
Definition
cl_localentity.h:114
model_t::name
char name[MAX_QPATH]
Definition
r_model.h:44
teamDef_t::robot
bool robot
Definition
chr_shared.h:333
UI_ExecuteConfunc
void UI_ExecuteConfunc(const char *fmt,...)
Executes confunc - just to identify those confuncs in the code - in this frame.
Definition
ui_main.cpp:110
ui_main.h
VectorDist
#define VectorDist(a, b)
Definition
vector.h:69
src
client
battlescape
events
event
actor
e_event_actorreactionfireaddtarget.cpp
Generated on __DATE__ __TIME__ for UFO: Alien Invasion by
1.17.0