CEL

Public API Reference

Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members

questmanager.h

00001 /*
00002     Crystal Space Entity Layer
00003     Copyright (C) 2004 by Jorrit Tyberghein
00004   
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009   
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014   
00015     You should have received a copy of the GNU Library General Public
00016     License along with this library; if not, write to the Free
00017     Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00018 */
00019 
00020 #ifndef __CEL_MGR_QUEST__
00021 #define __CEL_MGR_QUEST__
00022 
00023 #include "cstypes.h"
00024 #include "csutil/scf.h"
00025 #include "csutil/hash.h"
00026 #include "csgeom/vector3.h"
00027 
00028 struct iDocumentNode;
00029 struct iChangePropertyQuestRewardFactory;
00030 struct iCelDataBuffer;
00031 struct iQuest;
00032 
00033 /*
00034 <quest name="test">
00035     <state name="notstarted">
00036     </state>
00037 
00038     <state name="start">
00039         <trigger type="ininventory">
00040             <fireon entity="$actor_entity" new_entity="computer_part" />
00041             <reward type="newstate" state="state2" />
00042             <reward type="increasestats" statname="HP" value="3" />
00043         </trigger>
00044         <trigger type="objectdestroyed">
00045             <fireon entity="barrel" />
00046             <reward type="newstate" state="finalstate" />
00047             <reward type="increasestats" statname="HP" value="10" />
00048         </trigger>
00049     </state>
00050 
00051     <state name="state2">
00052         <trigger type="clickonentity">
00053             <fireon entity="" />
00054         </trigger>
00055         <trigger type="cel.questtrigger.entersector">
00056             <fireon entity="player" sector="room" />
00057         </trigger>
00058     </state>
00059 
00060     <sequence name="seqTest">
00061         <op type="movemesh" duration="2000" entity="door"
00062                 x="0" y="4" z="0" />
00063         <op type="lightcolor" duration="2000" entity="lightbulb"
00064                 red="1" green="1" blue="1" />
00065         <delay time="2000" />
00066     </sequence>
00067 
00068     <start>notstarted</start>
00069 </quest>
00070 */
00071 
00072 typedef csHash<csStrKey,csStrKey> celQuestParams;
00073 
00074 //-------------------------------------------------------------------------
00075 // Triggers
00076 //-------------------------------------------------------------------------
00077 
00078 struct iQuestTrigger;
00079 
00080 SCF_VERSION (iQuestTriggerCallback, 0, 0, 1);
00081 
00088 struct iQuestTriggerCallback : public iBase
00089 {
00091   virtual void TriggerFired (iQuestTrigger* trigger) = 0;
00092 };
00093 
00094 SCF_VERSION (iQuestTrigger, 0, 0, 1);
00095 
00108 struct iQuestTrigger : public iBase
00109 {
00114   virtual void RegisterCallback (iQuestTriggerCallback* callback) = 0;
00115 
00119   virtual void ClearCallback () = 0;
00120 
00124   virtual void ActivateTrigger () = 0;
00125 
00129   virtual void DeactivateTrigger () = 0;
00130 
00136   virtual bool Check () = 0;
00137 
00143   virtual bool LoadAndActivateTrigger (iCelDataBuffer* databuf) = 0;
00144 
00148   virtual void SaveTriggerState (iCelDataBuffer* databuf) = 0;
00149 };
00150 
00151 SCF_VERSION (iQuestTriggerFactory, 0, 0, 1);
00152 
00157 struct iQuestTriggerFactory : public iBase
00158 {
00165   virtual csPtr<iQuestTrigger> CreateTrigger (iQuest* quest,
00166         const celQuestParams& params) = 0;
00167 
00173   virtual bool Load (iDocumentNode* node) = 0;
00174 };
00175 
00176 SCF_VERSION (iQuestTriggerType, 0, 0, 1);
00177 
00185 struct iQuestTriggerType : public iBase
00186 {
00190   virtual const char* GetName () const = 0;
00191   
00195   virtual csPtr<iQuestTriggerFactory> CreateTriggerFactory () = 0;
00196 };
00197 
00198 //-------------------------------------------------------------------------
00199 // Rewards
00200 //-------------------------------------------------------------------------
00201 
00202 SCF_VERSION (iQuestReward, 0, 0, 1);
00203 
00211 struct iQuestReward : public iBase
00212 {
00216   virtual void Reward () = 0;
00217 };
00218 
00219 SCF_VERSION (iQuestRewardFactory, 0, 0, 1);
00220 
00225 struct iQuestRewardFactory : public iBase
00226 {
00233   virtual csPtr<iQuestReward> CreateReward (iQuest* quest,
00234         const celQuestParams& params) = 0;
00235 
00241   virtual bool Load (iDocumentNode* node) = 0;
00242 };
00243 
00244 SCF_VERSION (iQuestRewardType, 0, 0, 1);
00245 
00253 struct iQuestRewardType : public iBase
00254 {
00258   virtual const char* GetName () const = 0;
00259   
00263   virtual csPtr<iQuestRewardFactory> CreateRewardFactory () = 0;
00264 };
00265 
00266 //-------------------------------------------------------------------------
00267 // Sequence operations
00268 //-------------------------------------------------------------------------
00269 
00270 SCF_VERSION (iQuestSeqOp, 0, 0, 1);
00271 
00278 struct iQuestSeqOp : public iBase
00279 {
00286   virtual void Init () = 0;
00287 
00291   virtual bool Load (iCelDataBuffer* databuf) = 0;
00292 
00296   virtual void Save (iCelDataBuffer* databuf) = 0;
00297 
00303   virtual void Do (float time) = 0;
00304 };
00305 
00306 SCF_VERSION (iQuestSeqOpFactory, 0, 0, 1);
00307 
00312 struct iQuestSeqOpFactory : public iBase
00313 {
00319   virtual csPtr<iQuestSeqOp> CreateSeqOp (const celQuestParams& params) = 0;
00320 
00326   virtual bool Load (iDocumentNode* node) = 0;
00327 };
00328 
00329 SCF_VERSION (iQuestSeqOpType, 0, 0, 1);
00330 
00338 struct iQuestSeqOpType : public iBase
00339 {
00343   virtual const char* GetName () const = 0;
00344   
00348   virtual csPtr<iQuestSeqOpFactory> CreateSeqOpFactory () = 0;
00349 };
00350 
00351 struct iQuestSequence;
00352 
00353 SCF_VERSION (iQuestSequenceCallback, 0, 0, 1);
00354 
00359 struct iQuestSequenceCallback : public iBase
00360 {
00362   virtual void SequenceFinished (iQuestSequence* sequence) = 0;
00363 };
00364 
00365 SCF_VERSION (iQuestSequence, 0, 0, 1);
00366 
00370 struct iQuestSequence : public iBase
00371 {
00375   virtual const char* GetName () const = 0;
00376 
00382   virtual bool Start (csTicks delay) = 0;
00383 
00390   virtual void Finish () = 0;
00391 
00397   virtual void Abort () = 0;
00398 
00402   virtual bool IsRunning () = 0;
00403 
00407   virtual void AddSequenceCallback (iQuestSequenceCallback* cb) = 0;
00411   virtual void RemoveSequenceCallback (iQuestSequenceCallback* cb) = 0;
00412 };
00413 
00414 //-------------------------------------------------------------------------
00415 // The Quest
00416 //-------------------------------------------------------------------------
00417 
00418 SCF_VERSION (iQuest, 0, 0, 1);
00419 
00424 struct iQuest : public iBase
00425 {
00430   virtual bool SwitchState (const char* state) = 0;
00431 
00435   virtual const char* GetCurrentState () const = 0;
00436 
00442   virtual bool LoadState (const char* state, iCelDataBuffer* databuf) = 0;
00443 
00448   virtual void SaveState (iCelDataBuffer* databuf) = 0;
00449 
00453   virtual iQuestSequence* FindSequence (const char* name) = 0;
00454 };
00455 
00456 SCF_VERSION (iQuestTriggerResponseFactory, 0, 0, 1);
00457 
00463 struct iQuestTriggerResponseFactory : public iBase
00464 {
00469   virtual void SetTriggerFactory (iQuestTriggerFactory* trigger_fact) = 0;
00470 
00475   virtual void AddRewardFactory (iQuestRewardFactory* reward_fact) = 0;
00476 };
00477 
00478 SCF_VERSION (iQuestStateFactory, 0, 0, 1);
00479 
00484 struct iQuestStateFactory : public iBase
00485 {
00489   virtual const char* GetName () const = 0;
00490 
00494   virtual iQuestTriggerResponseFactory* CreateTriggerResponseFactory () = 0;
00495 };
00496 
00497 SCF_VERSION (iQuestSequenceFactory, 0, 0, 1);
00498 
00503 struct iQuestSequenceFactory : public iBase
00504 {
00508   virtual const char* GetName () const = 0;
00509 
00515   virtual bool Load (iDocumentNode* node) = 0;
00516 
00524   virtual void AddSeqOpFactory (iQuestSeqOpFactory* seqopfact,
00525         const char* duration) = 0;
00526 
00531   virtual void AddDelay (const char* delay) = 0;
00532 };
00533 
00534 SCF_VERSION (iQuestFactory, 0, 0, 1);
00535 
00550 struct iQuestFactory : public iBase
00551 {
00555   virtual const char* GetName () const = 0;
00556   
00564   virtual csPtr<iQuest> CreateQuest (const celQuestParams& params) = 0;
00565 
00571   virtual bool Load (iDocumentNode* node) = 0;
00572 
00577   virtual iQuestStateFactory* GetState (const char* name) = 0;
00578 
00583   virtual iQuestStateFactory* CreateState (const char* name) = 0;
00584 
00589   virtual iQuestSequenceFactory* GetSequence (const char* name) = 0;
00590 
00595   virtual iQuestSequenceFactory* CreateSequence (const char* name) = 0;
00596 };
00597 
00598 //-------------------------------------------------------------------------
00599 // The Quest Manager
00600 //-------------------------------------------------------------------------
00601 
00602 SCF_VERSION (iQuestManager, 0, 0, 1);
00603 
00609 struct iQuestManager : public iBase
00610 {
00638   virtual bool RegisterTriggerType (iQuestTriggerType* trigger) = 0;
00639 
00644   virtual iQuestTriggerType* GetTriggerType (const char* name) = 0;
00645 
00669   virtual bool RegisterRewardType (iQuestRewardType* trigger) = 0;
00670 
00675   virtual iQuestRewardType* GetRewardType (const char* name) = 0;
00676 
00696   virtual bool RegisterSeqOpType (iQuestSeqOpType* seqop) = 0;
00697 
00702   virtual iQuestSeqOpType* GetSeqOpType (const char* name) = 0;
00703 
00707   virtual iQuestFactory* GetQuestFactory (const char* name) = 0;
00708 
00714   virtual iQuestFactory* CreateQuestFactory (const char* name) = 0;
00715 
00723   virtual const char* ResolveParameter (
00724         const celQuestParams& params,
00725         const char* param) = 0;
00726 
00732   virtual bool Load (iDocumentNode* node) = 0;
00733 
00738   virtual iQuestRewardFactory* AddNewStateReward (
00739         iQuestTriggerResponseFactory* response,
00740         const char* entity_par, const char* state_par) = 0;
00741 
00746   virtual iQuestRewardFactory* AddDebugPrintReward (
00747         iQuestTriggerResponseFactory* response,
00748         const char* msg_par) = 0;
00749 
00754   virtual iQuestRewardFactory* AddInventoryReward (
00755         iQuestTriggerResponseFactory* response,
00756         const char* entity_par, const char* child_entity_par) = 0;
00757 
00762   virtual iQuestRewardFactory* AddSequenceReward (
00763         iQuestTriggerResponseFactory* response,
00764         const char* entity_par, const char* sequence_par,
00765         const char* delay_par) = 0;
00766 
00771   virtual iQuestRewardFactory* AddSequenceFinishReward (
00772         iQuestTriggerResponseFactory* response,
00773         const char* entity_par, const char* sequence_par) = 0;
00774 
00780   virtual iChangePropertyQuestRewardFactory* AddChangePropertyReward (
00781         iQuestTriggerResponseFactory* response,
00782         const char* entity_par, const char* prop_par) = 0;
00783 
00788   virtual iQuestTriggerFactory* SetTimeoutTrigger (
00789         iQuestTriggerResponseFactory* response,
00790         const char* timeout_par) = 0;
00791 
00796   virtual iQuestTriggerFactory* SetEnterSectorTrigger (
00797         iQuestTriggerResponseFactory* response,
00798         const char* entity_par, const char* sector_par) = 0;
00799 
00804   virtual iQuestTriggerFactory* SetMeshEnterSectorTrigger (
00805         iQuestTriggerResponseFactory* response,
00806         const char* entity_par, const char* sector_par) = 0;
00807 
00812   virtual iQuestTriggerFactory* SetSequenceFinishTrigger (
00813         iQuestTriggerResponseFactory* response,
00814         const char* entity_par, const char* sequence_par) = 0;
00815 
00820   virtual iQuestTriggerFactory* SetPropertyChangeTrigger (
00821         iQuestTriggerResponseFactory* response,
00822         const char* entity_par, const char* prop_par,
00823         const char* value_par) = 0;
00824 
00829   virtual iQuestTriggerFactory* SetTriggerTrigger (
00830         iQuestTriggerResponseFactory* response,
00831         const char* entity_par, bool do_leave = false) = 0;
00832 };
00833 
00834 //-------------------------------------------------------------------------
00835 // Specific trigger implementations.
00836 //-------------------------------------------------------------------------
00837 
00838 SCF_VERSION (iTimeoutQuestTriggerFactory, 0, 0, 1);
00839 
00854 struct iTimeoutQuestTriggerFactory : public iBase
00855 {
00861   virtual void SetTimeoutParameter (const char* timeout_par) = 0;
00862 };
00863 
00864 SCF_VERSION (iPropertyChangeQuestTriggerFactory, 0, 0, 1);
00865 
00886 struct iPropertyChangeQuestTriggerFactory : public iBase
00887 {
00896   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
00897 
00903   virtual void SetPropertyParameter (const char* prop) = 0;
00904 
00909   virtual void SetValueParameter (const char* value) = 0;
00910 };
00911 
00912 SCF_VERSION (iMeshSelectQuestTriggerFactory, 0, 0, 1);
00913 
00932 struct iMeshSelectQuestTriggerFactory : public iBase
00933 {
00942   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
00943 };
00944 
00945 SCF_VERSION (iInventoryQuestTriggerFactory, 0, 0, 1);
00946 
00966 struct iInventoryQuestTriggerFactory : public iBase
00967 {
00976   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
00977 
00983   virtual void SetChildEntityParameter (const char* child_entity) = 0;
00984 };
00985 
00986 SCF_VERSION (iEnterSectorQuestTriggerFactory, 0, 0, 1);
00987 
01010 struct iEnterSectorQuestTriggerFactory : public iBase
01011 {
01020   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01021 
01028   virtual void SetSectorParameter (const char* sector) = 0;
01029 };
01030 
01031 SCF_VERSION (iSequenceFinishQuestTriggerFactory, 0, 0, 1);
01032 
01052 struct iSequenceFinishQuestTriggerFactory : public iBase
01053 {
01062   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01063 
01069   virtual void SetSequenceParameter (const char* sequence) = 0;
01070 };
01071 
01091 struct iTriggerQuestTriggerFactory : public iBase
01092 {
01101   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01102 
01107   virtual void EnableLeave () = 0;
01108 };
01109 
01110 //-------------------------------------------------------------------------
01111 // Specific reward implementations.
01112 //-------------------------------------------------------------------------
01113 
01114 SCF_VERSION (iDebugPrintQuestRewardFactory, 0, 0, 1);
01115 
01130 struct iDebugPrintQuestRewardFactory : public iBase
01131 {
01136   virtual void SetMessageParameter (const char* msg) = 0;
01137 };
01138 
01139 SCF_VERSION (iNewStateQuestRewardFactory, 0, 0, 1);
01140 
01159 struct iNewStateQuestRewardFactory : public iBase
01160 {
01167   virtual void SetStateParameter (const char* state) = 0;
01168 
01177   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01178 };
01179 
01180 SCF_VERSION (iChangePropertyQuestRewardFactory, 0, 0, 1);
01181 
01208 struct iChangePropertyQuestRewardFactory : public iBase
01209 {
01216   virtual void SetEntityParameter (const char* entity) = 0;
01217 
01227   virtual void SetPCParameter (const char* pc, const char* tag) = 0;
01228 
01234   virtual void SetPropertyParameter (const char* prop) = 0;
01235 
01240   virtual void SetStringParameter (const char* pstring) = 0;
01241 
01246   virtual void SetLongParameter (const char* plong) = 0;
01247 
01252   virtual void SetFloatParameter (const char* pfloat) = 0;
01253 
01258   virtual void SetBoolParameter (const char* pbool) = 0;
01259 
01264   virtual void SetDiffParameter (const char* pdiff) = 0;
01265 
01269   virtual void SetToggle () = 0;
01270 };
01271 
01272 SCF_VERSION (iInventoryQuestRewardFactory, 0, 0, 1);
01273 
01295 struct iInventoryQuestRewardFactory : public iBase
01296 {
01305   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01306 
01312   virtual void SetChildEntityParameter (const char* entity,
01313         const char* tag = 0) = 0;
01314 
01315 };
01316 
01317 SCF_VERSION (iSequenceQuestRewardFactory, 0, 0, 1);
01318 
01337 struct iSequenceQuestRewardFactory : public iBase
01338 {
01347   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01348 
01354   virtual void SetSequenceParameter (const char* sequence) = 0;
01355 
01360   virtual void SetDelayParameter (const char* delay) = 0;
01361 };
01362 
01363 SCF_VERSION (iSequenceFinishQuestRewardFactory, 0, 0, 1);
01364 
01382 struct iSequenceFinishQuestRewardFactory : public iBase
01383 {
01392   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01393 
01399   virtual void SetSequenceParameter (const char* sequence) = 0;
01400 };
01401 
01402 //-------------------------------------------------------------------------
01403 // Specific sequence operation implementations.
01404 //-------------------------------------------------------------------------
01405 
01406 SCF_VERSION (iDebugPrintQuestSeqOpFactory, 0, 0, 1);
01407 
01422 struct iDebugPrintQuestSeqOpFactory : public iBase
01423 {
01428   virtual void SetMessageParameter (const char* msg) = 0;
01429 };
01430 
01431 SCF_VERSION (iTransformQuestSeqOpFactory, 0, 0, 1);
01432 
01458 struct iTransformQuestSeqOpFactory : public iBase
01459 {
01466   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01467 
01471   virtual void SetVectorParameter (const char* vectorx, const char* vectory,
01472         const char* vectorz) = 0;
01473 
01479   virtual void SetRotationParameter (int rot_axis, const char* rot_angle) = 0;
01480 };
01481 
01482 SCF_VERSION (iMovePathQuestSeqOpFactory, 0, 0, 1);
01483 
01505 struct iMovePathQuestSeqOpFactory : public iBase
01506 {
01513   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01514 
01524   virtual void AddPathNode (const char* sectorname, const char* node,
01525         const char* time) = 0;
01526 };
01527 
01528 SCF_VERSION (iLightQuestSeqOpFactory, 0, 0, 1);
01529 
01552 struct iLightQuestSeqOpFactory : public iBase
01553 {
01560   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01561 
01565   virtual void SetRelColorParameter (const char* red, const char* green,
01566         const char* blue) = 0;
01567 
01571   virtual void SetAbsColorParameter (const char* red, const char* green,
01572         const char* blue) = 0;
01573 };
01574 
01575 //-------------------------------------------------------------------------
01576 
01580 #define CEL_DECLARE_REWARDTYPE(name,id)                                 \
01581 class cel##name##RewardType : public iQuestRewardType                   \
01582 {                                                                       \
01583 public:                                                                 \
01584   iObjectRegistry* object_reg;                                          \
01585   cel##name##RewardType (iObjectRegistry* object_reg);                  \
01586   virtual ~cel##name##RewardType ();                                    \
01587   SCF_DECLARE_IBASE;                                                    \
01588   virtual const char* GetName () const { return id; }                   \
01589   virtual csPtr<iQuestRewardFactory> CreateRewardFactory ();            \
01590 };
01591 
01595 #define CEL_IMPLEMENT_REWARDTYPE(name)                                  \
01596 SCF_IMPLEMENT_IBASE (cel##name##RewardType)                             \
01597   SCF_IMPLEMENTS_INTERFACE (iQuestRewardType)                           \
01598 SCF_IMPLEMENT_IBASE_END                                                 \
01599 cel##name##RewardType::cel##name##RewardType (                          \
01600         iObjectRegistry* object_reg)                                    \
01601 {                                                                       \
01602   SCF_CONSTRUCT_IBASE (0);                                              \
01603   cel##name##RewardType::object_reg = object_reg;                       \
01604 }                                                                       \
01605 cel##name##RewardType::~cel##name##RewardType ()                        \
01606 {                                                                       \
01607   SCF_DESTRUCT_IBASE ();                                                \
01608 }                                                                       \
01609 csPtr<iQuestRewardFactory> cel##name##RewardType::CreateRewardFactory ()\
01610 {                                                                       \
01611   cel##name##RewardFactory* fact = new                                  \
01612         cel##name##RewardFactory (this);                                \
01613   return fact;                                                          \
01614 }
01615 
01619 #define CEL_DECLARE_TRIGGERTYPE(name,id)                                \
01620 class cel##name##TriggerType : public iQuestTriggerType                 \
01621 {                                                                       \
01622 public:                                                                 \
01623   iObjectRegistry* object_reg;                                          \
01624   cel##name##TriggerType (iObjectRegistry* object_reg);                 \
01625   virtual ~cel##name##TriggerType ();                                   \
01626   SCF_DECLARE_IBASE;                                                    \
01627   virtual const char* GetName () const { return id; }                   \
01628   virtual csPtr<iQuestTriggerFactory> CreateTriggerFactory ();          \
01629 };
01630 
01634 #define CEL_IMPLEMENT_TRIGGERTYPE(name)                                 \
01635 SCF_IMPLEMENT_IBASE (cel##name##TriggerType)                            \
01636   SCF_IMPLEMENTS_INTERFACE (iQuestTriggerType)                          \
01637 SCF_IMPLEMENT_IBASE_END                                                 \
01638 cel##name##TriggerType::cel##name##TriggerType (                        \
01639         iObjectRegistry* object_reg)                                    \
01640 {                                                                       \
01641   SCF_CONSTRUCT_IBASE (0);                                              \
01642   cel##name##TriggerType::object_reg = object_reg;                      \
01643 }                                                                       \
01644 cel##name##TriggerType::~cel##name##TriggerType ()                      \
01645 {                                                                       \
01646   SCF_DESTRUCT_IBASE ();                                                \
01647 }                                                                       \
01648 csPtr<iQuestTriggerFactory> cel##name##TriggerType::CreateTriggerFactory () \
01649 {                                                                       \
01650   cel##name##TriggerFactory* fact = new cel##name##TriggerFactory (this); \
01651   return fact;                                                          \
01652 }
01653 
01657 #define CEL_DECLARE_SEQOPTYPE(name,id)                                  \
01658 class cel##name##SeqOpType : public iQuestSeqOpType                     \
01659 {                                                                       \
01660 public:                                                                 \
01661   iObjectRegistry* object_reg;                                          \
01662   cel##name##SeqOpType (iObjectRegistry* object_reg);                   \
01663   virtual ~cel##name##SeqOpType ();                                     \
01664   SCF_DECLARE_IBASE;                                                    \
01665   virtual const char* GetName () const { return id; }                   \
01666   virtual csPtr<iQuestSeqOpFactory> CreateSeqOpFactory ();              \
01667 };
01668 
01672 #define CEL_IMPLEMENT_SEQOPTYPE(name)                                   \
01673 SCF_IMPLEMENT_IBASE (cel##name##SeqOpType)                              \
01674   SCF_IMPLEMENTS_INTERFACE (iQuestSeqOpType)                            \
01675 SCF_IMPLEMENT_IBASE_END                                                 \
01676 cel##name##SeqOpType::cel##name##SeqOpType (                            \
01677         iObjectRegistry* object_reg)                                    \
01678 {                                                                       \
01679   SCF_CONSTRUCT_IBASE (0);                                              \
01680   cel##name##SeqOpType::object_reg = object_reg;                        \
01681 }                                                                       \
01682 cel##name##SeqOpType::~cel##name##SeqOpType ()                          \
01683 {                                                                       \
01684   SCF_DESTRUCT_IBASE ();                                                \
01685 }                                                                       \
01686 csPtr<iQuestSeqOpFactory> cel##name##SeqOpType::CreateSeqOpFactory ()   \
01687 {                                                                       \
01688   cel##name##SeqOpFactory* fact = new cel##name##SeqOpFactory (this);   \
01689   return fact;                                                          \
01690 }
01691 
01692 #endif // __CEL_MGR_QUEST__
01693 

Generated for CEL: Crystal Entity Layer by doxygen 1.4.4