tools/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 00601 virtual const char* GetDefaultParameter (const char* name) const = 0; 00602 00607 virtual void SetDefaultParameter (const char* name,const char* value) = 0; 00608 00612 virtual void ClearDefaultParameters () = 0; 00613 00614 }; 00615 00616 //------------------------------------------------------------------------- 00617 // The Quest Manager 00618 //------------------------------------------------------------------------- 00619 00620 SCF_VERSION (iQuestManager, 0, 0, 1); 00621 00627 struct iQuestManager : public iBase 00628 { 00656 virtual bool RegisterTriggerType (iQuestTriggerType* trigger) = 0; 00657 00662 virtual iQuestTriggerType* GetTriggerType (const char* name) = 0; 00663 00693 virtual bool RegisterRewardType (iQuestRewardType* trigger) = 0; 00694 00699 virtual iQuestRewardType* GetRewardType (const char* name) = 0; 00700 00720 virtual bool RegisterSeqOpType (iQuestSeqOpType* seqop) = 0; 00721 00726 virtual iQuestSeqOpType* GetSeqOpType (const char* name) = 0; 00727 00731 virtual iQuestFactory* GetQuestFactory (const char* name) = 0; 00732 00738 virtual iQuestFactory* CreateQuestFactory (const char* name) = 0; 00739 00747 virtual const char* ResolveParameter ( 00748 const celQuestParams& params, 00749 const char* param) = 0; 00750 00756 virtual bool Load (iDocumentNode* node) = 0; 00757 00762 virtual iQuestRewardFactory* AddNewStateReward ( 00763 iQuestTriggerResponseFactory* response, 00764 const char* entity_par, const char* state_par) = 0; 00765 00770 virtual iQuestRewardFactory* AddDebugPrintReward ( 00771 iQuestTriggerResponseFactory* response, 00772 const char* msg_par) = 0; 00773 00778 virtual iQuestRewardFactory* AddInventoryReward ( 00779 iQuestTriggerResponseFactory* response, 00780 const char* entity_par, const char* child_entity_par) = 0; 00781 00786 virtual iQuestRewardFactory* AddSequenceReward ( 00787 iQuestTriggerResponseFactory* response, 00788 const char* entity_par, const char* sequence_par, 00789 const char* delay_par) = 0; 00790 00795 virtual iQuestRewardFactory* AddSequenceFinishReward ( 00796 iQuestTriggerResponseFactory* response, 00797 const char* entity_par, const char* sequence_par) = 0; 00798 00804 virtual iChangePropertyQuestRewardFactory* AddChangePropertyReward ( 00805 iQuestTriggerResponseFactory* response, 00806 const char* entity_par, const char* prop_par) = 0; 00807 00812 virtual iQuestTriggerFactory* SetTimeoutTrigger ( 00813 iQuestTriggerResponseFactory* response, 00814 const char* timeout_par) = 0; 00815 00820 virtual iQuestTriggerFactory* SetEnterSectorTrigger ( 00821 iQuestTriggerResponseFactory* response, 00822 const char* entity_par, const char* sector_par) = 0; 00823 00828 virtual iQuestTriggerFactory* SetMeshEnterSectorTrigger ( 00829 iQuestTriggerResponseFactory* response, 00830 const char* entity_par, const char* sector_par) = 0; 00831 00836 virtual iQuestTriggerFactory* SetSequenceFinishTrigger ( 00837 iQuestTriggerResponseFactory* response, 00838 const char* entity_par, const char* sequence_par) = 0; 00839 00844 virtual iQuestTriggerFactory* SetPropertyChangeTrigger ( 00845 iQuestTriggerResponseFactory* response, 00846 const char* entity_par, const char* prop_par, 00847 const char* value_par) = 0; 00848 00853 virtual iQuestTriggerFactory* SetTriggerTrigger ( 00854 iQuestTriggerResponseFactory* response, 00855 const char* entity_par, bool do_leave = false) = 0; 00856 }; 00857 00858 //------------------------------------------------------------------------- 00859 // Specific trigger implementations. 00860 //------------------------------------------------------------------------- 00861 00862 SCF_VERSION (iTimeoutQuestTriggerFactory, 0, 0, 1); 00863 00878 struct iTimeoutQuestTriggerFactory : public iBase 00879 { 00885 virtual void SetTimeoutParameter (const char* timeout_par) = 0; 00886 }; 00887 00888 SCF_VERSION (iPropertyChangeQuestTriggerFactory, 0, 0, 1); 00889 00912 struct iPropertyChangeQuestTriggerFactory : public iBase 00913 { 00922 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 00923 00929 virtual void SetPropertyParameter (const char* prop) = 0; 00930 00937 virtual void SetValueParameter (const char* value) = 0; 00938 }; 00939 00940 SCF_VERSION (iMeshSelectQuestTriggerFactory, 0, 0, 1); 00941 00960 struct iMeshSelectQuestTriggerFactory : public iBase 00961 { 00970 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 00971 }; 00972 00973 SCF_VERSION (iInventoryQuestTriggerFactory, 0, 0, 1); 00974 00996 struct iInventoryQuestTriggerFactory : public iBase 00997 { 01006 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01007 01015 virtual void SetChildEntityParameter (const char* child_entity) = 0; 01016 }; 01017 01018 SCF_VERSION (iEnterSectorQuestTriggerFactory, 0, 0, 1); 01019 01042 struct iEnterSectorQuestTriggerFactory : public iBase 01043 { 01052 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01053 01060 virtual void SetSectorParameter (const char* sector) = 0; 01061 }; 01062 01063 SCF_VERSION (iSequenceFinishQuestTriggerFactory, 0, 0, 1); 01064 01084 struct iSequenceFinishQuestTriggerFactory : public iBase 01085 { 01094 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01095 01101 virtual void SetSequenceParameter (const char* sequence) = 0; 01102 }; 01103 01123 struct iTriggerQuestTriggerFactory : public iBase 01124 { 01133 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01134 01139 virtual void EnableLeave () = 0; 01140 }; 01141 01142 //------------------------------------------------------------------------- 01143 // Specific reward implementations. 01144 //------------------------------------------------------------------------- 01145 01146 SCF_VERSION (iDebugPrintQuestRewardFactory, 0, 0, 1); 01147 01162 struct iDebugPrintQuestRewardFactory : public iBase 01163 { 01168 virtual void SetMessageParameter (const char* msg) = 0; 01169 }; 01170 01171 SCF_VERSION (iNewStateQuestRewardFactory, 0, 0, 1); 01172 01191 struct iNewStateQuestRewardFactory : public iBase 01192 { 01199 virtual void SetStateParameter (const char* state) = 0; 01200 01209 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01210 }; 01211 01212 SCF_VERSION (iChangePropertyQuestRewardFactory, 0, 0, 1); 01213 01240 struct iChangePropertyQuestRewardFactory : public iBase 01241 { 01248 virtual void SetEntityParameter (const char* entity) = 0; 01249 01259 virtual void SetPCParameter (const char* pc, const char* tag) = 0; 01260 01266 virtual void SetPropertyParameter (const char* prop) = 0; 01267 01272 virtual void SetStringParameter (const char* pstring) = 0; 01273 01278 virtual void SetLongParameter (const char* plong) = 0; 01279 01284 virtual void SetFloatParameter (const char* pfloat) = 0; 01285 01290 virtual void SetBoolParameter (const char* pbool) = 0; 01291 01296 virtual void SetDiffParameter (const char* pdiff) = 0; 01297 01301 virtual void SetToggle () = 0; 01302 }; 01303 01304 SCF_VERSION (iInventoryQuestRewardFactory, 0, 0, 1); 01305 01327 struct iInventoryQuestRewardFactory : public iBase 01328 { 01337 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01338 01344 virtual void SetChildEntityParameter (const char* entity, 01345 const char* tag = 0) = 0; 01346 01347 }; 01348 01349 SCF_VERSION (iSequenceQuestRewardFactory, 0, 0, 1); 01350 01369 struct iSequenceQuestRewardFactory : public iBase 01370 { 01379 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01380 01386 virtual void SetSequenceParameter (const char* sequence) = 0; 01387 01392 virtual void SetDelayParameter (const char* delay) = 0; 01393 }; 01394 01395 SCF_VERSION (iSequenceFinishQuestRewardFactory, 0, 0, 1); 01396 01414 struct iSequenceFinishQuestRewardFactory : public iBase 01415 { 01424 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01425 01431 virtual void SetSequenceParameter (const char* sequence) = 0; 01432 }; 01433 01449 struct iMessageQuestRewardFactory : public iBase 01450 { 01456 virtual void SetEntityParameter (const char* entity) = 0; 01457 01462 virtual void SetIDParameter (const char* id) = 0; 01463 01473 virtual void AddParameter (celDataType type, csStringID id, 01474 const char* name, const char* value) = 0; 01475 }; 01476 01494 struct iActionQuestRewardFactory : public iBase 01495 { 01501 virtual void SetEntityParameter (const char* entity) = 0; 01502 01507 virtual void SetIDParameter (const char* id) = 0; 01508 01514 virtual void SetPropertyClassParameter (const char* propertyclass) = 0; 01515 01521 virtual void SetTagParameter (const char* tag) = 0; 01522 01532 virtual void AddParameter (celDataType type, csStringID id, 01533 const char* name, const char* value) = 0; 01534 }; 01535 01549 struct iDestroyEntityQuestRewardFactory : public iBase 01550 { 01556 virtual void SetEntityParameter (const char* entity) = 0; 01557 }; 01558 01559 01560 //------------------------------------------------------------------------- 01561 // Specific sequence operation implementations. 01562 //------------------------------------------------------------------------- 01563 01564 SCF_VERSION (iDebugPrintQuestSeqOpFactory, 0, 0, 1); 01565 01580 struct iDebugPrintQuestSeqOpFactory : public iBase 01581 { 01586 virtual void SetMessageParameter (const char* msg) = 0; 01587 }; 01588 01589 SCF_VERSION (iTransformQuestSeqOpFactory, 0, 0, 1); 01590 01616 struct iTransformQuestSeqOpFactory : public iBase 01617 { 01624 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01625 01629 virtual void SetVectorParameter (const char* vectorx, const char* vectory, 01630 const char* vectorz) = 0; 01631 01637 virtual void SetRotationParameter (int rot_axis, const char* rot_angle) = 0; 01638 }; 01639 01640 SCF_VERSION (iMovePathQuestSeqOpFactory, 0, 0, 1); 01641 01663 struct iMovePathQuestSeqOpFactory : public iBase 01664 { 01671 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01672 01682 virtual void AddPathNode (const char* sectorname, const char* node, 01683 const char* time) = 0; 01684 }; 01685 01686 SCF_VERSION (iLightQuestSeqOpFactory, 0, 0, 1); 01687 01710 struct iLightQuestSeqOpFactory : public iBase 01711 { 01718 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01719 01723 virtual void SetRelColorParameter (const char* red, const char* green, 01724 const char* blue) = 0; 01725 01729 virtual void SetAbsColorParameter (const char* red, const char* green, 01730 const char* blue) = 0; 01731 }; 01732 01733 //------------------------------------------------------------------------- 01734 01738 #define CEL_DECLARE_REWARDTYPE(name,id) \ 01739 class cel##name##RewardType : public iQuestRewardType \ 01740 { \ 01741 public: \ 01742 iObjectRegistry* object_reg; \ 01743 cel##name##RewardType (iObjectRegistry* object_reg); \ 01744 virtual ~cel##name##RewardType (); \ 01745 SCF_DECLARE_IBASE; \ 01746 virtual const char* GetName () const { return id; } \ 01747 virtual csPtr<iQuestRewardFactory> CreateRewardFactory (); \ 01748 }; 01749 01753 #define CEL_IMPLEMENT_REWARDTYPE(name) \ 01754 SCF_IMPLEMENT_IBASE (cel##name##RewardType) \ 01755 SCF_IMPLEMENTS_INTERFACE (iQuestRewardType) \ 01756 SCF_IMPLEMENT_IBASE_END \ 01757 cel##name##RewardType::cel##name##RewardType ( \ 01758 iObjectRegistry* object_reg) \ 01759 { \ 01760 SCF_CONSTRUCT_IBASE (0); \ 01761 cel##name##RewardType::object_reg = object_reg; \ 01762 } \ 01763 cel##name##RewardType::~cel##name##RewardType () \ 01764 { \ 01765 SCF_DESTRUCT_IBASE (); \ 01766 } \ 01767 csPtr<iQuestRewardFactory> cel##name##RewardType::CreateRewardFactory ()\ 01768 { \ 01769 cel##name##RewardFactory* fact = new \ 01770 cel##name##RewardFactory (this); \ 01771 return fact; \ 01772 } 01773 01777 #define CEL_DECLARE_TRIGGERTYPE(name,id) \ 01778 class cel##name##TriggerType : public iQuestTriggerType \ 01779 { \ 01780 public: \ 01781 iObjectRegistry* object_reg; \ 01782 cel##name##TriggerType (iObjectRegistry* object_reg); \ 01783 virtual ~cel##name##TriggerType (); \ 01784 SCF_DECLARE_IBASE; \ 01785 virtual const char* GetName () const { return id; } \ 01786 virtual csPtr<iQuestTriggerFactory> CreateTriggerFactory (); \ 01787 }; 01788 01792 #define CEL_IMPLEMENT_TRIGGERTYPE(name) \ 01793 SCF_IMPLEMENT_IBASE (cel##name##TriggerType) \ 01794 SCF_IMPLEMENTS_INTERFACE (iQuestTriggerType) \ 01795 SCF_IMPLEMENT_IBASE_END \ 01796 cel##name##TriggerType::cel##name##TriggerType ( \ 01797 iObjectRegistry* object_reg) \ 01798 { \ 01799 SCF_CONSTRUCT_IBASE (0); \ 01800 cel##name##TriggerType::object_reg = object_reg; \ 01801 } \ 01802 cel##name##TriggerType::~cel##name##TriggerType () \ 01803 { \ 01804 SCF_DESTRUCT_IBASE (); \ 01805 } \ 01806 csPtr<iQuestTriggerFactory> cel##name##TriggerType::CreateTriggerFactory () \ 01807 { \ 01808 cel##name##TriggerFactory* fact = new cel##name##TriggerFactory (this); \ 01809 return fact; \ 01810 } 01811 01815 #define CEL_DECLARE_SEQOPTYPE(name,id) \ 01816 class cel##name##SeqOpType : public iQuestSeqOpType \ 01817 { \ 01818 public: \ 01819 iObjectRegistry* object_reg; \ 01820 cel##name##SeqOpType (iObjectRegistry* object_reg); \ 01821 virtual ~cel##name##SeqOpType (); \ 01822 SCF_DECLARE_IBASE; \ 01823 virtual const char* GetName () const { return id; } \ 01824 virtual csPtr<iQuestSeqOpFactory> CreateSeqOpFactory (); \ 01825 }; 01826 01830 #define CEL_IMPLEMENT_SEQOPTYPE(name) \ 01831 SCF_IMPLEMENT_IBASE (cel##name##SeqOpType) \ 01832 SCF_IMPLEMENTS_INTERFACE (iQuestSeqOpType) \ 01833 SCF_IMPLEMENT_IBASE_END \ 01834 cel##name##SeqOpType::cel##name##SeqOpType ( \ 01835 iObjectRegistry* object_reg) \ 01836 { \ 01837 SCF_CONSTRUCT_IBASE (0); \ 01838 cel##name##SeqOpType::object_reg = object_reg; \ 01839 } \ 01840 cel##name##SeqOpType::~cel##name##SeqOpType () \ 01841 { \ 01842 SCF_DESTRUCT_IBASE (); \ 01843 } \ 01844 csPtr<iQuestSeqOpFactory> cel##name##SeqOpType::CreateSeqOpFactory () \ 01845 { \ 01846 cel##name##SeqOpFactory* fact = new cel##name##SeqOpFactory (this); \ 01847 return fact; \ 01848 } 01849 01850 #endif // __CEL_MGR_QUEST__ 01851
Generated for CEL: Crystal Entity Layer by doxygen 1.4.6