UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
e_event_doorclose.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 "e_event_doorclose.h"
28 
29 static void LET_DoorSlidingClose (le_t* le)
30 {
31  assert(le->slidingSpeed > 0);
32  LET_SlideDoor(le, -le->slidingSpeed);
33 }
34 
35 static void LET_DoorRotatingClose (le_t* le)
36 {
37  assert(le->rotationSpeed > 0);
38  LET_RotateDoor(le, -le->rotationSpeed);
39 }
40 
47 void CL_DoorClose (const eventRegister_t* self, dbuffer* msg)
48 {
49  /* get local entity */
50  int number;
51 
52  NET_ReadFormat(msg, self->formatString, &number);
53 
54  le_t* le = LE_Get(number);
55  if (!le)
56  LE_NotFoundError(number);
57 
58  if (le->type == ET_DOOR) {
60  le->think(le);
61  } else if (le->type == ET_DOOR_SLIDING) {
63  le->think(le);
64  } else {
65  Com_Error(ERR_DROP, "Invalid door entity found of type: %i", le->type);
66  }
67 }
void LET_SlideDoor(le_t *le, int speed)
Slides a door.
float rotationSpeed
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 slidingSpeed
void Com_Error(int code, const char *fmt,...)
Definition: common.cpp:417
#define ERR_DROP
Definition: common.h:211
le_t * LE_Get(int entnum)
Searches all local entities for the one with the searched entnum.
static void LET_DoorSlidingClose(le_t *le)
void LET_RotateDoor(le_t *le, int speed)
Rotates a door in the given speed.
Struct that defines one particular event with all its callbacks and data.
Definition: e_main.h:42
void CL_DoorClose(const eventRegister_t *self, dbuffer *msg)
Callback for EV_DOOR_CLOSE event - rotates the inline model and recalc routing.
a local entity
entity_type_t type
localEntityThinkFunc_t think
void LE_SetThink(le_t *le, localEntityThinkFunc_t think)
static void LET_DoorRotatingClose(le_t *le)
#define LE_NotFoundError(entnum)