UFO: Alien Invasion
Loading...
Searching...
No Matches
e_event_actorstats.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 "../../../cl_actor.h"
28#include "../../../cl_hud.h"
29#include "e_event_actorstats.h"
30
36void CL_ActorStats (const eventRegister_t* self, dbuffer* msg)
37{
38 const int entnum = NET_ReadShort(msg);
39 le_t* le = LE_Get(entnum);
40 if (!le)
41 LE_NotFoundError(entnum);
42
43 if (le->pnum != cl.pnum) {
44 Com_Printf("CL_ActorStats: stats for a player that is not controlled by us but by: %i (entnum: %i)\n",
45 le->pnum, le->entnum);
46 return;
47 }
48
49 switch (le->type) {
50 case ET_ACTORHIDDEN:
51 case ET_ACTOR:
52 case ET_ACTOR2x2:
53 break;
54 default:
55 Com_Printf("CL_ActorStats: LE (%i) not an actor (type: %i)\n", entnum, le->type);
56 return;
57 }
58
59 int oldTUs = 0;
60 if (LE_IsSelected(le))
61 oldTUs = le->TU;
62
63 NET_ReadFormat(msg, self->formatString, &le->TU, &le->HP, &le->STUN, &le->morale);
64
65 if (le->TU > le->maxTU)
66 le->maxTU = le->TU;
67 if (le->HP > le->maxHP)
68 le->maxHP = le->HP;
69 if (le->morale > le->maxMorale)
70 le->maxMorale = le->morale;
71
72 /* if selActor's timeunits have changed, update movelength */
73 if (le->TU != oldTUs && LE_IsSelected(le))
75
77}
void CL_ActorResetMoveLength(le_t *le)
Recalculates the currently selected Actor's move length.
Definition cl_actor.cpp:764
clientBattleScape_t cl
void HUD_UpdateActorStats(const le_t *le)
Definition cl_hud.cpp:144
HUD related routines.
le_t * LE_Get(int entnum)
Searches all local entities for the one with the searched entnum.
#define LE_IsSelected(le)
#define LE_NotFoundError(entnum)
Primary header for client.
void Com_Printf(const char *const fmt,...)
Definition common.cpp:428
void CL_ActorStats(const eventRegister_t *self, dbuffer *msg)
Parses the actor stats that comes from the netchannel.
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 NET_ReadShort(dbuffer *buf)
Definition netpack.cpp:242
@ ET_ACTOR
Definition q_shared.h:148
@ ET_ACTOR2x2
Definition q_shared.h:160
@ ET_ACTORHIDDEN
Definition q_shared.h:163
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
a local entity
int morale
int maxMorale
int maxTU
int entnum
int maxHP
entity_type_t type