convert line ends
[canaan.git] / prj / cam / src / script / drscrpt.h
blobb195ed78f4da09098d099286aa8c3cb44a763d05
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.h,v 1.10 2000/02/24 13:46:54 patmac Exp $
8 //
10 #ifndef __DRSCRPT_H
11 #define __DRSCRPT_H
13 #pragma once
15 #include <scrptmsg.h>
16 #include <objtype.h>
17 #include <objscrt.h>
19 #include <doorphys.h>
21 //////////////////////////////////////
23 // Services
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
38 // or opening).
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 //////////////////////////////////////
50 // Messages
52 // DoorOpen, DoorClose, DoorOpening, DoorClosing
54 #define kDoorMsgVer 1
56 struct sDoorMsg : public sScrMsg
58 enum eDoorAction
60 kOpen = 0x00000000,
61 kClose,
62 kOpening,
63 kClosing,
64 kHalt,
65 kToMakeBig = 0xFFFFFFFF
68 // what the deal is
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
74 // be FALSE.
75 BOOL isProxy;
77 sDoorMsg()
81 // real constructor
82 sDoorMsg(ObjID obj_to, eDoorAction action, eDoorAction prev_action,
83 BOOL proxy)
84 : ActionType(action),
85 PrevActionType(prev_action),
86 isProxy(proxy)
88 static char *room_msg_names[5] = { "DoorOpen", "DoorClose", "DoorOpening", "DoorClosing", "DoorHalt" };
90 // setup base scrMsg fields
91 to = obj_to;
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();
102 #ifdef SCRIPT
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)
113 #endif
115 ////////////////////////////////////////
117 // The base room script
120 #ifdef SCRIPT
122 BEGIN_SCRIPT(Door, RootScript)
124 MESSAGE_DEFS:
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()
140 END_SCRIPT(Door)
142 #endif
144 #endif