tools/rewards.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_REWARDS__ 00021 #define __CEL_REWARDS__ 00022 00023 #include "behaviourlayer/behave.h" 00024 #include "iutil/document.h" 00025 #include "tools/parameters.h" 00026 #include "tools/sequences.h" 00027 00028 struct iQuest; 00029 struct iCelParameterBlock; 00030 struct iRewardType; 00031 00032 //------------------------------------------------------------------------- 00033 // Rewards 00034 //------------------------------------------------------------------------- 00035 00041 struct iReward : public virtual iBase 00042 { 00043 SCF_INTERFACE (iReward, 0, 0, 1); 00047 virtual void Reward (iCelParameterBlock* params) = 0; 00048 }; 00049 00054 struct iRewardFactory : public virtual iBase 00055 { 00056 SCF_INTERFACE (iRewardFactory, 0, 0, 1); 00057 00061 virtual iRewardType* GetRewardType () const = 0; 00062 00069 virtual csPtr<iReward> CreateReward (iQuest* q, iCelParameterBlock* params) = 0; 00070 00076 virtual bool Load (iDocumentNode* node) = 0; 00077 00083 virtual bool Save (iDocumentNode* node) = 0; 00084 }; 00085 00093 struct iRewardType : public virtual iBase 00094 { 00095 SCF_INTERFACE (iRewardType, 0, 0, 1); 00096 00100 virtual const char* GetName () const = 0; 00101 00105 virtual csPtr<iRewardFactory> CreateRewardFactory () = 0; 00106 }; 00107 00108 00109 //------------------------------------------------------------------------- 00110 // Specific reward implementations. 00111 //------------------------------------------------------------------------- 00112 00131 struct iActionRewardFactory : public virtual iBase 00132 { 00133 SCF_INTERFACE (iActionRewardFactory, 0, 1, 0); 00134 00140 virtual void SetEntityParameter (const char* entity) = 0; 00141 virtual const char* GetEntity () const = 0; 00142 00148 virtual void SetClassParameter (const char* ent_class) = 0; 00149 virtual const char* GetClass () const = 0; 00150 00155 virtual void SetIDParameter (const char* id) = 0; 00156 virtual const char* GetID () const = 0; 00157 00163 virtual void SetPropertyClassParameter (const char* propertyclass) = 0; 00164 virtual const char* GetPropertyClass () const = 0; 00165 00171 virtual void SetTagParameter (const char* tag) = 0; 00172 virtual const char* GetTag () const = 0; 00173 00182 virtual bool AddParameter (celDataType type, csStringID id, const char* value) = 0; 00183 virtual size_t GetParameterCount () const = 0; 00184 virtual csStringID GetParameterID (size_t idx) const = 0; 00185 virtual const char* GetParameterValue (size_t idx) const = 0; 00186 virtual celDataType GetParameterType (size_t idx) const = 0; 00187 virtual void RemoveParameter (csStringID id) = 0; 00188 }; 00189 00217 struct iChangePropertyRewardFactory : public virtual iBase 00218 { 00219 SCF_INTERFACE (iChangePropertyRewardFactory, 0, 0, 1); 00220 00227 virtual void SetEntityParameter (const char* entity) = 0; 00228 virtual const char* GetEntity () const = 0; 00229 00236 virtual void SetClassParameter (const char* ent_class) = 0; 00237 virtual const char* GetClass () const = 0; 00238 00248 virtual void SetPCParameter (const char* pc, const char* tag) = 0; 00249 virtual const char* GetPC () const = 0; 00250 virtual const char* GetPCTag () const = 0; 00251 00257 virtual void SetPropertyParameter (const char* prop) = 0; 00258 virtual const char* GetProperty () const = 0; 00259 virtual celDataType GetPropertyType () const = 0; 00260 00265 virtual void SetStringParameter (const char* pstring) = 0; 00266 virtual const char* GetString () const = 0; 00267 00272 virtual void SetLongParameter (const char* plong) = 0; 00273 virtual const char* GetLong () const = 0; 00274 00279 virtual void SetFloatParameter (const char* pfloat) = 0; 00280 virtual const char* GetFloat () const = 0; 00281 00286 virtual void SetBoolParameter (const char* pbool) = 0; 00287 virtual const char* GetBool () const = 0; 00288 00293 virtual void SetDiffParameter (const char* pdiff) = 0; 00294 virtual const char* GetDiff () const = 0; 00295 00299 virtual void SetToggle (bool toggle) = 0; 00300 virtual bool IsToggle () const = 0; 00301 }; 00302 00321 struct iChangeClassRewardFactory : public virtual iBase 00322 { 00323 SCF_INTERFACE (iChangeClassRewardFactory, 0, 0, 1); 00324 00330 virtual void SetEntityParameter (const char* entity) = 0; 00331 virtual const char* GetEntity () const = 0; 00332 00338 virtual void SetEntitiesParameter (const char* entities) = 0; 00339 virtual const char* GetEntities () const = 0; 00340 00346 virtual void SetClassParameter (const char* ent_class) = 0; 00347 virtual const char* GetClass () const = 0; 00348 00352 virtual void SetRemove (bool r) = 0; 00353 virtual bool IsRemove () const = 0; 00354 }; 00355 00376 struct iCreateEntityRewardFactory : public virtual iBase 00377 { 00378 SCF_INTERFACE (iCreateEntityRewardFactory, 0, 0, 1); 00379 00386 virtual void SetEntityTemplateParameter (const char* entity_tpl) = 0; 00387 virtual const char* GetEntityTemplate () const = 0; 00388 00394 virtual void SetNameParameter (const char* name) = 0; 00395 virtual const char* GetName () const = 0; 00396 00404 virtual bool AddParameter (const char* name, const char* value) = 0; 00405 virtual size_t GetParameterCount () const = 0; 00406 virtual const char* GetParameterName (size_t idx) const = 0; 00407 virtual const char* GetParameterValue (size_t idx) const = 0; 00408 virtual void RemoveParameter (const char* name) = 0; 00409 }; 00410 00425 struct iDestroyEntityRewardFactory : public virtual iBase 00426 { 00427 SCF_INTERFACE (iDestroyEntityRewardFactory, 0, 0, 1); 00428 00434 virtual void SetEntityParameter (const char* entity) = 0; 00435 virtual const char* GetEntity () const = 0; 00436 00442 virtual void SetClassParameter (const char* ent_class) = 0; 00443 virtual const char* GetClass () const = 0; 00444 }; 00445 00458 struct iDebugPrintRewardFactory : public virtual iBase 00459 { 00460 SCF_INTERFACE (iDebugPrintRewardFactory, 0, 0, 1); 00461 00466 virtual void SetMessageParameter (const char* msg) = 0; 00467 virtual const char* GetMessage () const = 0; 00468 }; 00469 00489 struct iInventoryRewardFactory : public virtual iBase 00490 { 00491 SCF_INTERFACE (iInventoryRewardFactory, 0, 0, 1); 00492 00501 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 00502 virtual const char* GetEntity () const = 0; 00503 virtual const char* GetTag () const = 0; 00504 00510 virtual void SetChildEntityParameter (const char* entity, 00511 const char* tag = 0) = 0; 00512 virtual const char* GetChildEntity () const = 0; 00513 virtual const char* GetChildTag () const = 0; 00514 }; 00515 00532 struct iMessageRewardFactory : public virtual iBase 00533 { 00534 SCF_INTERFACE (iMessageRewardFactory, 0, 1, 0); 00535 00541 virtual void SetEntityParameter (const char* entity) = 0; 00542 virtual const char* GetEntity () const = 0; 00543 00549 virtual void SetEntitiesParameter (const char* entities) = 0; 00550 virtual const char* GetEntities () const = 0; 00551 00557 virtual void SetClassParameter (const char* ent_class) = 0; 00558 virtual const char* GetClass () const = 0; 00559 00564 virtual void SetIDParameter (const char* id) = 0; 00565 virtual const char* GetID () const = 0; 00566 00575 virtual bool AddParameter (celDataType type, csStringID id, const char* value) = 0; 00576 virtual size_t GetParameterCount () const = 0; 00577 virtual csStringID GetParameterID (size_t idx) const = 0; 00578 virtual const char* GetParameterValue (size_t idx) const = 0; 00579 virtual celDataType GetParameterType (size_t idx) const = 0; 00580 virtual void RemoveParameter (csStringID id) = 0; 00581 }; 00582 00596 struct iCsSequenceRewardFactory : public virtual iBase 00597 { 00598 SCF_INTERFACE (iCsSequenceRewardFactory, 0, 0, 1); 00599 00605 virtual void SetSequenceParameter (const char* sequence) = 0; 00606 virtual const char* GetSequence () const = 0; 00607 00612 virtual void SetDelayParameter (const char* delay) = 0; 00613 virtual const char* GetDelay () const = 0; 00614 }; 00615 00635 struct iSequenceRewardFactory : public virtual iBase 00636 { 00637 SCF_INTERFACE (iSequenceRewardFactory, 0, 0, 1); 00638 00647 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 00648 virtual const char* GetEntity () const = 0; 00649 00655 virtual void SetTagParameter (const char* tag_par) = 0; 00656 virtual const char* GetTag () const = 0; 00657 00664 virtual void SetClassParameter (const char* ent_class) = 0; 00665 virtual const char* GetClass () const = 0; 00666 00674 virtual void SetSequenceParameter (const char* sequence) = 0; 00675 virtual const char* GetSequence () const = 0; 00676 00682 virtual void SetSequence (iCelSequence* sequence) = 0; 00683 00688 virtual void SetDelayParameter (const char* delay) = 0; 00689 virtual const char* GetDelay () const = 0; 00690 }; 00691 00710 struct iSequenceFinishRewardFactory : public virtual iBase 00711 { 00712 SCF_INTERFACE (iSequenceFinishRewardFactory, 0, 0, 1); 00713 00722 virtual void SetEntityParameter (const char* entity, const char* tag = 0) = 0; 00723 virtual const char* GetEntity () const = 0; 00724 00730 virtual void SetTagParameter (const char* tag_par) = 0; 00731 virtual const char* GetTag () const = 0; 00732 00739 virtual void SetClassParameter (const char* ent_class) = 0; 00740 virtual const char* GetClass () const = 0; 00741 00749 virtual void SetSequenceParameter (const char* sequence) = 0; 00750 virtual const char* GetSequence () const = 0; 00751 00757 virtual void SetSequence (iCelSequence* sequence) = 0; 00758 }; 00759 00760 //------------------------------------------------------------------------- 00761 00765 #define CEL_DECLARE_REWARDTYPE(name,id) \ 00766 class cel##name##RewardType : public scfImplementation2< \ 00767 cel##name##RewardType,iRewardType, iComponent> \ 00768 { \ 00769 public: \ 00770 iObjectRegistry* object_reg; \ 00771 csWeakRef<iCelPlLayer> pl; \ 00772 cel##name##RewardType (iBase* parent); \ 00773 virtual ~cel##name##RewardType () { } \ 00774 virtual bool Initialize (iObjectRegistry*); \ 00775 virtual const char* GetName () const { return id; } \ 00776 virtual csPtr<iRewardFactory> CreateRewardFactory (); \ 00777 }; 00778 00782 #define CEL_IMPLEMENT_REWARDTYPE(name) \ 00783 cel##name##RewardType::cel##name##RewardType ( \ 00784 iBase* parent) : scfImplementationType (this, parent), \ 00785 object_reg(0) \ 00786 { \ 00787 } \ 00788 bool cel##name##RewardType::Initialize ( \ 00789 iObjectRegistry* object_reg) \ 00790 { \ 00791 cel##name##RewardType::object_reg = object_reg; \ 00792 pl = csQueryRegistry<iCelPlLayer> (object_reg); \ 00793 return true; \ 00794 } \ 00795 csPtr<iRewardFactory> cel##name##RewardType::CreateRewardFactory ()\ 00796 { \ 00797 cel##name##RewardFactory* fact = new \ 00798 cel##name##RewardFactory (this); \ 00799 return fact; \ 00800 } 00801 00802 #endif // __CEL_REWARDS__
Generated for CEL: Crystal Entity Layer 2.1 by doxygen 1.6.1
