UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
e_event_actorreactionfiretargetupdate.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 "../../../cl_actor.h"
28 #include "../../../cl_hud.h"
29 #include "../../../../ui/ui_main.h"
31 
33 {
34  int targetEntNum;
35  int unused;
36  int step;
37 
38  NET_ReadFormat(msg, self->formatString, &unused, &targetEntNum, &unused, &step);
39 
40  const le_t* target = LE_Get(targetEntNum);
41  if (!target)
42  LE_NotFoundError(targetEntNum);
43  if (step >= MAX_ROUTE)
44  return eventTiming->nextTime;
45  int stepTime = CL_GetStepTime(eventTiming, target, step);
46  if (eventTiming->shootTime > stepTime)
47  return eventTiming->impactTime;
48  return stepTime;
49 }
50 
58 {
59  int shooterEntNum;
60  int targetEntNum;
61  // if these TUs have arrived at 0, the reaction fire can be triggered
62  int tusUntilTriggered;
63  int unused;
64 
65  NET_ReadFormat(msg, self->formatString, &shooterEntNum, &targetEntNum, &tusUntilTriggered, &unused);
66 
67  const le_t* shooter = LE_Get(shooterEntNum);
68  if (!shooter)
69  LE_NotFoundError(shooterEntNum);
70 
71  const le_t* target = LE_Get(targetEntNum);
72  if (!target)
73  LE_NotFoundError(targetEntNum);
74 
75  const bool outOfRange = CL_ActorIsReactionFireOutOfRange(shooter, target);
76  UI_ExecuteConfunc("reactionfire_updatetarget %i %i %i %i", shooterEntNum, target->entnum, tusUntilTriggered, outOfRange);
77 }
int entnum
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 shootTime
Definition: e_main.h:32
bool CL_ActorIsReactionFireOutOfRange(const le_t *shooter, const le_t *target)
Definition: cl_actor.cpp:199
CL_ParseEvent timers and vars.
Definition: e_main.h:30
le_t * LE_Get(int entnum)
Searches all local entities for the one with the searched entnum.
void CL_ActorReactionFireTargetUpdate(const eventRegister_t *self, dbuffer *msg)
Network event function for reaction fire target handling. Responsible for updating the HUD with the i...
#define MAX_ROUTE
Definition: defines.h:84
Struct that defines one particular event with all its callbacks and data.
Definition: e_main.h:42
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
a local entity
int impactTime
Definition: e_main.h:33
int CL_ActorReactionFireTargetUpdateTime(const eventRegister_t *self, dbuffer *msg, eventTiming_t *eventTiming)
int nextTime
Definition: e_main.h:31
void UI_ExecuteConfunc(const char *fmt,...)
Executes confunc - just to identify those confuncs in the code - in this frame.
Definition: ui_main.cpp:110
#define LE_NotFoundError(entnum)