## Public API Reference

- Main Page
- Classes
- Files

# 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