2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
6 ////////////////////////////////////////////////////////////////////////////////
7 // $Header: r:/t2repos/thief2/src/script/drscrpt.h,v 1.10 2000/02/24 13:46:54 patmac Exp $
21 //////////////////////////////////////
26 DECLARE_SCRIPT_SERVICE(Door
, 0xf6)
28 // Start a door closing. Returns FALSE if already closing or closed.
29 STDMETHOD_(BOOL
, CloseDoor
)(object door_obj
) PURE
;
31 // Start a door opening. Returns FALSE if already opening or open.
32 STDMETHOD_(BOOL
, OpenDoor
)(object door_obj
) PURE
;
34 // return a doorphys state
35 STDMETHOD_(int, GetDoorState
)(object door_obj
) PURE
;
37 // Toggle a door's motion (opens if closing or closed, closes if open
39 STDMETHOD(ToggleDoor
)(object door_obj
) PURE
;
41 // Enable/disable a door's blocking state
42 STDMETHOD(SetBlocking
)(object door_obj
, BOOL state
) PURE
;
44 // return if a door is blocking sound
45 STDMETHOD_(BOOL
, GetSoundBlocking
)(object door_obj
) PURE
;
48 //////////////////////////////////////
52 // DoorOpen, DoorClose, DoorOpening, DoorClosing
56 struct sDoorMsg
: public sScrMsg
65 kToMakeBig
= 0xFFFFFFFF
69 eDoorAction ActionType
;
70 eDoorAction PrevActionType
;
72 // TRUE iff this is a proxy door, so scripts may wish to curtail
73 // their actions. If this is not a network game, isProxy will always
82 sDoorMsg(ObjID obj_to
, eDoorAction action
, eDoorAction prev_action
,
85 PrevActionType(prev_action
),
88 static char *room_msg_names
[5] = { "DoorOpen", "DoorClose", "DoorOpening", "DoorClosing", "DoorHalt" };
90 // setup base scrMsg fields
92 free((void *)message
);
93 message
= strdup(room_msg_names
[action
]);
94 // We are specifically allowing these messages to go to proxies:
95 flags
|= kSMF_MsgSendToProxy
;
98 DECLARE_SCRMSG_PERSISTENT();
103 #define OnDoorOpen() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(DoorOpen, sDoorMsg)
104 #define DefaultOnDoorOpen() SCRIPT_CALL_BASE(DoorOpen)
105 #define OnDoorClose() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(DoorClose, sDoorMsg)
106 #define DefaultOnDoorClose() SCRIPT_CALL_BASE(DoorClose)
107 #define OnDoorOpening() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(DoorOpening, sDoorMsg)
108 #define DefaultOnDoorOpening() SCRIPT_CALL_BASE(DoorOpening)
109 #define OnDoorClosing() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(DoorClosing, sDoorMsg)
110 #define DefaultOnDoorClosing() SCRIPT_CALL_BASE(DoorClosing)
111 #define OnDoorHalt() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(DoorHalt, sDoorMsg)
112 #define DefaultOnDoorHalt() SCRIPT_CALL_BASE(DoorHalt)
115 ////////////////////////////////////////
117 // The base room script
122 BEGIN_SCRIPT(Door
, RootScript
)
126 SCRIPT_DEFINE_MESSAGE_DEFAULT_(DoorOpen
, sDoorMsg
)
127 SCRIPT_DEFINE_MESSAGE_DEFAULT_(DoorClose
, sDoorMsg
)
128 SCRIPT_DEFINE_MESSAGE_DEFAULT_(DoorOpening
, sDoorMsg
)
129 SCRIPT_DEFINE_MESSAGE_DEFAULT_(DoorClosing
, sDoorMsg
)
130 SCRIPT_DEFINE_MESSAGE_DEFAULT_(DoorHalt
, sDoorMsg
)
132 SCRIPT_BEGIN_MESSAGE_MAP()
133 SCRIPT_MSG_MAP_ENTRY(DoorOpen
)
134 SCRIPT_MSG_MAP_ENTRY(DoorClose
)
135 SCRIPT_MSG_MAP_ENTRY(DoorOpening
)
136 SCRIPT_MSG_MAP_ENTRY(DoorClosing
)
137 SCRIPT_MSG_MAP_ENTRY(DoorHalt
)
138 SCRIPT_END_MESSAGE_MAP()