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 #include "csutil/refarr.h" 00029 00030 struct iDocumentNode; 00031 struct iChangePropertyQuestRewardFactory; 00032 struct iCelDataBuffer; 00033 struct iCelParameterBlock; 00034 struct iQuest; 00035 00043 struct iQuestParameter : public virtual iBase 00044 { 00045 SCF_INTERFACE (iQuestParameter, 0, 0, 2); 00046 00050 virtual const celData* GetData (iCelParameterBlock* params) = 0; 00051 00056 virtual const char* Get (iCelParameterBlock* params) = 0; 00057 00065 virtual const char* Get (iCelParameterBlock* params, bool& changed) = 0; 00066 00071 virtual int32 GetLong (iCelParameterBlock* params) = 0; 00072 }; 00073 00074 00075 /* 00076 <quest name="test"> 00077 <state name="notstarted"> 00078 </state> 00079 00080 <state name="start"> 00081 <trigger type="ininventory"> 00082 <fireon entity="$actor_entity" new_entity="computer_part" /> 00083 <reward type="newstate" state="state2" /> 00084 <reward type="increasestats" statname="HP" value="3" /> 00085 </trigger> 00086 <trigger type="objectdestroyed"> 00087 <fireon entity="barrel" /> 00088 <reward type="newstate" state="finalstate" /> 00089 <reward type="increasestats" statname="HP" value="10" /> 00090 </trigger> 00091 </state> 00092 00093 <state name="state2"> 00094 <trigger type="clickonentity"> 00095 <fireon entity="" /> 00096 </trigger> 00097 <trigger type="cel.questtrigger.entersector"> 00098 <fireon entity="player" sector="room" /> 00099 </trigger> 00100 </state> 00101 00102 <sequence name="seqTest"> 00103 <op type="movemesh" duration="2000" entity="door" 00104 x="0" y="4" z="0" /> 00105 <op type="lightcolor" duration="2000" entity="lightbulb" 00106 red="1" green="1" blue="1" /> 00107 <delay time="2000" /> 00108 </sequence> 00109 00110 <start>notstarted</start> 00111 </quest> 00112 */ 00113 00114 typedef csHash<csStringBase,csStringBase> celQuestParams; 00115 00116 //------------------------------------------------------------------------- 00117 // Triggers 00118 //------------------------------------------------------------------------- 00119 00120 struct iQuestTrigger; 00121 class celVariableParameterBlock; 00122 00123 struct celParSpec 00124 { 00125 celDataType type; 00126 csStringID id; 00127 csString name; 00128 csString value; 00129 }; 00130 00137 struct iQuestTriggerCallback : public virtual iBase 00138 { 00139 SCF_INTERFACE (iQuestTriggerCallback, 0, 0, 1); 00140 00142 virtual void TriggerFired (iQuestTrigger* trigger, iCelParameterBlock* params) = 0; 00143 }; 00144 00157 struct iQuestTrigger : public virtual iBase 00158 { 00159 SCF_INTERFACE (iQuestTrigger, 0, 0, 1); 00160 00165 virtual void RegisterCallback (iQuestTriggerCallback* callback) = 0; 00166 00170 virtual void ClearCallback () = 0; 00171 00175 virtual void ActivateTrigger () = 0; 00176 00180 virtual void DeactivateTrigger () = 0; 00181 00189 virtual bool Check () = 0; 00190 00196 virtual bool LoadAndActivateTrigger (iCelDataBuffer* databuf) = 0; 00197 00201 virtual void SaveTriggerState (iCelDataBuffer* databuf) = 0; 00202 }; 00203 00208 struct iQuestTriggerFactory : public virtual iBase 00209 { 00210 SCF_INTERFACE (iQuestTriggerFactory, 0, 0, 1); 00211 00218 virtual csPtr<iQuestTrigger> CreateTrigger (iQuest* quest, 00219 const celQuestParams& params) = 0; 00220 00226 virtual bool Load (iDocumentNode* node) = 0; 00227 }; 00228 00236 struct iQuestTriggerType : public virtual iBase 00237 { 00238 SCF_INTERFACE (iQuestTriggerType, 0, 0, 1); 00239 00243 virtual const char* GetName () const = 0; 00244 00248 virtual csPtr<iQuestTriggerFactory> CreateTriggerFactory () = 0; 00249 }; 00250 00251 //------------------------------------------------------------------------- 00252 // Rewards 00253 //------------------------------------------------------------------------- 00254 00262 struct iQuestReward : public virtual iBase 00263 { 00264 SCF_INTERFACE (iQuestReward, 0, 0, 1); 00268 virtual void Reward (iCelParameterBlock* params) = 0; 00269 }; 00270 00275 struct iQuestRewardFactory : public virtual iBase 00276 { 00277 SCF_INTERFACE (iQuestRewardFactory, 0, 0, 1); 00278 00285 virtual csPtr<iQuestReward> CreateReward (iQuest* quest, 00286 const celQuestParams& params) = 0; 00287 00293 virtual bool Load (iDocumentNode* node) = 0; 00294 }; 00295 00303 struct iQuestRewardType : public virtual iBase 00304 { 00305 SCF_INTERFACE (iQuestRewardType, 0, 0, 1); 00306 00310 virtual const char* GetName () const = 0; 00311 00315 virtual csPtr<iQuestRewardFactory> CreateRewardFactory () = 0; 00316 }; 00317 00318 //------------------------------------------------------------------------- 00319 // Sequence operations 00320 //------------------------------------------------------------------------- 00321 00328 struct iQuestSeqOp : public virtual iBase 00329 { 00330 SCF_INTERFACE (iQuestSeqOp, 0, 0, 1); 00331 00338 virtual void Init () = 0; 00339 00343 virtual bool Load (iCelDataBuffer* databuf) = 0; 00344 00348 virtual void Save (iCelDataBuffer* databuf) = 0; 00349 00355 virtual void Do (float time) = 0; 00356 }; 00357 00362 struct iQuestSeqOpFactory : public virtual iBase 00363 { 00364 SCF_INTERFACE (iQuestSeqOpFactory, 0, 0, 1); 00365 00371 virtual csPtr<iQuestSeqOp> CreateSeqOp (const celQuestParams& params) = 0; 00372 00378 virtual bool Load (iDocumentNode* node) = 0; 00379 }; 00380 00388 struct iQuestSeqOpType : public virtual iBase 00389 { 00390 SCF_INTERFACE (iQuestSeqOpType, 0, 0, 1); 00391 00395 virtual const char* GetName () const = 0; 00396 00400 virtual csPtr<iQuestSeqOpFactory> CreateSeqOpFactory () = 0; 00401 }; 00402 00403 struct iQuestSequence; 00404 00409 struct iQuestSequenceCallback : public virtual iBase 00410 { 00411 SCF_INTERFACE (iQuestSequenceCallback, 0, 0, 1); 00412 00414 virtual void SequenceFinished (iQuestSequence* sequence) = 0; 00415 }; 00416 00420 struct iQuestSequence : public virtual iBase 00421 { 00422 SCF_INTERFACE (iQuestSequence, 0, 0, 1); 00423 00427 virtual const char* GetName () const = 0; 00428 00434 virtual bool Start (csTicks delay) = 0; 00435 00442 virtual void Finish () = 0; 00443 00449 virtual void Abort () = 0; 00450 00454 virtual bool IsRunning () = 0; 00455 00459 virtual void AddSequenceCallback (iQuestSequenceCallback* cb) = 0; 00463 virtual void RemoveSequenceCallback (iQuestSequenceCallback* cb) = 0; 00464 }; 00465 00466 //------------------------------------------------------------------------- 00467 // The Quest 00468 //------------------------------------------------------------------------- 00469 00474 struct iQuest : public virtual iBase 00475 { 00476 SCF_INTERFACE (iQuest, 0, 0, 1); 00477 00482 virtual bool SwitchState (const char* state) = 0; 00483 00487 virtual const char* GetCurrentState () const = 0; 00488 00494 virtual bool LoadState (const char* state, iCelDataBuffer* databuf) = 0; 00495 00500 virtual void SaveState (iCelDataBuffer* databuf) = 0; 00501 00505 virtual iQuestSequence* FindSequence (const char* name) = 0; 00506 }; 00507 00513 struct iQuestTriggerResponseFactory : public virtual iBase 00514 { 00515 SCF_INTERFACE (iQuestTriggerResponseFactory, 0, 0, 1); 00516 00521 virtual void SetTriggerFactory (iQuestTriggerFactory* trigger_fact) = 0; 00522 00527 virtual void AddRewardFactory (iQuestRewardFactory* reward_fact) = 0; 00528 }; 00529 00534 struct iQuestStateFactory : public virtual iBase 00535 { 00536 SCF_INTERFACE (iQuestStateFactory, 0, 0, 1); 00537 00541 virtual const char* GetName () const = 0; 00542 00546 virtual iQuestTriggerResponseFactory* CreateTriggerResponseFactory () = 0; 00547 00551 virtual void AddInitRewardFactory (iQuestRewardFactory* reward_fact) = 0; 00552 00556 virtual void AddExitRewardFactory (iQuestRewardFactory* reward_fact) = 0; 00557 }; 00558 00563 struct iQuestSequenceFactory : public virtual iBase 00564 { 00565 SCF_INTERFACE (iQuestSequenceFactory, 0, 0, 1); 00566 00570 virtual const char* GetName () const = 0; 00571 00577 virtual bool Load (iDocumentNode* node) = 0; 00578 00586 virtual void AddSeqOpFactory (iQuestSeqOpFactory* seqopfact, 00587 const char* duration) = 0; 00588 00593 virtual void AddDelay (const char* delay) = 0; 00594 }; 00595 00610 struct iQuestFactory : public virtual iBase 00611 { 00612 SCF_INTERFACE (iQuestFactory, 0, 0, 1); 00613 00617 virtual const char* GetName () const = 0; 00618 00626 virtual csPtr<iQuest> CreateQuest (const celQuestParams& params) = 0; 00627 00633 virtual bool Load (iDocumentNode* node) = 0; 00634 00639 virtual iQuestStateFactory* GetState (const char* name) = 0; 00640 00645 virtual iQuestStateFactory* CreateState (const char* name) = 0; 00646 00651 virtual iQuestSequenceFactory* GetSequence (const char* name) = 0; 00652 00657 virtual iQuestSequenceFactory* CreateSequence (const char* name) = 0; 00658 00663 virtual const char* GetDefaultParameter (const char* name) const = 0; 00664 00669 virtual void SetDefaultParameter (const char* name,const char* value) = 0; 00670 00674 virtual void ClearDefaultParameters () = 0; 00675 00676 }; 00677 00678 //------------------------------------------------------------------------- 00679 // The Quest Manager 00680 //------------------------------------------------------------------------- 00681 00687 struct iQuestManager : public virtual iBase 00688 { 00689 SCF_INTERFACE (iQuestManager, 2, 0, 0); 00690 00723 virtual bool RegisterTriggerType (iQuestTriggerType* trigger) = 0; 00724 00729 virtual iQuestTriggerType* GetTriggerType (const char* name) = 0; 00730 00760 virtual bool RegisterRewardType (iQuestRewardType* trigger) = 0; 00761 00766 virtual iQuestRewardType* GetRewardType (const char* name) = 0; 00767 00787 virtual bool RegisterSeqOpType (iQuestSeqOpType* seqop) = 0; 00788 00793 virtual iQuestSeqOpType* GetSeqOpType (const char* name) = 0; 00794 00798 virtual iQuestFactory* GetQuestFactory (const char* name) = 0; 00799 00803 virtual void RemoveQuestFactory (const char* name) = 0; 00804 00808 virtual void RemoveQuestFactories () = 0; 00809 00815 virtual iQuestFactory* CreateQuestFactory (const char* name) = 0; 00816 00821 virtual csPtr<iQuestParameter> GetParameter ( 00822 const celQuestParams& params, 00823 const char* param) = 0; 00824 00833 virtual const char* ResolveParameter ( 00834 const celQuestParams& params, 00835 const char* param) = 0; 00836 00847 virtual csPtr<celVariableParameterBlock> GetParameterBlock ( 00848 const celQuestParams& params, 00849 const csArray<celParSpec>& parameters, 00850 csRefArray<iQuestParameter>& quest_parameters) = 0; 00851 00860 virtual void FillParameterBlock ( 00861 iCelParameterBlock* params, 00862 celVariableParameterBlock* act_params, 00863 const csArray<celParSpec>& parameters, 00864 const csRefArray<iQuestParameter>& quest_parameters) = 0; 00865 00871 virtual bool Load (iDocumentNode* node) = 0; 00872 00877 virtual iQuestRewardFactory* AddNewStateReward ( 00878 iQuestTriggerResponseFactory* response, 00879 const char* entity_par, const char* state_par) = 0; 00880 00885 virtual iQuestRewardFactory* AddDebugPrintReward ( 00886 iQuestTriggerResponseFactory* response, 00887 const char* msg_par) = 0; 00888 00893 virtual iQuestRewardFactory* AddInventoryReward ( 00894 iQuestTriggerResponseFactory* response, 00895 const char* entity_par, const char* child_entity_par) = 0; 00896 00901 virtual iQuestRewardFactory* AddSequenceReward ( 00902 iQuestTriggerResponseFactory* response, 00903 const char* entity_par, const char* sequence_par, 00904 const char* delay_par) = 0; 00905 00910 virtual iQuestRewardFactory* AddCsSequenceReward ( 00911 iQuestTriggerResponseFactory* response, 00912 const char* sequence_par, const char* delay_par) = 0; 00913 00918 virtual iQuestRewardFactory* AddSequenceFinishReward ( 00919 iQuestTriggerResponseFactory* response, 00920 const char* entity_par, const char* sequence_par) = 0; 00921 00927 virtual iChangePropertyQuestRewardFactory* AddChangePropertyReward ( 00928 iQuestTriggerResponseFactory* response, 00929 const char* entity_par, const char* prop_par) = 0; 00930 00935 virtual iQuestTriggerFactory* SetTimeoutTrigger ( 00936 iQuestTriggerResponseFactory* response, 00937 const char* timeout_par) = 0; 00938 00943 virtual iQuestTriggerFactory* SetEnterSectorTrigger ( 00944 iQuestTriggerResponseFactory* response, 00945 const char* entity_par, const char* sector_par) = 0; 00946 00951 virtual iQuestTriggerFactory* SetMeshEnterSectorTrigger ( 00952 iQuestTriggerResponseFactory* response, 00953 const char* entity_par, const char* sector_par) = 0; 00954 00959 virtual iQuestTriggerFactory* SetSequenceFinishTrigger ( 00960 iQuestTriggerResponseFactory* response, 00961 const char* entity_par, const char* sequence_par) = 0; 00962 00967 virtual iQuestTriggerFactory* SetPropertyChangeTrigger ( 00968 iQuestTriggerResponseFactory* response, 00969 const char* entity_par, const char* prop_par, 00970 const char* value_par) = 0; 00971 00976 virtual iQuestTriggerFactory* SetTriggerTrigger ( 00977 iQuestTriggerResponseFactory* response, 00978 const char* entity_par, bool do_leave = false) = 0; 00979 00984 virtual iQuestTriggerFactory* SetWatchTrigger ( 00985 iQuestTriggerResponseFactory* response, 00986 const char* entity_par, const char* target_entity_par, 00987 const char* checktime_par, 00988 const char* radius_par) = 0; 00989 00994 virtual iQuestTriggerFactory* SetOperationTrigger ( 00995 iQuestTriggerResponseFactory* response, 00996 const char* operation_par, 00997 csRefArray<iQuestTriggerFactory> &trigger_factories) = 0; 00998 }; 00999 01000 //------------------------------------------------------------------------- 01001 // Specific trigger implementations. 01002 //------------------------------------------------------------------------- 01003 01016 struct iTimeoutQuestTriggerFactory : public virtual iBase 01017 { 01018 SCF_INTERFACE (iTimeoutQuestTriggerFactory, 0, 0, 1); 01019 01025 virtual void SetTimeoutParameter (const char* timeout_par) = 0; 01026 }; 01027 01065 struct iPropertyChangeQuestTriggerFactory : public virtual iBase 01066 { 01067 SCF_INTERFACE (iPropertyChangeQuestTriggerFactory, 0, 0, 1); 01068 01077 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01078 01084 virtual void SetPropertyParameter (const char* prop) = 0; 01085 01092 virtual void SetValueParameter (const char* value) = 0; 01093 01099 virtual void SetOperationParameter (const char* op) = 0; 01100 01107 virtual void SetOnChangeOnly (bool on_change) = 0; 01108 }; 01109 01128 struct iMeshSelectQuestTriggerFactory : public virtual iBase 01129 { 01130 SCF_INTERFACE (iMeshSelectQuestTriggerFactory, 0, 0, 1); 01131 01140 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01141 }; 01142 01164 struct iInventoryQuestTriggerFactory : public virtual iBase 01165 { 01166 SCF_INTERFACE (iInventoryQuestTriggerFactory, 0, 0, 1); 01167 01176 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01177 01185 virtual void SetChildEntityParameter (const char* child_entity) = 0; 01186 }; 01187 01208 struct iEnterSectorQuestTriggerFactory : public virtual iBase 01209 { 01210 SCF_INTERFACE (iEnterSectorQuestTriggerFactory, 0, 0, 1); 01211 01220 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01221 01228 virtual void SetSectorParameter (const char* sector) = 0; 01229 }; 01230 01254 struct iOperationQuestTriggerFactory : public virtual iBase 01255 { 01256 SCF_INTERFACE (iOperationQuestTriggerFactory, 0, 0, 1); 01257 01264 virtual void SetOperationParameter (const char* operation) = 0; 01269 virtual csRefArray<iQuestTriggerFactory> &GetTriggerFactories () = 0; 01270 }; 01271 01289 struct iSequenceFinishQuestTriggerFactory : public virtual iBase 01290 { 01291 SCF_INTERFACE (iSequenceFinishQuestTriggerFactory, 0, 0, 1); 01292 01301 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01302 01308 virtual void SetSequenceParameter (const char* sequence) = 0; 01309 }; 01310 01331 struct iTriggerQuestTriggerFactory : public virtual iBase 01332 { 01333 SCF_INTERFACE (iTriggerQuestTriggerFactory, 0, 0, 1); 01334 01343 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01344 01349 virtual void EnableLeave () = 0; 01350 }; 01351 01366 struct iMessageQuestTriggerFactory : public virtual iBase 01367 { 01368 SCF_INTERFACE (iMessageQuestTriggerFactory, 0, 0, 1); 01369 01375 virtual void SetEntityParameter (const char* entity) = 0; 01376 01383 virtual void SetMaskParameter (const char* mask) = 0; 01384 }; 01385 01411 struct iWatchQuestTriggerFactory : public virtual iBase 01412 { 01413 SCF_INTERFACE (iWatchQuestTriggerFactory, 0, 0, 1); 01414 01423 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01424 01433 virtual void SetTargetEntityParameter (const char* entity, 01434 const char* tag = 0) = 0; 01435 01443 virtual void SetChecktimeParameter (const char* time) = 0; 01444 01451 virtual void SetRadiusParameter (const char* radius) = 0; 01452 01460 virtual void SetOffsetParameter (const char* offsetx, 01461 const char* offsety, const char* offsetz) = 0; 01462 }; 01463 01464 //------------------------------------------------------------------------- 01465 // Specific reward implementations. 01466 //------------------------------------------------------------------------- 01467 01480 struct iDebugPrintQuestRewardFactory : public virtual iBase 01481 { 01482 SCF_INTERFACE (iDebugPrintQuestRewardFactory, 0, 0, 1); 01483 01488 virtual void SetMessageParameter (const char* msg) = 0; 01489 }; 01490 01510 struct iNewStateQuestRewardFactory : public virtual iBase 01511 { 01512 SCF_INTERFACE (iNewStateQuestRewardFactory, 0, 0, 1); 01513 01520 virtual void SetStateParameter (const char* state) = 0; 01521 01530 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01531 01537 virtual void SetTagParameter (const char* tag_par) = 0; 01538 01545 virtual void SetClassParameter (const char* ent_class) = 0; 01546 }; 01547 01575 struct iChangePropertyQuestRewardFactory : public virtual iBase 01576 { 01577 SCF_INTERFACE (iChangePropertyQuestRewardFactory, 0, 0, 1); 01578 01585 virtual void SetEntityParameter (const char* entity) = 0; 01586 01593 virtual void SetClassParameter (const char* ent_class) = 0; 01594 01604 virtual void SetPCParameter (const char* pc, const char* tag) = 0; 01605 01611 virtual void SetPropertyParameter (const char* prop) = 0; 01612 01617 virtual void SetStringParameter (const char* pstring) = 0; 01618 01623 virtual void SetLongParameter (const char* plong) = 0; 01624 01629 virtual void SetFloatParameter (const char* pfloat) = 0; 01630 01635 virtual void SetBoolParameter (const char* pbool) = 0; 01636 01641 virtual void SetDiffParameter (const char* pdiff) = 0; 01642 01646 virtual void SetToggle () = 0; 01647 }; 01648 01668 struct iInventoryQuestRewardFactory : public virtual iBase 01669 { 01670 SCF_INTERFACE (iInventoryQuestRewardFactory, 0, 0, 1); 01671 01680 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01681 01687 virtual void SetChildEntityParameter (const char* entity, 01688 const char* tag = 0) = 0; 01689 }; 01690 01704 struct iCsSequenceQuestRewardFactory : public virtual iBase 01705 { 01706 SCF_INTERFACE (iCsSequenceQuestRewardFactory, 0, 0, 1); 01707 01713 virtual void SetSequenceParameter (const char* sequence) = 0; 01714 01719 virtual void SetDelayParameter (const char* delay) = 0; 01720 }; 01721 01741 struct iSequenceQuestRewardFactory : public virtual iBase 01742 { 01743 SCF_INTERFACE (iSequenceQuestRewardFactory, 0, 0, 1); 01744 01753 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01754 01760 virtual void SetTagParameter (const char* tag_par) = 0; 01761 01768 virtual void SetClassParameter (const char* ent_class) = 0; 01769 01775 virtual void SetSequenceParameter (const char* sequence) = 0; 01776 01781 virtual void SetDelayParameter (const char* delay) = 0; 01782 }; 01783 01802 struct iSequenceFinishQuestRewardFactory : public virtual iBase 01803 { 01804 SCF_INTERFACE (iSequenceFinishQuestRewardFactory, 0, 0, 1); 01805 01814 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 01815 01821 virtual void SetTagParameter (const char* tag_par) = 0; 01822 01829 virtual void SetClassParameter (const char* ent_class) = 0; 01830 01836 virtual void SetSequenceParameter (const char* sequence) = 0; 01837 }; 01838 01855 struct iMessageQuestRewardFactory : public virtual iBase 01856 { 01857 SCF_INTERFACE (iMessageQuestRewardFactory, 0, 0, 1); 01858 01864 virtual void SetEntityParameter (const char* entity) = 0; 01865 01871 virtual void SetClassParameter (const char* ent_class) = 0; 01872 01877 virtual void SetIDParameter (const char* id) = 0; 01878 01888 virtual void AddParameter (celDataType type, csStringID id, 01889 const char* name, const char* value) = 0; 01890 }; 01891 01910 struct iActionQuestRewardFactory : public virtual iBase 01911 { 01912 SCF_INTERFACE (iActionQuestRewardFactory, 0, 0, 1); 01913 01919 virtual void SetEntityParameter (const char* entity) = 0; 01920 01926 virtual void SetClassParameter (const char* ent_class) = 0; 01927 01932 virtual void SetIDParameter (const char* id) = 0; 01933 01939 virtual void SetPropertyClassParameter (const char* propertyclass) = 0; 01940 01946 virtual void SetTagParameter (const char* tag) = 0; 01947 01957 virtual void AddParameter (celDataType type, csStringID id, 01958 const char* name, const char* value) = 0; 01959 }; 01960 01975 struct iDestroyEntityQuestRewardFactory : public virtual iBase 01976 { 01977 SCF_INTERFACE (iDestroyEntityQuestRewardFactory, 0, 0, 1); 01978 01984 virtual void SetEntityParameter (const char* entity) = 0; 01985 01991 virtual void SetClassParameter (const char* ent_class) = 0; 01992 01993 01994 }; 01995 02016 struct iCreateEntityQuestRewardFactory : public virtual iBase 02017 { 02018 SCF_INTERFACE (iCreateEntityQuestRewardFactory, 0, 0, 1); 02019 02026 virtual void SetEntityTemplateParameter (const char* entity_tpl) = 0; 02027 02033 virtual void SetNameParameter (const char* name) = 0; 02034 02041 virtual void AddParameter (const char* name, const char* value) = 0; 02042 }; 02043 02044 //------------------------------------------------------------------------- 02045 // Specific sequence operation implementations. 02046 //------------------------------------------------------------------------- 02047 02060 struct iDebugPrintQuestSeqOpFactory : public virtual iBase 02061 { 02062 SCF_INTERFACE (iDebugPrintQuestSeqOpFactory, 0, 0, 1); 02063 02068 virtual void SetMessageParameter (const char* msg) = 0; 02069 }; 02070 02094 struct iTransformQuestSeqOpFactory : public virtual iBase 02095 { 02096 SCF_INTERFACE (iTransformQuestSeqOpFactory, 0, 0, 1); 02097 02104 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 02105 02109 virtual void SetVectorParameter (const char* vectorx, const char* vectory, 02110 const char* vectorz) = 0; 02111 02117 virtual void SetRotationParameter (int rot_axis, const char* rot_angle) = 0; 02118 }; 02119 02139 struct iMovePathQuestSeqOpFactory : public virtual iBase 02140 { 02141 SCF_INTERFACE (iMovePathQuestSeqOpFactory, 0, 0, 1); 02142 02149 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 02150 02160 virtual void AddPathNode (const char* sectorname, const char* node, 02161 const char* time) = 0; 02162 }; 02163 02184 struct iLightQuestSeqOpFactory : public virtual iBase 02185 { 02186 SCF_INTERFACE (iLightQuestSeqOpFactory, 0, 0, 1); 02187 02194 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 02195 02199 virtual void SetRelColorParameter (const char* red, const char* green, 02200 const char* blue) = 0; 02201 02205 virtual void SetAbsColorParameter (const char* red, const char* green, 02206 const char* blue) = 0; 02207 }; 02208 02237 struct iPropertyQuestSeqOpFactory : public virtual iBase 02238 { 02239 SCF_INTERFACE (iPropertyQuestSeqOpFactory, 0, 0, 1); 02240 02245 virtual void SetEntityParameter (const char* entity) = 0; 02246 02253 virtual void SetPCParameter (const char* pc, const char* tag = 0) = 0; 02254 02260 virtual void SetPropertyParameter (const char* property_name) = 0; 02261 02267 virtual void SetFloatParameter (const char* pfloat) = 0; 02268 02274 virtual void SetLongParameter (const char* plong) = 0; 02275 02282 virtual void SetVector2Parameter (const char* vectorx, 02283 const char* vectory) = 0; 02284 02293 virtual void SetVector3Parameter (const char* vectorx, const char* vectory, 02294 const char* vectorz) = 0; 02295 02303 virtual void SetRelative (bool is_relative) = 0; 02304 }; 02305 02306 02307 02308 //------------------------------------------------------------------------- 02309 02313 #define CEL_DECLARE_REWARDTYPE(name,id) \ 02314 class cel##name##RewardType : public scfImplementation1< \ 02315 cel##name##RewardType,iQuestRewardType> \ 02316 { \ 02317 public: \ 02318 iObjectRegistry* object_reg; \ 02319 csWeakRef<iCelPlLayer> pl; \ 02320 cel##name##RewardType (iObjectRegistry* object_reg); \ 02321 virtual ~cel##name##RewardType () { } \ 02322 virtual const char* GetName () const { return id; } \ 02323 virtual csPtr<iQuestRewardFactory> CreateRewardFactory (); \ 02324 }; 02325 02329 #define CEL_IMPLEMENT_REWARDTYPE(name) \ 02330 cel##name##RewardType::cel##name##RewardType ( \ 02331 iObjectRegistry* object_reg) : scfImplementationType (this) \ 02332 { \ 02333 cel##name##RewardType::object_reg = object_reg; \ 02334 pl = csQueryRegistry<iCelPlLayer> (object_reg); \ 02335 } \ 02336 csPtr<iQuestRewardFactory> cel##name##RewardType::CreateRewardFactory ()\ 02337 { \ 02338 cel##name##RewardFactory* fact = new \ 02339 cel##name##RewardFactory (this); \ 02340 return fact; \ 02341 } 02342 02346 #define CEL_DECLARE_TRIGGERTYPE(name,id) \ 02347 class cel##name##TriggerType : public scfImplementation1< \ 02348 cel##name##TriggerType,iQuestTriggerType> \ 02349 { \ 02350 public: \ 02351 iObjectRegistry* object_reg; \ 02352 csWeakRef<iCelPlLayer> pl; \ 02353 cel##name##TriggerType (iObjectRegistry* object_reg); \ 02354 virtual ~cel##name##TriggerType () { } \ 02355 virtual const char* GetName () const { return id; } \ 02356 virtual csPtr<iQuestTriggerFactory> CreateTriggerFactory (); \ 02357 }; 02358 02362 #define CEL_IMPLEMENT_TRIGGERTYPE(name) \ 02363 cel##name##TriggerType::cel##name##TriggerType ( \ 02364 iObjectRegistry* object_reg) : scfImplementationType (this) \ 02365 { \ 02366 cel##name##TriggerType::object_reg = object_reg; \ 02367 pl = csQueryRegistry<iCelPlLayer> (object_reg); \ 02368 } \ 02369 csPtr<iQuestTriggerFactory> cel##name##TriggerType::CreateTriggerFactory () \ 02370 { \ 02371 cel##name##TriggerFactory* fact = new cel##name##TriggerFactory (this); \ 02372 return fact; \ 02373 } 02374 02378 #define CEL_DECLARE_SEQOPTYPE(name,id) \ 02379 class cel##name##SeqOpType : public scfImplementation1< \ 02380 cel##name##SeqOpType,iQuestSeqOpType> \ 02381 { \ 02382 public: \ 02383 iObjectRegistry* object_reg; \ 02384 csWeakRef<iCelPlLayer> pl; \ 02385 cel##name##SeqOpType (iObjectRegistry* object_reg); \ 02386 virtual ~cel##name##SeqOpType () { } \ 02387 virtual const char* GetName () const { return id; } \ 02388 virtual csPtr<iQuestSeqOpFactory> CreateSeqOpFactory (); \ 02389 }; 02390 02394 #define CEL_IMPLEMENT_SEQOPTYPE(name) \ 02395 cel##name##SeqOpType::cel##name##SeqOpType ( \ 02396 iObjectRegistry* object_reg) : scfImplementationType (this) \ 02397 { \ 02398 cel##name##SeqOpType::object_reg = object_reg; \ 02399 pl = csQueryRegistry<iCelPlLayer> (object_reg); \ 02400 } \ 02401 csPtr<iQuestSeqOpFactory> cel##name##SeqOpType::CreateSeqOpFactory () \ 02402 { \ 02403 cel##name##SeqOpFactory* fact = new cel##name##SeqOpFactory (this); \ 02404 return fact; \ 02405 } 02406 02407 #endif // __CEL_MGR_QUEST__ 02408
Generated for CEL: Crystal Entity Layer 1.4.1 by doxygen 1.7.1