2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
6 // $Header: r:/t2repos/thief2/src/script/rooscrpt.h,v 1.4 1999/04/13 19:02:43 Justin Exp $
18 //////////////////////////////////////
20 // MESSAGES: Room services
21 // RoomEnter, RoomExit, for Player, RemotePlayer, Creature, or Object
25 struct sRoomMsg
: public sScrMsg
32 kRoomChangeSpaceWasterJoy
=0xffffffff
42 kObjTypeSpaceWasterJoy
=0xffffffff
45 // ObjId's for the act
50 // data about what is going on in the message
52 eRoomChange TransitionType
;
54 // the default empty constructor generates a null message
55 // the idea is if there are problems with this, we find them because the type
56 // will be null, then we go determine whose "fault" it is, and fix it
57 // scripts can check for null, but i think we'd like them not to?
61 // We have to deal with these messages on the proxies, since
62 // script networking doesn't yet cope with extended msgs
63 flags
|= kSMF_MsgSendToProxy
;
66 sRoomMsg(ObjID froom
, ObjID toroom
, ObjID moveobj
, eObjType objt
, eRoomChange transt
)
67 : FromObjId(froom
), ToObjId(toroom
), MoveObjId(moveobj
), ObjType(objt
), TransitionType(transt
)
69 static char *room_msg_names
[4][2]=
71 { "PlayerRoomEnter", "PlayerRoomExit" },
72 { "RemotePlayerRoomEnter", "RemotePlayerRoomExit" },
73 { "CreatureRoomEnter", "CreatureRoomExit" },
74 { "ObjectRoomEnter", "ObjectRoomExit" },
76 // now setup the base scrMsg fields
77 to
=(transt
==kEnter
)?toroom
:froom
;
78 free((void *)message
);
79 message
=strdup(room_msg_names
[objt
][transt
]);
80 // We have to deal with these messages on the proxies, since
81 // script networking doesn't yet cope with extended msgs
82 flags
|= kSMF_MsgSendToProxy
;
85 sRoomMsg(ObjID froom
, ObjID toroom
, ObjID moveobj
, eObjType objt
)
86 : sScrMsg(moveobj
,"ObjRoomTransit"),
87 FromObjId(froom
), ToObjId(toroom
), MoveObjId(moveobj
), ObjType(objt
), TransitionType(kRoomTransit
)
89 // We have to deal with these messages on the proxies, since
90 // script networking doesn't yet cope with extended msgs
91 flags
|= kSMF_MsgSendToProxy
;
94 DECLARE_SCRMSG_PERSISTENT();
98 #define OnPlayerRoomEnter() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(PlayerRoomEnter,sRoomMsg)
99 #define DefaultOnPlayerRoomEnter() SCRIPT_CALL_BASE(PlayerRoomEnter)
100 #define OnPlayerRoomExit() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(PlayerRoomExit,sRoomMsg)
101 #define DefaultOnPlayerRoomExit() SCRIPT_CALL_BASE(PlayerRoomExit)
102 #define OnRemotePlayerRoomEnter() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(RemotePlayerRoomEnter,sRoomMsg)
103 #define DefaultOnRemotePlayerRoomEnter() SCRIPT_CALL_BASE(RemotePlayerRoomEnter)
104 #define OnRemotePlayerRoomExit() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(RemotePlayerRoomExit,sRoomMsg)
105 #define DefaultOnRemotePlayerRoomExit() SCRIPT_CALL_BASE(RemotePlayerRoomExit)
106 #define OnCreatureRoomEnter() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(CreatureRoomEnter,sRoomMsg)
107 #define DefaultOnCreatureRoomEnter() SCRIPT_CALL_BASE(CreatureRoomEnter)
108 #define OnCreatureRoomExit() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(CreatureRoomExit,sRoomMsg)
109 #define DefaultOnCreatureRoomExit() SCRIPT_CALL_BASE(CreatureRoomExit)
110 #define OnObjectRoomEnter() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(ObjectRoomEnter,sRoomMsg)
111 #define DefaultOnObjectRoomEnter() SCRIPT_CALL_BASE(ObjectRoomEnter)
112 #define OnObjectRoomExit() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(ObjectRoomExit,sRoomMsg)
113 #define DefaultOnObjectRoomExit() SCRIPT_CALL_BASE(ObjectRoomExit)
114 #define OnObjRoomTransit() SCRIPT_MESSAGE_HANDLER_SIGNATURE_(ObjRoomTransit,sRoomMsg)
115 #define DefaultOnObjRoomTransit() SCRIPT_CALL_BASE(ObjRoomTransit)
118 // DECLARE_SCRIPT_SERVICE(Rooms, 0xf0)
121 // the base room script
125 BEGIN_SCRIPT(Room
, RootScript
)
129 SCRIPT_DEFINE_MESSAGE_DEFAULT_(PlayerRoomEnter
,sRoomMsg
)
130 SCRIPT_DEFINE_MESSAGE_DEFAULT_(PlayerRoomExit
,sRoomMsg
)
131 SCRIPT_DEFINE_MESSAGE_DEFAULT_(RemotePlayerRoomEnter
,sRoomMsg
)
132 SCRIPT_DEFINE_MESSAGE_DEFAULT_(RemotePlayerRoomExit
,sRoomMsg
)
133 SCRIPT_DEFINE_MESSAGE_DEFAULT_(CreatureRoomEnter
,sRoomMsg
)
134 SCRIPT_DEFINE_MESSAGE_DEFAULT_(CreatureRoomExit
,sRoomMsg
)
135 SCRIPT_DEFINE_MESSAGE_DEFAULT_(ObjectRoomEnter
,sRoomMsg
)
136 SCRIPT_DEFINE_MESSAGE_DEFAULT_(ObjectRoomExit
,sRoomMsg
)
137 SCRIPT_DEFINE_MESSAGE_DEFAULT_(ObjRoomTransit
,sRoomMsg
)
139 SCRIPT_BEGIN_MESSAGE_MAP()
140 SCRIPT_MSG_MAP_ENTRY(PlayerRoomEnter
)
141 SCRIPT_MSG_MAP_ENTRY(PlayerRoomExit
)
142 SCRIPT_MSG_MAP_ENTRY(RemotePlayerRoomEnter
)
143 SCRIPT_MSG_MAP_ENTRY(RemotePlayerRoomExit
)
144 SCRIPT_MSG_MAP_ENTRY(CreatureRoomEnter
)
145 SCRIPT_MSG_MAP_ENTRY(CreatureRoomExit
)
146 SCRIPT_MSG_MAP_ENTRY(ObjectRoomEnter
)
147 SCRIPT_MSG_MAP_ENTRY(ObjectRoomExit
)
148 SCRIPT_MSG_MAP_ENTRY(ObjRoomTransit
)
149 SCRIPT_END_MESSAGE_MAP()
155 #endif // __ROOSCRPT_H