00001
00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023
00024
00025 #include "nel/ai/agent/agent_local_mailer.h"
00026 #include "nel/ai/script/interpret_object_message.h"
00027 #include "nel/ai/agent/agent_digital.h"
00028
00029 namespace NLAIAGENT
00030 {
00031 CLocalAgentMail::CLocalAgentMail(IBasicAgent *host):IAgent(NULL)
00032 {
00033 _HostAgent = host;
00034
00035 }
00036
00037 CLocalAgentMail::~CLocalAgentMail()
00038 {
00039 00040 00041 00042 00043 00044 00045 00046 00047
00048 }
00049
00050 void CLocalAgentMail::runChildren()
00051 {
00052
00053 }
00054 void CLocalAgentMail::processMessages()
00055 {
00056 }
00057 void CLocalAgentMail::onKill(IConnectIA *a)
00058 {
00059
00060
00061 }
00062
00063 tQueue CLocalAgentMail::isMember(const IVarName *h,const IVarName *m,const IObjectIA &p) const
00064 {
00065 if(_HostAgent)
00066 {
00067 return _HostAgent->isMember(h,m,p);
00068 }
00069 else
00070 {
00071 const NLAIAGENT::IObjectIA *cl = (const NLAIAGENT::IObjectIA *)(IAgent::IdAgent.getFactory())->getClass();
00072 return cl->isMember(h,m,p);
00073 }
00074 }
00075
00076
00077 IObjectIA::CProcessResult CLocalAgentMail::sendMessage(IObjectIA *m)
00078 {
00079 IMessageBase *msg = (IMessageBase *)m;
00080
00081 if(NLAISCRIPT::CMsgNotifyParentClass::IdMsgNotifyParentClass == msg->getType() )
00082 {
00083 const INombreDefine *n = (const INombreDefine *)msg->getFront();
00084 if(n->getNumber() != 0.0)
00085 {
00086 const CLocalAgentMail *parent = (const CLocalAgentMail *)msg->get();
00087 setParent((const IWordNumRef *)*parent->getHost());
00088 }
00089 return IObjectIA::CProcessResult();
00090 }
00091 else
00092 {
00093 return ((IObjectIA *)_HostAgent)->sendMessage(msg);
00094 }
00095 }
00096
00097 }