From: Anders R. <ma...@us...> - 2005-11-28 19:14:36
|
Update of /cvsroot/planeshift/planeshift/src/server/bulkobjects In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29831/src/server/bulkobjects Modified Files: psquest.cpp psquestprereqops.cpp psquestprereqops.h Log Message: - Fixed not compiling CVS version of admin manager :( - Added doxygen comments to the psquestprerequisteop.h file. - Removed quest_id from triggers, they are not need when using quest_scripts. - Cleand out the last part of the old trigger based quests from the sql files. Index: psquest.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/psquest.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** psquest.cpp 27 Nov 2005 00:40:58 -0000 1.19 --- psquest.cpp 28 Nov 2005 19:14:27 -0000 1.20 *************** *** 76,81 **** --- 76,85 ---- bool LoadPrerequisiteXML(iDocumentNode * topNode,psQuestPrereqOp*&prerequisite) { + // Recursively decode the xml document and generate prerequisite operators. + if ( strcmp( topNode->GetValue(), "pre" ) == 0 ) { + // This is the top node. Only one node is legal. + csRef<iDocumentNodeIterator> iter = topNode->GetNodes(); *************** *** 291,294 **** --- 295,299 ---- return false; } + return true; } Index: psquestprereqops.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/psquestprereqops.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** psquestprereqops.cpp 27 Nov 2005 14:27:42 -0000 1.7 --- psquestprereqops.cpp 28 Nov 2005 19:14:27 -0000 1.8 *************** *** 35,38 **** --- 35,39 ---- bool psQuestPrereqOpAnd::Check(psCharacter * character) { + // Check if all prereqs are valid for (size_t i = 0; i < prereqlist.Length(); i++) { *************** *** 59,62 **** --- 60,64 ---- bool psQuestPrereqOpOr::Check(psCharacter * character) { + // Check if any of the prereqs are valid for (size_t i = 0; i < prereqlist.Length(); i++) { *************** *** 89,92 **** --- 91,95 ---- bool psQuestPrereqOpRequire::Check(psCharacter * character) { + // Count the number of prereqs that is valid. int count=0; for (size_t i = 0; i < prereqlist.Length(); i++) *************** *** 94,97 **** --- 97,101 ---- if (prereqlist[i]->Check(character)) count++; } + // Verify that the appropiate numbers of prereqs was counted. return ((min == -1 || count >= min) && (max == -1 || count <= max)); } *************** *** 167,170 **** --- 171,175 ---- int count = character->NumberOfQuestsCompleted(category); + // Verify that the appropiate numbers of quest of given category is done. return ((min == -1 || count >= min) && (max == -1 || count <= max)); } Index: psquestprereqops.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/psquestprereqops.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** psquestprereqops.h 27 Nov 2005 14:27:42 -0000 1.8 --- psquestprereqops.h 28 Nov 2005 19:14:27 -0000 1.9 *************** *** 24,115 **** #include <csutil/array.h> ! class psQuestPrereqOp { public: virtual bool Check(psCharacter * character) = 0; virtual csString GetScript() = 0; }; class psQuestPrereqOpList: public psQuestPrereqOp { protected: csArray<psQuestPrereqOp*> prereqlist; public: virtual ~psQuestPrereqOpList() ! { ! while (prereqlist.Length()) ! delete prereqlist.Pop(); ! } virtual void Push(psQuestPrereqOp* prereqOp); }; class psQuestPrereqOpAnd: public psQuestPrereqOpList { ! public: virtual ~psQuestPrereqOpAnd() {} virtual bool Check(psCharacter * character); virtual csString GetScript(); }; class psQuestPrereqOpOr: public psQuestPrereqOpList { public: virtual ~psQuestPrereqOpOr() {} virtual bool Check(psCharacter * character); virtual csString GetScript(); }; class psQuestPrereqOpRequire: public psQuestPrereqOpList { int min,max; public: psQuestPrereqOpRequire(int min_required,int max_required); virtual ~psQuestPrereqOpRequire() {} virtual bool Check(psCharacter * character); virtual csString GetScript(); }; class psQuestPrereqOpNot: public psQuestPrereqOpList { public: virtual ~psQuestPrereqOpNot() {} virtual bool Check(psCharacter * character); virtual csString GetScript(); }; class psQuestPrereqOpQuestCompleted: public psQuestPrereqOp { protected: psQuest * quest; public: psQuestPrereqOpQuestCompleted(psQuest * quest):quest(quest){}; virtual ~psQuestPrereqOpQuestCompleted() {} virtual bool Check(psCharacter * character); virtual csString GetScript(); }; class psQuestPrereqOpQuestAssigned: public psQuestPrereqOp { protected: psQuest * quest; public: psQuestPrereqOpQuestAssigned(psQuest * quest):quest(quest){}; virtual ~psQuestPrereqOpQuestAssigned() {} virtual bool Check(psCharacter * character); virtual csString GetScript(); }; class psQuestPrereqOpQuestCompletedCategory: public psQuestPrereqOp { protected: ! int min,max; csString category; public: psQuestPrereqOpQuestCompletedCategory(csString quest_category, int min_required,int max_required) :category(quest_category),min(min_required),max(max_required){}; ! virtual ~psQuestPrereqOpQuestCompletedCategory() {} virtual bool Check(psCharacter * character); virtual csString GetScript(); }; --- 24,411 ---- #include <csutil/array.h> ! /** ! * Pure virtual base quest prerequisite operator class ! * ! * This base class define the needed functions for every ! * prerequisite operator. ! */ class psQuestPrereqOp { public: + /** + * Check for valid prerequisite + * + * Override this function to generate a test for any prerequisite. + * + * @param character The character that are checking for a trigger + * @return True if the prerequiste is true and the trigger holding + * the prerequisite should be available. + */ virtual bool Check(psCharacter * character) = 0; + + /** + * Convert the prerequiste to a xml string + * + * Override this function to return the prerequiste xml tag for your new + * operator. + * + * @return XML string for the prerequiste operator. + */ virtual csString GetScript() = 0; }; + /** + * Basis list prerequiste operator. + * + * Define basic operations for operations needing any number of + * prerequisites to be complete. Like an and operator with any numbers + * of childs. + */ class psQuestPrereqOpList: public psQuestPrereqOp { protected: + /** + * The list of child prerequisite operators for this list operator. + */ csArray<psQuestPrereqOp*> prereqlist; public: + + /** + * Destructor for the list prerequisite operator. + * + * Will delete any prerequiste pushed on to the list + * of child prerequisites. + */ virtual ~psQuestPrereqOpList() ! { ! while (prereqlist.Length()) ! delete prereqlist.Pop(); ! } ! ! /** ! * Push a new child prerequiste onto the child list. ! * ! * Add another prerequisite operator to the list of childs ! * for this list prerequisite. ! * ! * @param prereqOp The prerequisite operator to be appended to the list. ! */ virtual void Push(psQuestPrereqOp* prereqOp); }; + /** + * And Prerequisite operator. + * + * A multi term and operaotr. Every prerequisite have to be true + * for this operator to be valid. + */ class psQuestPrereqOpAnd: public psQuestPrereqOpList { ! public: ! ! /** ! * Destructor for the and prerequisite operator. ! */ virtual ~psQuestPrereqOpAnd() {} + + /** + * Check if all child prerequisites are true + * + * prerequisite = child1 and child2 and ... childN + * + * @param character The character that are checking for a prerequiste + * @return True if all the child prerequistes are true + */ virtual bool Check(psCharacter * character); + + /** + * Convert the prerequiste to a xml string + * + * Convert the operator to the xml string: + * <and><child1/>...<childN/></and> + * + * @return XML string for the prerequiste operator. + */ virtual csString GetScript(); }; + + /** + * Or prerequisite operator. + * + * A multi term or operaotr. One prerequisite have to be true + * for this operator to be valid. + */ class psQuestPrereqOpOr: public psQuestPrereqOpList { public: + + /** + * Destructor for the or prerequisite operator. + */ virtual ~psQuestPrereqOpOr() {} + + /** + * Check if any of the child prerequisites are true + * + * prerequisite = child1 or child 2 or ... childN + * + * @param character The character that are checking for a prerequiste + * @return True if one the child prerequistes are true + */ virtual bool Check(psCharacter * character); + + /** + * Convert the prerequiste to a xml string + * + * Convert the operator to the xml string: + * <or><child1/>...<childN/></or> + * + * @return XML string for the prerequiste operator. + */ virtual csString GetScript(); }; + /** + * Require prerequisite operator. + * + * A multi term require operator. The given minimum and/or maximum of + * childs have to be completed for this prerequisite to be true. + */ class psQuestPrereqOpRequire: public psQuestPrereqOpList { int min,max; public: + + /** + * Construct a require operator. + * + * @param min_required The minimum of childs needed. There are no lower + * limit if this is set to -1. + * @param max_required The maximum of childs needed. There are no upper + * limit if this is set to -1. + */ psQuestPrereqOpRequire(int min_required,int max_required); + + /** + * Destructor for the require prerequisite operator. + */ virtual ~psQuestPrereqOpRequire() {} + + /** + * Check if a number of prerequistes are true. Limited by + * a min and a max number. If any of thise are -1 the limit + * will be ignored. + * + * number = number of childs true + * prerequisite = number >= min and number <= max + * + * @param character The character that are checking for a prerequiste + * @return True if more than min and less than max of the child prerequistes are true + */ virtual bool Check(psCharacter * character); + + /** + * Convert the prerequiste to a xml string + * + * Convert the operator into the xml string: + * <require [min="min"] [max="max"]><child1>...<childN></require> + * + * @return XML string for the prerequiste operator. + */ virtual csString GetScript(); }; + /** + * Not prerequisite operator. + * + * Invert the result of the one child. + */ class psQuestPrereqOpNot: public psQuestPrereqOpList { public: + + /** + * Destructor for the not prerequisite operator. + */ virtual ~psQuestPrereqOpNot() {} + + /** + * Check if the child prerequiste is false. + * + * prerequiste = not child + * + * @param character The character that are checking for a prerequiste + * @return True if the one child prerequiste is false + */ virtual bool Check(psCharacter * character); + + /** + * Convert the prerequiste to a xml string + * + * Convert the operator into the xml string: + * <not><child></not> + * + * @return XML string for the prerequiste operator. + */ virtual csString GetScript(); }; + /** + * Quest Completed prerequisite operator. + * + * The given quest have to be completed for this prerequiste + * to be true. + */ class psQuestPrereqOpQuestCompleted: public psQuestPrereqOp { protected: + /** + * The quest that need to be completed. + */ psQuest * quest; public: + + /** + * Construct a quest completed operator + * + * @param quest The quest that need to be completed + */ psQuestPrereqOpQuestCompleted(psQuest * quest):quest(quest){}; + + /** + * Destructor for the quest completed prerequisite operator. + */ virtual ~psQuestPrereqOpQuestCompleted() {} + + /** + * Check if the given quest is completed. + * + * prerequisite = Is the quest completed. + * + * @param character The character that are checking for a prerequiste + * @return True if the charachter have completed the given quest. + */ virtual bool Check(psCharacter * character); + + /** + * Convert the prerequiste to a xml string + * + * Convert the operator into the xml string: + * <completed quest="quest name"/> + * + * @return XML string for the prerequiste operator. + */ virtual csString GetScript(); }; + /** + * Quest assigned prerequisite operator. + * + * The given quest have to be assigned for this prerequiste + * to be true. + */ class psQuestPrereqOpQuestAssigned: public psQuestPrereqOp { protected: + /** + * The quest that need to be assigned. + */ psQuest * quest; public: + + /** + * Construct a quest assigned operator + * + * @param quest The quest that need to be assigned. + */ psQuestPrereqOpQuestAssigned(psQuest * quest):quest(quest){}; + + /** + */ virtual ~psQuestPrereqOpQuestAssigned() {} + + /** + * Check if the given quest is assigned. + * + * prerequisite = Is the quest assigned. + * + * @param character The character that are checking for a prerequiste + * @return True if the character have assigned the given quest. + */ virtual bool Check(psCharacter * character); + + /** + * Convert the prerequiste to a xml string + * + * Convert the operator into the xml string: + * <assigned quest="quest name"/> + * + * @return XML string for the prerequiste operator. + */ virtual csString GetScript(); }; + /** + * Quest Completed Category operator + * + * Need to have completed a number of quests for a given category. + */ class psQuestPrereqOpQuestCompletedCategory: public psQuestPrereqOp { protected: ! ! /** ! * The minimum of quest in the given category that need to be completed. ! */ ! int min; ! ! /** ! * The maximum of quest in the given category that need to be completed. ! */ ! int max; ! ! /** ! * The category that will be tested for. ! */ csString category; public: + + /** + * Construct a quest completed category opererator + * + * @param quest_category The category that the user is tested agains. + * @param min_required The minimum of quests needed. There are no lower + * limit if this is set to -1. + * @param max_required The maximum of quests needed. There are no upper + * limit if this is set to -1. + */ psQuestPrereqOpQuestCompletedCategory(csString quest_category, int min_required,int max_required) :category(quest_category),min(min_required),max(max_required){}; ! ! /** ! * Destructor for the quest completed category prerequisite operator. ! */ ! virtual ~psQuestPrereqOpQuestCompletedCategory() {} ! ! /** ! * Check if the charater have completed a number quests with the given category. ! * ! * number = number of quests completed in the given category. ! * prerequisite = number >= min and number <= max ! * ! * @param character The character that are checking for a prerequiste ! * @return True if more than min and less than max quests of the given category is completed. ! */ virtual bool Check(psCharacter * character); + + /** + * Convert the prerequiste to a xml string + * + * Convert the operator into the xml string: <completed category="category" [min="min"] [max="max"] /> + * + * @return XML string for the prerequiste operator. + */ virtual csString GetScript(); }; |