convert line ends
[canaan.git] / prj / cam / src / ai / aicnvman.h
blob3ea038b7eed083eb7e900f9785c9f746bae290e2
1 /*
2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
4 */
6 ///////////////////////////////////////////////////////////////////////////////
7 // $Header: r:/t2repos/thief2/src/ai/aicnvman.h,v 1.4 1998/11/09 02:37:58 mahk Exp $
8 //
9 // AI Conversation Manager
12 #ifndef __AICNVMAN_H
13 #define __AICNVMAN_H
15 #include <comtools.h>
16 #include <dlist.h>
18 #include <aicnvapi.h>
20 #include <objtype.h>
22 enum eAIConvActor;
24 #pragma once
25 #pragma pack(4)
27 ///////////////////////////////////////////////////////////////////////////////
28 // The conversation manager
30 typedef cContainerDList<IAIConversation*, 0> cConversationList;
31 typedef cContDListNode<IAIConversation*, 0> cConversationNode;
33 typedef cContainerDList<tConversationListener, 0> cConversationListenerList;
34 typedef cContDListNode<tConversationListener, 0> cConversationListenerNode;
36 class cAIConversationManager: public cCTUnaggregated<IAIConversationManager, &IID_IAIConversationManager, kCTU_Default>
38 public:
39 cAIConversationManager();
40 ~cAIConversationManager();
42 STDMETHOD_(BOOL, Start)(ObjID conversationID);
44 STDMETHOD_(void, SetActorObj)(ObjID conversationID, int actorID, ObjID objID);
45 STDMETHOD_(BOOL, GetActorObj)(ObjID conversationID, int actorID, ObjID* pObjID);
46 STDMETHOD_(void, RemoveActorObj)(ObjID conversationID, int actorID);
47 STDMETHOD_(int, GetNumActors)(ObjID conversationID) {return GetActorIDs(conversationID, NULL);}
48 STDMETHOD_(int, GetActorIDs)(ObjID conversationID, int *pActorIDs);
50 STDMETHOD_(void, Frame)(void);
52 // install conversation end listener
53 STDMETHOD_(void, ListenConversationEnd)(tConversationListener listener);
55 // callback from conversations
56 STDMETHOD_(void, NotifyConversationEnd)(ObjID conversationID);
58 // Save/load all ongoing conversations.
59 STDMETHOD_(void, Save)(ITagFile *pTagFile);
60 STDMETHOD_(void, Load)(ITagFile *pTagFile);
62 // Reset the database
63 STDMETHOD(Reset)();
65 protected:
66 unsigned NumSavableConversations();
67 BOOL HasConversation(ObjID convObj);
69 private:
70 BOOL CheckActors(ObjID conversationID);
71 cConversationList m_convList;
72 cConversationListenerList m_convListenerList;
75 #pragma pack()
77 #endif /* !__AICNVMAN_H */