32#include "scriptslave.h"
34extern Event EV_Door_TryOpen;
35extern Event EV_Door_GoDown;
36extern Event EV_Door_GoUp;
37extern Event EV_Door_HitBottom;
38extern Event EV_Door_HitTop;
39extern Event EV_Door_Fire;
40extern Event EV_Door_Link;
41extern Event EV_Door_SetSpeed;
42extern Event EV_Door_Lock;
43extern Event EV_Door_Unlock;
49class Door :
public ScriptSlave
54 str sound_close_start;
67 float next_locked_time;
70 void SetDir(
Event *ev);
71 void OpenEnd(
Event *ev);
72 void CloseEnd(
Event *ev);
73 void Close(
Event *ev);
75 void DoorUse(
Event *ev);
76 void DoorFire(
Event *ev);
77 void DoorBlocked(
Event *ev);
78 void FieldTouched(
Event *ev);
79 void TryOpen(
Event *ev);
81 qboolean DoorTouches(Door *e1);
82 void LinkDoors(
Event *ev);
83 void SetTime(
Event *ev);
84 void LockDoor(
Event *ev);
85 void UnlockDoor(
Event *ev);
86 void SetOpenStartSound(
str sound);
87 void SetOpenStartSound(
Event *ev);
88 void SetOpenEndSound(
str sound);
89 void SetOpenEndSound(
Event *ev);
90 void SetCloseStartSound(
Event *ev);
91 void SetCloseStartSound(
str sound);
92 void SetCloseEndSound(
Event *ev);
93 void SetCloseEndSound(
str sound);
94 void SetMessageSound(
str sound);
95 void SetMessageSound(
Event *ev);
96 void SetLockedSound(
str sound);
97 void SetLockedSound(
Event *ev);
98 void SetWait(
Event *ev);
99 void SetDmg(
Event *ev);
100 void EventTrySolid(
Event *ev);
101 void EventAlwaysAway(
Event *ev);
102 void EventDoorType(
Event *ev);
104 void SetDoorType(
str s);
105 qboolean BlocksAIMovement(
void)
const override;
106 qboolean AIDontFace(
void)
const override;
107 void ShowInfo(
float fDot,
float fDist)
override;
109 void UpdatePathConnection(
void);
110 void SetLocked(qboolean newLocked);
111 void SetState(
int newState);
114 CLASS_PROTOTYPE(Door);
119 qboolean isOpen(
void);
120 qboolean isCompletelyClosed(
void);
121 void GetIsOpen(
Event *ev);
122 qboolean CanBeOpenedBy(
Entity *ent);
123 void Archive(
Archiver &arc)
override;
126inline void Door::Archive(
Archiver& arc)
128 ScriptSlave::Archive(arc);
130 arc.ArchiveString(&sound_open_start);
131 arc.ArchiveString(&sound_open_end);
132 arc.ArchiveString(&sound_close_start);
133 arc.ArchiveString(&sound_close_end);
134 arc.ArchiveString(&sound_message);
135 arc.ArchiveString(&sound_locked);
137 SetOpenStartSound(sound_open_start);
138 SetOpenEndSound(sound_open_end);
139 SetCloseStartSound(sound_close_start);
140 SetCloseEndSound(sound_close_end);
141 SetMessageSound(sound_message);
142 SetLockedSound(sound_locked);
144 arc.ArchiveFloat(&lastblocktime);
145 arc.ArchiveFloat(&angle);
146 arc.ArchiveVector(&dir);
147 arc.ArchiveFloat(&diropened);
148 arc.ArchiveInteger(&state);
149 arc.ArchiveInteger(&previous_state);
150 arc.ArchiveInteger(&trigger);
151 arc.ArchiveInteger(&nextdoor);
152 arc.ArchiveSafePointer(&master);
153 arc.ArchiveFloat(&next_locked_time);
154 arc.ArchiveBoolean(&locked);
155 arc.ArchiveBool(&m_bAlwaysAway);
158class RotatingDoor :
public Door
163 int init_door_direction;
166 CLASS_PROTOTYPE(RotatingDoor);
168 void DoOpen(
Event *ev);
169 void DoClose(
Event *ev);
170 void OpenAngle(
Event *ev);
171 void Archive(
Archiver& arc)
override;
176inline void RotatingDoor::Archive(
Archiver& arc)
180 arc.ArchiveFloat(&angle);
181 arc.ArchiveVector(&startangle);
182 arc.ArchiveInteger(&init_door_direction);
185class SlidingDoor :
public Door
196 CLASS_PROTOTYPE(SlidingDoor);
198 void SetMoveDir(
Event *ev);
199 void Setup(
Event *ev);
200 void SetLip(
Event *ev);
201 void SetSpeed(
Event *ev);
202 void DoOpen(
Event *ev);
203 void DoClose(
Event *ev);
204 void Archive(
Archiver& arc)
override;
209inline void SlidingDoor::Archive(
Archiver& arc)
213 arc.ArchiveFloat(&totalmove);
214 arc.ArchiveFloat(&lip);
215 arc.ArchiveVector(&pos1);
216 arc.ArchiveVector(&pos2);
217 arc.ArchiveVector(&movedir);
218 arc.ArchiveFloat(&basespeed);
221class ScriptDoor :
public Door
233 CLASS_PROTOTYPE(ScriptDoor);
235 void SetMoveDir(
Event *ev);
236 void DoInit(
Event *ev);
237 void DoOpen(
Event *ev);
238 void DoClose(
Event *ev);
239 void SetOpenThread(
Event *ev);
240 void SetCloseThread(
Event *ev);
241 void SetInitThread(
Event *ev);
242 void Archive(
Archiver& arc)
override;
246inline void ScriptDoor::Archive(
Archiver& arc)
250 arc.ArchiveFloat(&doorsize);
251 arc.ArchiveVector(&startangle);
252 arc.ArchiveVector(&startorigin);
253 arc.ArchiveVector(&movedir);
Definition listener.h:246
Definition gamescript.h:165