CEL

Public API Reference

tools/questmanager.h

00001 /*
00002     Crystal Space Entity Layer
00003     Copyright (C) 2004-2006 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 
00086 struct iQuestTriggerCallback : public virtual iBase
00087 {
00088   SCF_INTERFACE (iQuestTriggerCallback, 0, 0, 1);
00089 
00091   virtual void TriggerFired (iQuestTrigger* trigger) = 0;
00092 };
00093 
00106 struct iQuestTrigger : public virtual iBase
00107 {
00108   SCF_INTERFACE (iQuestTrigger, 0, 0, 1);
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 
00155 struct iQuestTriggerFactory : public virtual iBase
00156 {
00157   SCF_INTERFACE (iQuestTriggerFactory, 0, 0, 1);
00158 
00165   virtual csPtr<iQuestTrigger> CreateTrigger (iQuest* quest,
00166         const celQuestParams& params) = 0;
00167 
00173   virtual bool Load (iDocumentNode* node) = 0;
00174 };
00175 
00183 struct iQuestTriggerType : public virtual iBase
00184 {
00185   SCF_INTERFACE (iQuestTriggerType, 0, 0, 1);
00186 
00190   virtual const char* GetName () const = 0;
00191   
00195   virtual csPtr<iQuestTriggerFactory> CreateTriggerFactory () = 0;
00196 };
00197 
00198 //-------------------------------------------------------------------------
00199 // Rewards
00200 //-------------------------------------------------------------------------
00201 
00209 struct iQuestReward : public virtual iBase
00210 {
00211   SCF_INTERFACE (iQuestReward, 0, 0, 1);
00215   virtual void Reward () = 0;
00216 };
00217 
00222 struct iQuestRewardFactory : public virtual iBase
00223 {
00224   SCF_INTERFACE (iQuestRewardFactory, 0, 0, 1);
00225 
00232   virtual csPtr<iQuestReward> CreateReward (iQuest* quest,
00233         const celQuestParams& params) = 0;
00234 
00240   virtual bool Load (iDocumentNode* node) = 0;
00241 };
00242 
00250 struct iQuestRewardType : public virtual iBase
00251 {
00252   SCF_INTERFACE (iQuestRewardType, 0, 0, 1);
00253 
00257   virtual const char* GetName () const = 0;
00258   
00262   virtual csPtr<iQuestRewardFactory> CreateRewardFactory () = 0;
00263 };
00264 
00265 //-------------------------------------------------------------------------
00266 // Sequence operations
00267 //-------------------------------------------------------------------------
00268 
00275 struct iQuestSeqOp : public virtual iBase
00276 {
00277   SCF_INTERFACE (iQuestSeqOp, 0, 0, 1);
00278   
00285   virtual void Init () = 0;
00286 
00290   virtual bool Load (iCelDataBuffer* databuf) = 0;
00291 
00295   virtual void Save (iCelDataBuffer* databuf) = 0;
00296 
00302   virtual void Do (float time) = 0;
00303 };
00304 
00309 struct iQuestSeqOpFactory : public virtual iBase
00310 {
00311   SCF_INTERFACE (iQuestSeqOpFactory, 0, 0, 1);
00312 
00318   virtual csPtr<iQuestSeqOp> CreateSeqOp (const celQuestParams& params) = 0;
00319 
00325   virtual bool Load (iDocumentNode* node) = 0;
00326 };
00327 
00335 struct iQuestSeqOpType : public virtual iBase
00336 {
00337   SCF_INTERFACE (iQuestSeqOpType, 0, 0, 1);
00338 
00342   virtual const char* GetName () const = 0;
00343   
00347   virtual csPtr<iQuestSeqOpFactory> CreateSeqOpFactory () = 0;
00348 };
00349 
00350 struct iQuestSequence;
00351 
00356 struct iQuestSequenceCallback : public virtual iBase
00357 {
00358   SCF_INTERFACE (iQuestSequenceCallback, 0, 0, 1);
00359 
00361   virtual void SequenceFinished (iQuestSequence* sequence) = 0;
00362 };
00363 
00367 struct iQuestSequence : public virtual iBase
00368 {
00369   SCF_INTERFACE (iQuestSequence, 0, 0, 1);
00370 
00374   virtual const char* GetName () const = 0;
00375 
00381   virtual bool Start (csTicks delay) = 0;
00382 
00389   virtual void Finish () = 0;
00390 
00396   virtual void Abort () = 0;
00397 
00401   virtual bool IsRunning () = 0;
00402 
00406   virtual void AddSequenceCallback (iQuestSequenceCallback* cb) = 0;
00410   virtual void RemoveSequenceCallback (iQuestSequenceCallback* cb) = 0;
00411 };
00412 
00413 //-------------------------------------------------------------------------
00414 // The Quest
00415 //-------------------------------------------------------------------------
00416 
00421 struct iQuest : public virtual iBase
00422 {
00423   SCF_INTERFACE (iQuest, 0, 0, 1);
00424 
00429   virtual bool SwitchState (const char* state) = 0;
00430 
00434   virtual const char* GetCurrentState () const = 0;
00435 
00441   virtual bool LoadState (const char* state, iCelDataBuffer* databuf) = 0;
00442 
00447   virtual void SaveState (iCelDataBuffer* databuf) = 0;
00448 
00452   virtual iQuestSequence* FindSequence (const char* name) = 0;
00453 };
00454 
00460 struct iQuestTriggerResponseFactory : public virtual iBase
00461 {
00462   SCF_INTERFACE (iQuestTriggerResponseFactory, 0, 0, 1);
00463 
00468   virtual void SetTriggerFactory (iQuestTriggerFactory* trigger_fact) = 0;
00469 
00474   virtual void AddRewardFactory (iQuestRewardFactory* reward_fact) = 0;
00475 };
00476 
00481 struct iQuestStateFactory : public virtual iBase
00482 {
00483   SCF_INTERFACE (iQuestStateFactory, 0, 0, 1);
00484 
00488   virtual const char* GetName () const = 0;
00489 
00493   virtual iQuestTriggerResponseFactory* CreateTriggerResponseFactory () = 0;
00494 };
00495 
00500 struct iQuestSequenceFactory : public virtual iBase
00501 {
00502   SCF_INTERFACE (iQuestSequenceFactory, 0, 0, 1);
00503 
00507   virtual const char* GetName () const = 0;
00508 
00514   virtual bool Load (iDocumentNode* node) = 0;
00515 
00523   virtual void AddSeqOpFactory (iQuestSeqOpFactory* seqopfact,
00524         const char* duration) = 0;
00525 
00530   virtual void AddDelay (const char* delay) = 0;
00531 };
00532 
00547 struct iQuestFactory : public virtual iBase
00548 {
00549   SCF_INTERFACE (iQuestFactory, 0, 0, 1);
00550 
00554   virtual const char* GetName () const = 0;
00555   
00563   virtual csPtr<iQuest> CreateQuest (const celQuestParams& params) = 0;
00564 
00570   virtual bool Load (iDocumentNode* node) = 0;
00571 
00576   virtual iQuestStateFactory* GetState (const char* name) = 0;
00577 
00582   virtual iQuestStateFactory* CreateState (const char* name) = 0;
00583 
00588   virtual iQuestSequenceFactory* GetSequence (const char* name) = 0;
00589 
00594   virtual iQuestSequenceFactory* CreateSequence (const char* name) = 0;
00595 
00600   virtual const char* GetDefaultParameter (const char* name) const = 0;
00601 
00606   virtual void SetDefaultParameter (const char* name,const char* value) = 0;
00607   
00611   virtual void ClearDefaultParameters () = 0;
00612 
00613 };
00614 
00615 //-------------------------------------------------------------------------
00616 // The Quest Manager
00617 //-------------------------------------------------------------------------
00618 
00624 struct iQuestManager : public virtual iBase
00625 {
00626   SCF_INTERFACE (iQuestManager, 0, 0, 1);
00627 
00657   virtual bool RegisterTriggerType (iQuestTriggerType* trigger) = 0;
00658 
00663   virtual iQuestTriggerType* GetTriggerType (const char* name) = 0;
00664 
00694   virtual bool RegisterRewardType (iQuestRewardType* trigger) = 0;
00695 
00700   virtual iQuestRewardType* GetRewardType (const char* name) = 0;
00701 
00721   virtual bool RegisterSeqOpType (iQuestSeqOpType* seqop) = 0;
00722 
00727   virtual iQuestSeqOpType* GetSeqOpType (const char* name) = 0;
00728 
00732   virtual iQuestFactory* GetQuestFactory (const char* name) = 0;
00733 
00739   virtual iQuestFactory* CreateQuestFactory (const char* name) = 0;
00740 
00748   virtual const char* ResolveParameter (
00749         const celQuestParams& params,
00750         const char* param) = 0;
00751 
00757   virtual bool Load (iDocumentNode* node) = 0;
00758 
00763   virtual iQuestRewardFactory* AddNewStateReward (
00764         iQuestTriggerResponseFactory* response,
00765         const char* entity_par, const char* state_par) = 0;
00766 
00771   virtual iQuestRewardFactory* AddDebugPrintReward (
00772         iQuestTriggerResponseFactory* response,
00773         const char* msg_par) = 0;
00774 
00779   virtual iQuestRewardFactory* AddInventoryReward (
00780         iQuestTriggerResponseFactory* response,
00781         const char* entity_par, const char* child_entity_par) = 0;
00782 
00787   virtual iQuestRewardFactory* AddSequenceReward (
00788         iQuestTriggerResponseFactory* response,
00789         const char* entity_par, const char* sequence_par,
00790         const char* delay_par) = 0;
00791 
00796   virtual iQuestRewardFactory* AddSequenceFinishReward (
00797         iQuestTriggerResponseFactory* response,
00798         const char* entity_par, const char* sequence_par) = 0;
00799 
00805   virtual iChangePropertyQuestRewardFactory* AddChangePropertyReward (
00806         iQuestTriggerResponseFactory* response,
00807         const char* entity_par, const char* prop_par) = 0;
00808 
00813   virtual iQuestTriggerFactory* SetTimeoutTrigger (
00814         iQuestTriggerResponseFactory* response,
00815         const char* timeout_par) = 0;
00816 
00821   virtual iQuestTriggerFactory* SetEnterSectorTrigger (
00822         iQuestTriggerResponseFactory* response,
00823         const char* entity_par, const char* sector_par) = 0;
00824 
00829   virtual iQuestTriggerFactory* SetMeshEnterSectorTrigger (
00830         iQuestTriggerResponseFactory* response,
00831         const char* entity_par, const char* sector_par) = 0;
00832 
00837   virtual iQuestTriggerFactory* SetSequenceFinishTrigger (
00838         iQuestTriggerResponseFactory* response,
00839         const char* entity_par, const char* sequence_par) = 0;
00840 
00845   virtual iQuestTriggerFactory* SetPropertyChangeTrigger (
00846         iQuestTriggerResponseFactory* response,
00847         const char* entity_par, const char* prop_par,
00848         const char* value_par) = 0;
00849 
00854   virtual iQuestTriggerFactory* SetTriggerTrigger (
00855         iQuestTriggerResponseFactory* response,
00856         const char* entity_par, bool do_leave = false) = 0;
00857 
00862   virtual iQuestTriggerFactory* SetWatchTrigger (
00863         iQuestTriggerResponseFactory* response,
00864         const char* entity_par, const char* target_entity_par,
00865         const char* checktime_par,
00866         const char* radius_par) = 0;
00867 };
00868 
00869 //-------------------------------------------------------------------------
00870 // Specific trigger implementations.
00871 //-------------------------------------------------------------------------
00872 
00887 struct iTimeoutQuestTriggerFactory : public virtual iBase
00888 {
00889   SCF_INTERFACE (iTimeoutQuestTriggerFactory, 0, 0, 1);
00890 
00896   virtual void SetTimeoutParameter (const char* timeout_par) = 0;
00897 };
00898 
00921 struct iPropertyChangeQuestTriggerFactory : public virtual iBase
00922 {
00923   SCF_INTERFACE (iPropertyChangeQuestTriggerFactory, 0, 0, 1);
00924 
00933   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
00934 
00940   virtual void SetPropertyParameter (const char* prop) = 0;
00941 
00948   virtual void SetValueParameter (const char* value) = 0;
00949 };
00950 
00969 struct iMeshSelectQuestTriggerFactory : public virtual iBase
00970 {
00971   SCF_INTERFACE (iMeshSelectQuestTriggerFactory, 0, 0, 1);
00972 
00981   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
00982 };
00983 
01005 struct iInventoryQuestTriggerFactory : public virtual iBase
01006 {
01007   SCF_INTERFACE (iInventoryQuestTriggerFactory, 0, 0, 1);
01008 
01017   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01018 
01026   virtual void SetChildEntityParameter (const char* child_entity) = 0;
01027 };
01028 
01051 struct iEnterSectorQuestTriggerFactory : public virtual iBase
01052 {
01053   SCF_INTERFACE (iEnterSectorQuestTriggerFactory, 0, 0, 1);
01054 
01063   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01064 
01071   virtual void SetSectorParameter (const char* sector) = 0;
01072 };
01073 
01093 struct iSequenceFinishQuestTriggerFactory : public virtual iBase
01094 {
01095   SCF_INTERFACE (iSequenceFinishQuestTriggerFactory, 0, 0, 1);
01096 
01105   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01106 
01112   virtual void SetSequenceParameter (const char* sequence) = 0;
01113 };
01114 
01134 struct iTriggerQuestTriggerFactory : public virtual iBase
01135 {
01136   SCF_INTERFACE (iTriggerQuestTriggerFactory, 0, 0, 1);
01137 
01146   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01147 
01152   virtual void EnableLeave () = 0;
01153 };
01154 
01179 struct iWatchQuestTriggerFactory : public virtual iBase
01180 {
01181   SCF_INTERFACE (iWatchQuestTriggerFactory, 0, 0, 1);
01182 
01191   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01192 
01201   virtual void SetTargetEntityParameter (const char* entity,
01202       const char* tag = 0) = 0;
01203 
01211   virtual void SetChecktimeParameter (const char* time) = 0;
01212 
01219   virtual void SetRadiusParameter (const char* radius) = 0;
01220 };
01221 
01222 //-------------------------------------------------------------------------
01223 // Specific reward implementations.
01224 //-------------------------------------------------------------------------
01225 
01240 struct iDebugPrintQuestRewardFactory : public virtual iBase
01241 {
01242   SCF_INTERFACE (iDebugPrintQuestRewardFactory, 0, 0, 1);
01243 
01248   virtual void SetMessageParameter (const char* msg) = 0;
01249 };
01250 
01269 struct iNewStateQuestRewardFactory : public virtual iBase
01270 {
01271   SCF_INTERFACE (iNewStateQuestRewardFactory, 0, 0, 1);
01272 
01279   virtual void SetStateParameter (const char* state) = 0;
01280 
01289   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01290 };
01291 
01318 struct iChangePropertyQuestRewardFactory : public virtual iBase
01319 {
01320   SCF_INTERFACE (iChangePropertyQuestRewardFactory, 0, 0, 1);
01321 
01328   virtual void SetEntityParameter (const char* entity) = 0;
01329 
01339   virtual void SetPCParameter (const char* pc, const char* tag) = 0;
01340 
01346   virtual void SetPropertyParameter (const char* prop) = 0;
01347 
01352   virtual void SetStringParameter (const char* pstring) = 0;
01353 
01358   virtual void SetLongParameter (const char* plong) = 0;
01359 
01364   virtual void SetFloatParameter (const char* pfloat) = 0;
01365 
01370   virtual void SetBoolParameter (const char* pbool) = 0;
01371 
01376   virtual void SetDiffParameter (const char* pdiff) = 0;
01377 
01381   virtual void SetToggle () = 0;
01382 };
01383 
01405 struct iInventoryQuestRewardFactory : public virtual iBase
01406 {
01407   SCF_INTERFACE (iInventoryQuestRewardFactory, 0, 0, 1);
01408 
01417   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01418 
01424   virtual void SetChildEntityParameter (const char* entity,
01425         const char* tag = 0) = 0;
01426 
01427 };
01428 
01447 struct iSequenceQuestRewardFactory : public virtual iBase
01448 {
01449   SCF_INTERFACE (iSequenceQuestRewardFactory, 0, 0, 1);
01450 
01459   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01460 
01466   virtual void SetSequenceParameter (const char* sequence) = 0;
01467 
01472   virtual void SetDelayParameter (const char* delay) = 0;
01473 };
01474 
01492 struct iSequenceFinishQuestRewardFactory : public virtual iBase
01493 {
01494   SCF_INTERFACE (iSequenceFinishQuestRewardFactory, 0, 0, 1);
01495 
01504   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01505 
01511   virtual void SetSequenceParameter (const char* sequence) = 0;
01512 };
01513 
01529 struct iMessageQuestRewardFactory : public virtual iBase
01530 {
01531   SCF_INTERFACE (iMessageQuestRewardFactory, 0, 0, 1);
01532 
01538   virtual void SetEntityParameter (const char* entity) = 0;
01539 
01544   virtual void SetIDParameter (const char* id) = 0;
01545 
01555   virtual void AddParameter (celDataType type, csStringID id,
01556       const char* name, const char* value) = 0;
01557 };
01558 
01576 struct iActionQuestRewardFactory : public virtual iBase
01577 {
01578   SCF_INTERFACE (iActionQuestRewardFactory, 0, 0, 1);
01579 
01585   virtual void SetEntityParameter (const char* entity) = 0;
01586 
01591   virtual void SetIDParameter (const char* id) = 0;
01592 
01598   virtual void SetPropertyClassParameter (const char* propertyclass) = 0;
01599 
01605   virtual void SetTagParameter (const char* tag) = 0;
01606 
01616   virtual void AddParameter (celDataType type, csStringID id,
01617       const char* name, const char* value) = 0;
01618 };
01619 
01633 struct iDestroyEntityQuestRewardFactory : public virtual iBase
01634 {
01635   SCF_INTERFACE (iDestroyEntityQuestRewardFactory, 0, 0, 1);
01636 
01642   virtual void SetEntityParameter (const char* entity) = 0;
01643 };
01644 
01645 
01646 //-------------------------------------------------------------------------
01647 // Specific sequence operation implementations.
01648 //-------------------------------------------------------------------------
01649 
01664 struct iDebugPrintQuestSeqOpFactory : public virtual iBase
01665 {
01666   SCF_INTERFACE (iDebugPrintQuestSeqOpFactory, 0, 0, 1);
01667 
01672   virtual void SetMessageParameter (const char* msg) = 0;
01673 };
01674 
01700 struct iTransformQuestSeqOpFactory : public virtual iBase
01701 {
01702   SCF_INTERFACE (iTransformQuestSeqOpFactory, 0, 0, 1);
01703 
01710   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01711 
01715   virtual void SetVectorParameter (const char* vectorx, const char* vectory,
01716         const char* vectorz) = 0;
01717 
01723   virtual void SetRotationParameter (int rot_axis, const char* rot_angle) = 0;
01724 };
01725 
01747 struct iMovePathQuestSeqOpFactory : public virtual iBase
01748 {
01749   SCF_INTERFACE (iMovePathQuestSeqOpFactory, 0, 0, 1);
01750 
01757   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01758 
01768   virtual void AddPathNode (const char* sectorname, const char* node,
01769         const char* time) = 0;
01770 };
01771 
01794 struct iLightQuestSeqOpFactory : public virtual iBase
01795 {
01796   SCF_INTERFACE (iLightQuestSeqOpFactory, 0, 0, 1);
01797 
01804   virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0;
01805 
01809   virtual void SetRelColorParameter (const char* red, const char* green,
01810         const char* blue) = 0;
01811 
01815   virtual void SetAbsColorParameter (const char* red, const char* green,
01816         const char* blue) = 0;
01817 };
01818 
01819 //-------------------------------------------------------------------------
01820 
01824 #define CEL_DECLARE_REWARDTYPE(name,id)                                 \
01825 class cel##name##RewardType : public scfImplementation1<                \
01826                 cel##name##RewardType,iQuestRewardType>                 \
01827 {                                                                       \
01828 public:                                                                 \
01829   iObjectRegistry* object_reg;                                          \
01830   cel##name##RewardType (iObjectRegistry* object_reg);                  \
01831   virtual ~cel##name##RewardType () { }                                 \
01832   virtual const char* GetName () const { return id; }                   \
01833   virtual csPtr<iQuestRewardFactory> CreateRewardFactory ();            \
01834 };
01835 
01839 #define CEL_IMPLEMENT_REWARDTYPE(name)                                  \
01840 cel##name##RewardType::cel##name##RewardType (                          \
01841         iObjectRegistry* object_reg) : scfImplementationType (this)     \
01842 {                                                                       \
01843   cel##name##RewardType::object_reg = object_reg;                       \
01844 }                                                                       \
01845 csPtr<iQuestRewardFactory> cel##name##RewardType::CreateRewardFactory ()\
01846 {                                                                       \
01847   cel##name##RewardFactory* fact = new                                  \
01848         cel##name##RewardFactory (this);                                \
01849   return fact;                                                          \
01850 }
01851 
01855 #define CEL_DECLARE_TRIGGERTYPE(name,id)                                \
01856 class cel##name##TriggerType : public scfImplementation1<               \
01857                 cel##name##TriggerType,iQuestTriggerType>               \
01858 {                                                                       \
01859 public:                                                                 \
01860   iObjectRegistry* object_reg;                                          \
01861   cel##name##TriggerType (iObjectRegistry* object_reg);                 \
01862   virtual ~cel##name##TriggerType () { }                                \
01863   virtual const char* GetName () const { return id; }                   \
01864   virtual csPtr<iQuestTriggerFactory> CreateTriggerFactory ();          \
01865 };
01866 
01870 #define CEL_IMPLEMENT_TRIGGERTYPE(name)                                 \
01871 cel##name##TriggerType::cel##name##TriggerType (                        \
01872         iObjectRegistry* object_reg) : scfImplementationType (this)     \
01873 {                                                                       \
01874   cel##name##TriggerType::object_reg = object_reg;                      \
01875 }                                                                       \
01876 csPtr<iQuestTriggerFactory> cel##name##TriggerType::CreateTriggerFactory () \
01877 {                                                                       \
01878   cel##name##TriggerFactory* fact = new cel##name##TriggerFactory (this); \
01879   return fact;                                                          \
01880 }
01881 
01885 #define CEL_DECLARE_SEQOPTYPE(name,id)                                  \
01886 class cel##name##SeqOpType : public scfImplementation1<                 \
01887         cel##name##SeqOpType,iQuestSeqOpType>                           \
01888 {                                                                       \
01889 public:                                                                 \
01890   iObjectRegistry* object_reg;                                          \
01891   cel##name##SeqOpType (iObjectRegistry* object_reg);                   \
01892   virtual ~cel##name##SeqOpType () { }                                  \
01893   virtual const char* GetName () const { return id; }                   \
01894   virtual csPtr<iQuestSeqOpFactory> CreateSeqOpFactory ();              \
01895 };
01896 
01900 #define CEL_IMPLEMENT_SEQOPTYPE(name)                                   \
01901 cel##name##SeqOpType::cel##name##SeqOpType (                            \
01902         iObjectRegistry* object_reg) : scfImplementationType (this)     \
01903 {                                                                       \
01904   cel##name##SeqOpType::object_reg = object_reg;                        \
01905 }                                                                       \
01906 csPtr<iQuestSeqOpFactory> cel##name##SeqOpType::CreateSeqOpFactory ()   \
01907 {                                                                       \
01908   cel##name##SeqOpFactory* fact = new cel##name##SeqOpFactory (this);   \
01909   return fact;                                                          \
01910 }
01911 
01912 #endif // __CEL_MGR_QUEST__
01913 

Generated for CEL: Crystal Entity Layer by doxygen 1.4.7