Home | nevrax.com |
|
fsm_script.hGo to the documentation of this file.00001 00008 /* Copyright, 2000 Nevrax Ltd. 00009 * 00010 * This file is part of NEVRAX NEL. 00011 * NEVRAX NEL is free software; you can redistribute it and/or modify 00012 * it under the terms of the GNU General Public License as published by 00013 * the Free Software Foundation; either version 2, or (at your option) 00014 * any later version. 00015 00016 * NEVRAX NEL is distributed in the hope that it will be useful, but 00017 * WITHOUT ANY WARRANTY; without even the implied warranty of 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00019 * General Public License for more details. 00020 00021 * You should have received a copy of the GNU General Public License 00022 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00023 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00024 * MA 02111-1307, USA. 00025 */ 00026 00027 #ifndef NL_FSM_SCRIPT_H_ 00028 #define NL_FSM_SCRIPT_H_ 00029 00030 #include "nel/ai/agent/agent.h" 00031 #include "nel/ai/agent/agent_script.h" 00032 #include "nel/ai/agent/agent_manager.h" 00033 #include "nel/ai/logic/bool_cond.h" 00034 #include "nel/ai/script/type_def.h" 00035 #include "nel/ai/script/interpret_fsm.h" 00036 #include "nel/ai/agent/actor_script.h" 00037 00038 namespace NLAIAGENT 00039 { 00040 class CFsmScript : public CActorScript 00041 { 00042 00043 public: 00044 /* 00045 static NLAISCRIPT::COperandSimpleListOr *ParamIdSuccessMsg; 00046 static NLAISCRIPT::CParam *ParamSuccessMsg; 00047 static NLAISCRIPT::COperandSimpleListOr *ParamIdFailureMsg; 00048 static NLAISCRIPT::CParam *ParamFailureMsg; 00049 */ 00050 00051 private: 00052 std::vector<NLAIAGENT::IObjectIA *> _VarValues; // Values of the vars for the instanciated operator 00053 NLAILOGIC::CFactBase *_FactBase; // The father's factbase 00054 00055 std::vector<IBasicAgent *> _ActiveChilds; 00056 00057 public: 00058 // Builds and actor with its father 00059 CFsmScript(IAgentManager *, bool activated = false); 00060 // copy constructor 00061 CFsmScript(const CFsmScript &); 00062 CFsmScript(IAgentManager *, IBasicAgent *, std::list<IObjectIA *> &, NLAISCRIPT::CFsmClass *); 00063 virtual ~CFsmScript(); 00064 00066 // virtual float priority() const; 00067 00068 virtual int getBaseMethodCount() const; 00069 00071 virtual const NLAIC::IBasicType *clone() const; 00072 virtual const NLAIC::IBasicType *newInstance() const; 00073 virtual void getDebugString(std::string &) const; 00074 virtual bool isEqual(const IBasicObjectIA &a) const; 00075 // virtual void processMessages(); 00076 virtual const CProcessResult &run(); 00077 virtual void runChildren(); 00078 00079 // virtual IObjectIA *run(const IMessageBase &msg); 00080 00081 // virtual CProcessResult sendMessage(IObjectIA *); 00082 virtual const NLAIC::CIdentType &getType() const; 00083 00084 static const NLAIC::CIdentType IdFsmScript; 00085 00086 virtual void save(NLMISC::IStream &os); 00087 virtual void load(NLMISC::IStream &is); 00088 00089 // virtual IObjectIA::CProcessResult runMethodBase(int heritance, int index,IObjectIA *); 00090 virtual IObjectIA::CProcessResult runMethodBase(int index,IObjectIA *); 00091 00092 virtual tQueue isMember(const NLAIAGENT::IVarName *, const NLAIAGENT::IVarName *, const IObjectIA &) const; 00093 virtual sint32 getMethodIndexSize() const; 00094 00095 void getFatherComponent(IVarName &); 00096 // virtual void setParent(const IWordNumRef *parent); 00097 00098 virtual void activate(IBasicAgent *); 00099 virtual void unactivate(IBasicAgent *); 00100 /* 00101 static void initClass(); 00102 static void releaseClass(); 00103 */ 00104 00105 virtual void setTopLevel(NLAIAGENT::CAgentScript *); 00106 }; 00107 } 00108 #endif |