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/weakref.h" 00026 #include "csutil/hash.h" 00027 #include "csgeom/vector3.h" 00028 00029 struct iDocumentNode; 00030 struct iChangePropertyQuestRewardFactory; 00031 struct iCelDataBuffer; 00032 struct iQuest; 00033 00034 /* 00035 <quest name="test"> 00036 <state name="notstarted"> 00037 </state> 00038 00039 <state name="start"> 00040 <trigger type="ininventory"> 00041 <fireon entity="$actor_entity" new_entity="computer_part" /> 00042 <reward type="newstate" state="state2" /> 00043 <reward type="increasestats" statname="HP" value="3" /> 00044 </trigger> 00045 <trigger type="objectdestroyed"> 00046 <fireon entity="barrel" /> 00047 <reward type="newstate" state="finalstate" /> 00048 <reward type="increasestats" statname="HP" value="10" /> 00049 </trigger> 00050 </state> 00051 00052 <state name="state2"> 00053 <trigger type="clickonentity"> 00054 <fireon entity="" /> 00055 </trigger> 00056 <trigger type="cel.questtrigger.entersector"> 00057 <fireon entity="player" sector="room" /> 00058 </trigger> 00059 </state> 00060 00061 <sequence name="seqTest"> 00062 <op type="movemesh" duration="2000" entity="door" 00063 x="0" y="4" z="0" /> 00064 <op type="lightcolor" duration="2000" entity="lightbulb" 00065 red="1" green="1" blue="1" /> 00066 <delay time="2000" /> 00067 </sequence> 00068 00069 <start>notstarted</start> 00070 </quest> 00071 */ 00072 00073 typedef csHash<csStringBase,csStringBase> celQuestParams; 00074 00075 //------------------------------------------------------------------------- 00076 // Triggers 00077 //------------------------------------------------------------------------- 00078 00079 struct iQuestTrigger; 00080 00087 struct iQuestTriggerCallback : public virtual iBase 00088 { 00089 SCF_INTERFACE (iQuestTriggerCallback, 0, 0, 1); 00090 00092 virtual void TriggerFired (iQuestTrigger* trigger) = 0; 00093 }; 00094 00107 struct iQuestTrigger : public virtual iBase 00108 { 00109 SCF_INTERFACE (iQuestTrigger, 0, 0, 1); 00110 00115 virtual void RegisterCallback (iQuestTriggerCallback* callback) = 0; 00116 00120 virtual void ClearCallback () = 0; 00121 00125 virtual void ActivateTrigger () = 0; 00126 00130 virtual void DeactivateTrigger () = 0; 00131 00137 virtual bool Check () = 0; 00138 00144 virtual bool LoadAndActivateTrigger (iCelDataBuffer* databuf) = 0; 00145 00149 virtual void SaveTriggerState (iCelDataBuffer* databuf) = 0; 00150 }; 00151 00156 struct iQuestTriggerFactory : public virtual iBase 00157 { 00158 SCF_INTERFACE (iQuestTriggerFactory, 0, 0, 1); 00159 00166 virtual csPtr<iQuestTrigger> CreateTrigger (iQuest* quest, 00167 const celQuestParams& params) = 0; 00168 00174 virtual bool Load (iDocumentNode* node) = 0; 00175 }; 00176 00184 struct iQuestTriggerType : public virtual iBase 00185 { 00186 SCF_INTERFACE (iQuestTriggerType, 0, 0, 1); 00187 00191 virtual const char* GetName () const = 0; 00192 00196 virtual csPtr<iQuestTriggerFactory> CreateTriggerFactory () = 0; 00197 }; 00198 00199 //------------------------------------------------------------------------- 00200 // Rewards 00201 //------------------------------------------------------------------------- 00202 00210 struct iQuestReward : public virtual iBase 00211 { 00212 SCF_INTERFACE (iQuestReward, 0, 0, 1); 00216 virtual void Reward () = 0; 00217 }; 00218 00223 struct iQuestRewardFactory : public virtual iBase 00224 { 00225 SCF_INTERFACE (iQuestRewardFactory, 0, 0, 1); 00226 00233 virtual csPtr<iQuestReward> CreateReward (iQuest* quest, 00234 const celQuestParams& params) = 0; 00235 00241 virtual bool Load (iDocumentNode* node) = 0; 00242 }; 00243 00251 struct iQuestRewardType : public virtual iBase 00252 { 00253 SCF_INTERFACE (iQuestRewardType, 0, 0, 1); 00254 00258 virtual const char* GetName () const = 0; 00259 00263 virtual csPtr<iQuestRewardFactory> CreateRewardFactory () = 0; 00264 }; 00265 00266 //------------------------------------------------------------------------- 00267 // Sequence operations 00268 //------------------------------------------------------------------------- 00269 00276 struct iQuestSeqOp : public virtual iBase 00277 { 00278 SCF_INTERFACE (iQuestSeqOp, 0, 0, 1); 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 00310 struct iQuestSeqOpFactory : public virtual iBase 00311 { 00312 SCF_INTERFACE (iQuestSeqOpFactory, 0, 0, 1); 00313 00319 virtual csPtr<iQuestSeqOp> CreateSeqOp (const celQuestParams& params) = 0; 00320 00326 virtual bool Load (iDocumentNode* node) = 0; 00327 }; 00328 00336 struct iQuestSeqOpType : public virtual iBase 00337 { 00338 SCF_INTERFACE (iQuestSeqOpType, 0, 0, 1); 00339 00343 virtual const char* GetName () const = 0; 00344 00348 virtual csPtr<iQuestSeqOpFactory> CreateSeqOpFactory () = 0; 00349 }; 00350 00351 struct iQuestSequence; 00352 00357 struct iQuestSequenceCallback : public virtual iBase 00358 { 00359 SCF_INTERFACE (iQuestSequenceCallback, 0, 0, 1); 00360 00362 virtual void SequenceFinished (iQuestSequence* sequence) = 0; 00363 }; 00364 00368 struct iQuestSequence : public virtual iBase 00369 { 00370 SCF_INTERFACE (iQuestSequence, 0, 0, 1); 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 00422 struct iQuest : public virtual iBase 00423 { 00424 SCF_INTERFACE (iQuest, 0, 0, 1); 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 00461 struct iQuestTriggerResponseFactory : public virtual iBase 00462 { 00463 SCF_INTERFACE (iQuestTriggerResponseFactory, 0, 0, 1); 00464 00469 virtual void SetTriggerFactory (iQuestTriggerFactory* trigger_fact) = 0; 00470 00475 virtual void AddRewardFactory (iQuestRewardFactory* reward_fact) = 0; 00476 }; 00477 00482 struct iQuestStateFactory : public virtual iBase 00483 { 00484 SCF_INTERFACE (iQuestStateFactory, 0, 0, 1); 00485 00489 virtual const char* GetName () const = 0; 00490 00494 virtual iQuestTriggerResponseFactory* CreateTriggerResponseFactory () = 0; 00495 }; 00496 00501 struct iQuestSequenceFactory : public virtual iBase 00502 { 00503 SCF_INTERFACE (iQuestSequenceFactory, 0, 0, 1); 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 00548 struct iQuestFactory : public virtual iBase 00549 { 00550 SCF_INTERFACE (iQuestFactory, 0, 0, 1); 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 00625 struct iQuestManager : public virtual iBase 00626 { 00627 SCF_INTERFACE (iQuestManager, 0, 0, 1); 00628 00656 virtual bool RegisterTriggerType (iQuestTriggerType* trigger) = 0; 00657 00662 virtual iQuestTriggerType* GetTriggerType (const char* name) = 0; 00663 00691 virtual bool RegisterRewardType (iQuestRewardType* trigger) = 0; 00692 00697 virtual iQuestRewardType* GetRewardType (const char* name) = 0; 00698 00716 virtual bool RegisterSeqOpType (iQuestSeqOpType* seqop) = 0; 00717 00722 virtual iQuestSeqOpType* GetSeqOpType (const char* name) = 0; 00723 00727 virtual iQuestFactory* GetQuestFactory (const char* name) = 0; 00728 00734 virtual iQuestFactory* CreateQuestFactory (const char* name) = 0; 00735 00743 virtual const char* ResolveParameter ( 00744 const celQuestParams& params, 00745 const char* param) = 0; 00746 00752 virtual bool Load (iDocumentNode* node) = 0; 00753 00758 virtual iQuestRewardFactory* AddNewStateReward ( 00759 iQuestTriggerResponseFactory* response, 00760 const char* entity_par, const char* state_par) = 0; 00761 00766 virtual iQuestRewardFactory* AddDebugPrintReward ( 00767 iQuestTriggerResponseFactory* response, 00768 const char* msg_par) = 0; 00769 00774 virtual iQuestRewardFactory* AddInventoryReward ( 00775 iQuestTriggerResponseFactory* response, 00776 const char* entity_par, const char* child_entity_par) = 0; 00777 00782 virtual iQuestRewardFactory* AddSequenceReward ( 00783 iQuestTriggerResponseFactory* response, 00784 const char* entity_par, const char* sequence_par, 00785 const char* delay_par) = 0; 00786 00791 virtual iQuestRewardFactory* AddCsSequenceReward ( 00792 iQuestTriggerResponseFactory* response, 00793 const char* sequence_par, const char* delay_par) = 0; 00794 00799 virtual iQuestRewardFactory* AddSequenceFinishReward ( 00800 iQuestTriggerResponseFactory* response, 00801 const char* entity_par, const char* sequence_par) = 0; 00802 00808 virtual iChangePropertyQuestRewardFactory* AddChangePropertyReward ( 00809 iQuestTriggerResponseFactory* response, 00810 const char* entity_par, const char* prop_par) = 0; 00811 00816 virtual iQuestTriggerFactory* SetTimeoutTrigger ( 00817 iQuestTriggerResponseFactory* response, 00818 const char* timeout_par) = 0; 00819 00824 virtual iQuestTriggerFactory* SetEnterSectorTrigger ( 00825 iQuestTriggerResponseFactory* response, 00826 const char* entity_par, const char* sector_par) = 0; 00827 00832 virtual iQuestTriggerFactory* SetMeshEnterSectorTrigger ( 00833 iQuestTriggerResponseFactory* response, 00834 const char* entity_par, const char* sector_par) = 0; 00835 00840 virtual iQuestTriggerFactory* SetSequenceFinishTrigger ( 00841 iQuestTriggerResponseFactory* response, 00842 const char* entity_par, const char* sequence_par) = 0; 00843 00848 virtual iQuestTriggerFactory* SetPropertyChangeTrigger ( 00849 iQuestTriggerResponseFactory* response, 00850 const char* entity_par, const char* prop_par, 00851 const char* value_par) = 0; 00852 00857 virtual iQuestTriggerFactory* SetTriggerTrigger ( 00858 iQuestTriggerResponseFactory* response, 00859 const char* entity_par, bool do_leave = false) = 0; 00860 00865 virtual iQuestTriggerFactory* SetWatchTrigger ( 00866 iQuestTriggerResponseFactory* response, 00867 const char* entity_par, const char* target_entity_par, 00868 const char* checktime_par, 00869 const char* radius_par) = 0; 00870 }; 00871 00872 //------------------------------------------------------------------------- 00873 // Specific trigger implementations. 00874 //------------------------------------------------------------------------- 00875 00888 struct iTimeoutQuestTriggerFactory : public virtual iBase 00889 { 00890 SCF_INTERFACE (iTimeoutQuestTriggerFactory, 0, 0, 1); 00891 00897 virtual void SetTimeoutParameter (const char* timeout_par) = 0; 00898 }; 00899 00920 struct iPropertyChangeQuestTriggerFactory : public virtual iBase 00921 { 00922 SCF_INTERFACE (iPropertyChangeQuestTriggerFactory, 0, 0, 1); 00923 00932 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 00933 00939 virtual void SetPropertyParameter (const char* prop) = 0; 00940 00947 virtual void SetValueParameter (const char* value) = 0; 00948 }; 00949 00966 struct iMeshSelectQuestTriggerFactory : public virtual iBase 00967 { 00968 SCF_INTERFACE (iMeshSelectQuestTriggerFactory, 0, 0, 1); 00969 00978 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 00979 }; 00980 01000 struct iInventoryQuestTriggerFactory : public virtual iBase 01001 { 01002 SCF_INTERFACE (iInventoryQuestTriggerFactory, 0, 0, 1); 01003 01012 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01013 01021 virtual void SetChildEntityParameter (const char* child_entity) = 0; 01022 }; 01023 01044 struct iEnterSectorQuestTriggerFactory : public virtual iBase 01045 { 01046 SCF_INTERFACE (iEnterSectorQuestTriggerFactory, 0, 0, 1); 01047 01056 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01057 01064 virtual void SetSectorParameter (const char* sector) = 0; 01065 }; 01066 01084 struct iSequenceFinishQuestTriggerFactory : public virtual iBase 01085 { 01086 SCF_INTERFACE (iSequenceFinishQuestTriggerFactory, 0, 0, 1); 01087 01096 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01097 01103 virtual void SetSequenceParameter (const char* sequence) = 0; 01104 }; 01105 01123 struct iTriggerQuestTriggerFactory : public virtual iBase 01124 { 01125 SCF_INTERFACE (iTriggerQuestTriggerFactory, 0, 0, 1); 01126 01135 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01136 01141 virtual void EnableLeave () = 0; 01142 }; 01143 01169 struct iWatchQuestTriggerFactory : public virtual iBase 01170 { 01171 SCF_INTERFACE (iWatchQuestTriggerFactory, 0, 0, 1); 01172 01181 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01182 01191 virtual void SetTargetEntityParameter (const char* entity, 01192 const char* tag = 0) = 0; 01193 01201 virtual void SetChecktimeParameter (const char* time) = 0; 01202 01209 virtual void SetRadiusParameter (const char* radius) = 0; 01210 01218 virtual void SetOffsetParameter (const char* offsetx, 01219 const char* offsety, const char* offsetz) = 0; 01220 }; 01221 01222 //------------------------------------------------------------------------- 01223 // Specific reward implementations. 01224 //------------------------------------------------------------------------- 01225 01238 struct iDebugPrintQuestRewardFactory : public virtual iBase 01239 { 01240 SCF_INTERFACE (iDebugPrintQuestRewardFactory, 0, 0, 1); 01241 01246 virtual void SetMessageParameter (const char* msg) = 0; 01247 }; 01248 01265 struct iNewStateQuestRewardFactory : public virtual iBase 01266 { 01267 SCF_INTERFACE (iNewStateQuestRewardFactory, 0, 0, 1); 01268 01275 virtual void SetStateParameter (const char* state) = 0; 01276 01285 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01286 }; 01287 01312 struct iChangePropertyQuestRewardFactory : public virtual iBase 01313 { 01314 SCF_INTERFACE (iChangePropertyQuestRewardFactory, 0, 0, 1); 01315 01322 virtual void SetEntityParameter (const char* entity) = 0; 01323 01333 virtual void SetPCParameter (const char* pc, const char* tag) = 0; 01334 01340 virtual void SetPropertyParameter (const char* prop) = 0; 01341 01346 virtual void SetStringParameter (const char* pstring) = 0; 01347 01352 virtual void SetLongParameter (const char* plong) = 0; 01353 01358 virtual void SetFloatParameter (const char* pfloat) = 0; 01359 01364 virtual void SetBoolParameter (const char* pbool) = 0; 01365 01370 virtual void SetDiffParameter (const char* pdiff) = 0; 01371 01375 virtual void SetToggle () = 0; 01376 }; 01377 01397 struct iInventoryQuestRewardFactory : public virtual iBase 01398 { 01399 SCF_INTERFACE (iInventoryQuestRewardFactory, 0, 0, 1); 01400 01409 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01410 01416 virtual void SetChildEntityParameter (const char* entity, 01417 const char* tag = 0) = 0; 01418 }; 01419 01433 struct iCsSequenceQuestRewardFactory : public virtual iBase 01434 { 01435 SCF_INTERFACE (iCsSequenceQuestRewardFactory, 0, 0, 1); 01436 01442 virtual void SetSequenceParameter (const char* sequence) = 0; 01443 01448 virtual void SetDelayParameter (const char* delay) = 0; 01449 }; 01450 01467 struct iSequenceQuestRewardFactory : public virtual iBase 01468 { 01469 SCF_INTERFACE (iSequenceQuestRewardFactory, 0, 0, 1); 01470 01479 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01480 01486 virtual void SetSequenceParameter (const char* sequence) = 0; 01487 01492 virtual void SetDelayParameter (const char* delay) = 0; 01493 }; 01494 01510 struct iSequenceFinishQuestRewardFactory : public virtual iBase 01511 { 01512 SCF_INTERFACE (iSequenceFinishQuestRewardFactory, 0, 0, 1); 01513 01522 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01523 01529 virtual void SetSequenceParameter (const char* sequence) = 0; 01530 }; 01531 01545 struct iMessageQuestRewardFactory : public virtual iBase 01546 { 01547 SCF_INTERFACE (iMessageQuestRewardFactory, 0, 0, 1); 01548 01554 virtual void SetEntityParameter (const char* entity) = 0; 01555 01560 virtual void SetIDParameter (const char* id) = 0; 01561 01571 virtual void AddParameter (celDataType type, csStringID id, 01572 const char* name, const char* value) = 0; 01573 }; 01574 01590 struct iActionQuestRewardFactory : public virtual iBase 01591 { 01592 SCF_INTERFACE (iActionQuestRewardFactory, 0, 0, 1); 01593 01599 virtual void SetEntityParameter (const char* entity) = 0; 01600 01605 virtual void SetIDParameter (const char* id) = 0; 01606 01612 virtual void SetPropertyClassParameter (const char* propertyclass) = 0; 01613 01619 virtual void SetTagParameter (const char* tag) = 0; 01620 01630 virtual void AddParameter (celDataType type, csStringID id, 01631 const char* name, const char* value) = 0; 01632 }; 01633 01645 struct iDestroyEntityQuestRewardFactory : public virtual iBase 01646 { 01647 SCF_INTERFACE (iDestroyEntityQuestRewardFactory, 0, 0, 1); 01648 01654 virtual void SetEntityParameter (const char* entity) = 0; 01655 }; 01656 01657 01658 //------------------------------------------------------------------------- 01659 // Specific sequence operation implementations. 01660 //------------------------------------------------------------------------- 01661 01674 struct iDebugPrintQuestSeqOpFactory : public virtual iBase 01675 { 01676 SCF_INTERFACE (iDebugPrintQuestSeqOpFactory, 0, 0, 1); 01677 01682 virtual void SetMessageParameter (const char* msg) = 0; 01683 }; 01684 01708 struct iTransformQuestSeqOpFactory : public virtual iBase 01709 { 01710 SCF_INTERFACE (iTransformQuestSeqOpFactory, 0, 0, 1); 01711 01718 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01719 01723 virtual void SetVectorParameter (const char* vectorx, const char* vectory, 01724 const char* vectorz) = 0; 01725 01731 virtual void SetRotationParameter (int rot_axis, const char* rot_angle) = 0; 01732 }; 01733 01753 struct iMovePathQuestSeqOpFactory : public virtual iBase 01754 { 01755 SCF_INTERFACE (iMovePathQuestSeqOpFactory, 0, 0, 1); 01756 01763 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01764 01774 virtual void AddPathNode (const char* sectorname, const char* node, 01775 const char* time) = 0; 01776 }; 01777 01798 struct iLightQuestSeqOpFactory : public virtual iBase 01799 { 01800 SCF_INTERFACE (iLightQuestSeqOpFactory, 0, 0, 1); 01801 01808 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01809 01813 virtual void SetRelColorParameter (const char* red, const char* green, 01814 const char* blue) = 0; 01815 01819 virtual void SetAbsColorParameter (const char* red, const char* green, 01820 const char* blue) = 0; 01821 }; 01822 01823 //------------------------------------------------------------------------- 01824 01828 #define CEL_DECLARE_REWARDTYPE(name,id) \ 01829 class cel##name##RewardType : public scfImplementation1< \ 01830 cel##name##RewardType,iQuestRewardType> \ 01831 { \ 01832 public: \ 01833 iObjectRegistry* object_reg; \ 01834 csWeakRef<iCelPlLayer> pl; \ 01835 cel##name##RewardType (iObjectRegistry* object_reg); \ 01836 virtual ~cel##name##RewardType () { } \ 01837 virtual const char* GetName () const { return id; } \ 01838 virtual csPtr<iQuestRewardFactory> CreateRewardFactory (); \ 01839 }; 01840 01844 #define CEL_IMPLEMENT_REWARDTYPE(name) \ 01845 cel##name##RewardType::cel##name##RewardType ( \ 01846 iObjectRegistry* object_reg) : scfImplementationType (this) \ 01847 { \ 01848 cel##name##RewardType::object_reg = object_reg; \ 01849 pl = csQueryRegistry<iCelPlLayer> (object_reg); \ 01850 } \ 01851 csPtr<iQuestRewardFactory> cel##name##RewardType::CreateRewardFactory ()\ 01852 { \ 01853 cel##name##RewardFactory* fact = new \ 01854 cel##name##RewardFactory (this); \ 01855 return fact; \ 01856 } 01857 01861 #define CEL_DECLARE_TRIGGERTYPE(name,id) \ 01862 class cel##name##TriggerType : public scfImplementation1< \ 01863 cel##name##TriggerType,iQuestTriggerType> \ 01864 { \ 01865 public: \ 01866 iObjectRegistry* object_reg; \ 01867 csWeakRef<iCelPlLayer> pl; \ 01868 cel##name##TriggerType (iObjectRegistry* object_reg); \ 01869 virtual ~cel##name##TriggerType () { } \ 01870 virtual const char* GetName () const { return id; } \ 01871 virtual csPtr<iQuestTriggerFactory> CreateTriggerFactory (); \ 01872 }; 01873 01877 #define CEL_IMPLEMENT_TRIGGERTYPE(name) \ 01878 cel##name##TriggerType::cel##name##TriggerType ( \ 01879 iObjectRegistry* object_reg) : scfImplementationType (this) \ 01880 { \ 01881 cel##name##TriggerType::object_reg = object_reg; \ 01882 pl = csQueryRegistry<iCelPlLayer> (object_reg); \ 01883 } \ 01884 csPtr<iQuestTriggerFactory> cel##name##TriggerType::CreateTriggerFactory () \ 01885 { \ 01886 cel##name##TriggerFactory* fact = new cel##name##TriggerFactory (this); \ 01887 return fact; \ 01888 } 01889 01893 #define CEL_DECLARE_SEQOPTYPE(name,id) \ 01894 class cel##name##SeqOpType : public scfImplementation1< \ 01895 cel##name##SeqOpType,iQuestSeqOpType> \ 01896 { \ 01897 public: \ 01898 iObjectRegistry* object_reg; \ 01899 csWeakRef<iCelPlLayer> pl; \ 01900 cel##name##SeqOpType (iObjectRegistry* object_reg); \ 01901 virtual ~cel##name##SeqOpType () { } \ 01902 virtual const char* GetName () const { return id; } \ 01903 virtual csPtr<iQuestSeqOpFactory> CreateSeqOpFactory (); \ 01904 }; 01905 01909 #define CEL_IMPLEMENT_SEQOPTYPE(name) \ 01910 cel##name##SeqOpType::cel##name##SeqOpType ( \ 01911 iObjectRegistry* object_reg) : scfImplementationType (this) \ 01912 { \ 01913 cel##name##SeqOpType::object_reg = object_reg; \ 01914 pl = csQueryRegistry<iCelPlLayer> (object_reg); \ 01915 } \ 01916 csPtr<iQuestSeqOpFactory> cel##name##SeqOpType::CreateSeqOpFactory () \ 01917 { \ 01918 cel##name##SeqOpFactory* fact = new cel##name##SeqOpFactory (this); \ 01919 return fact; \ 01920 } 01921 01922 #endif // __CEL_MGR_QUEST__ 01923
Generated for CEL: Crystal Entity Layer by doxygen 1.4.7