convert line ends
[canaan.git] / prj / cam / src / script / rooscrpt.h
blob72ac4fd8bff609550812f6b5d081be6fbc3ce572
1 /*
2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
4 */
6 // $Header: r:/t2repos/thief2/src/script/rooscrpt.h,v 1.4 1999/04/13 19:02:43 Justin Exp $
7 //
9 #pragma once
11 #ifndef __ROOSCRPT_H
12 #define __ROOSCRPT_H
14 #include <scrptmsg.h>
16 #include <objtype.h>
18 //////////////////////////////////////
20 // MESSAGES: Room services
21 // RoomEnter, RoomExit, for Player, RemotePlayer, Creature, or Object
23 #define kRoomMsgVer 1
25 struct sRoomMsg : public sScrMsg
27 enum eRoomChange
29 kEnter,
30 kExit,
31 kRoomTransit,
32 kRoomChangeSpaceWasterJoy=0xffffffff
35 enum eObjType
37 kPlayer,
38 kRemotePlayer,
39 kCreature,
40 kObject,
41 kNull,
42 kObjTypeSpaceWasterJoy=0xffffffff
45 // ObjId's for the act
46 ObjID FromObjId;
47 ObjID ToObjId;
48 ObjID MoveObjId;
50 // data about what is going on in the message
51 eObjType ObjType;
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?
58 sRoomMsg()
59 : ObjType(kNull)
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();
97 #ifdef SCRIPT
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)
116 #endif
118 // DECLARE_SCRIPT_SERVICE(Rooms, 0xf0)
120 ///////////////
121 // the base room script
123 #ifdef SCRIPT
125 BEGIN_SCRIPT(Room, RootScript)
127 MESSAGE_DEFS:
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()
151 END_SCRIPT(Room)
153 #endif // SCRIPT
155 #endif // __ROOSCRPT_H