convert line ends
[canaan.git] / prj / cam / src / script / drscrpt.cpp
blobeb0c7a42985692673ee5d84b11db48fdae1fae81
1 /*
2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
4 */
6 ////////////////////////////////////////////////////////////////////////////////
7 // $Header: r:/t2repos/thief2/src/script/drscrpt.cpp,v 1.6 2000/02/24 13:46:55 patmac Exp $
8 //
10 #include <lg.h>
12 #include <scrptapi.h>
13 #include <scrptbas.h>
14 #include <scrptsrv.h>
16 #include <objscrpt.h>
17 #include <drscrpt.h>
19 #include <doorphys.h>
21 // must be last header
22 #include <dbmem.h>
24 ////////////////////////////////////////
26 // Door scripting service implementation
29 DECLARE_SCRIPT_SERVICE_IMPL(cDoorSrv, Door)
31 public:
32 STDMETHOD_(BOOL, CloseDoor)(object door_obj)
34 ObjID obj = ScriptObjID(door_obj);
36 if (!IsDoor(obj))
37 return FALSE;
39 if ((GetDoorStatus(obj) == kDoorClosed) ||
40 (GetDoorStatus(obj) == kDoorClosing))
41 return FALSE;
43 DoorPhysActivate(obj, DOORPHYS_CLOSE);
44 return TRUE;
47 STDMETHOD_(BOOL, OpenDoor)(object door_obj)
49 ObjID obj = ScriptObjID(door_obj);
51 if (!IsDoor(obj))
52 return FALSE;
54 if ((GetDoorStatus(obj) == kDoorOpen) ||
55 (GetDoorStatus(obj) == kDoorOpening))
56 return FALSE;
58 DoorPhysActivate(obj, DOORPHYS_OPEN);
59 return FALSE;
62 STDMETHOD_(int, GetDoorState)(object door_obj)
64 ObjID obj = ScriptObjID(door_obj);
66 if (!IsDoor(obj))
67 return kDoorNoDoor;
69 return GetDoorStatus(obj);
72 STDMETHOD(ToggleDoor)(object door_obj)
74 ObjID obj = ScriptObjID(door_obj);
76 if (!IsDoor(obj))
77 return FALSE;
79 return DoorPhysActivate(obj, DOORPHYS_TOGGLE);
82 STDMETHOD(SetBlocking)(object door_obj, BOOL state)
84 ObjID obj = ScriptObjID(door_obj);
86 if (!IsDoor(obj))
87 return FALSE;
89 if (state)
90 AddDoorBlocking(obj);
91 else
92 RemoveDoorBlocking(obj);
94 return TRUE;
97 STDMETHOD_(BOOL, GetSoundBlocking)(object door_obj)
99 ObjID obj = ScriptObjID(door_obj);
101 if (!IsDoor(obj))
102 return FALSE;
104 return GetDoorSoundBlocking(obj);
110 IMPLEMENT_SCRIPT_SERVICE_IMPL(cDoorSrv, Door);
112 ////////////////////////////////////////
114 // Door scripting message implementation
117 IMPLEMENT_SCRMSG_PERSISTENT(sDoorMsg)
119 PersistenceHeader(sScrMsg, kDoorMsgVer);
120 PersistentEnum(ActionType);
121 return TRUE;