From: Andy D. <kha...@us...> - 2006-11-12 02:35:54
|
Update of /cvsroot/planeshift/planeshift/src/server/bulkobjects In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16639/src/server/bulkobjects Modified Files: psitem.cpp psitem.h psquest.cpp psquest.h Log Message: - Switched existing code to using CS Weak References from the PS Safe References. Index: psitem.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/psitem.cpp,v retrieving revision 1.211 retrieving revision 1.212 diff -C2 -d -r1.211 -r1.212 *** psitem.cpp 31 Oct 2006 01:54:12 -0000 1.211 --- psitem.cpp 12 Nov 2006 02:35:48 -0000 1.212 *************** *** 206,210 **** schedule = NULL; - self_reference.AttachNew(new psItemSafe(this)); } --- 206,209 ---- *************** *** 260,265 **** } - self_reference->item = NULL; // Not valid to use this object anymore - if (gItem) gItem->UnregisterCallback(this); --- 259,262 ---- *************** *** 455,459 **** #if SAVE_DEBUG ! printf("\n%s::Save() for '%s', queued from stack:\n", typeid(*(GetSafeReference()->item)).name(), GetName() ); stack->Print(); printf("\n"); --- 452,456 ---- #if SAVE_DEBUG ! printf("\n%s::Save() for '%s', queued from stack:\n", typeid(*(item)).name(), GetName() ); stack->Print(); printf("\n"); *************** *** 468,476 **** } #elif SAVE_DEBUG ! printf("%s::Save() for '%s' queued\n", typeid(*(GetSafeReference()->item)).name(), GetName() ); #endif - // Queue this item to save in 500ms - //psserver->GetEventManager()->Push(new psDelaySave(500,GetSafeReference())); pendingsave = true; Commit(children); --- 465,471 ---- } #elif SAVE_DEBUG ! printf("%s::Save() for '%s' queued\n", typeid(*(item)).name(), GetName() ); #endif pendingsave = true; Commit(children); *************** *** 2472,2499 **** } - psDelaySave::psDelaySave(int length, psItemSafe* item) - : psGameEvent(0,length,"psDelaySave") - { - this->item = item; - - #if SAVE_DEBUG - type = typeid(*(item->item)).name(); - name = item->item->GetName(); - #endif - } - - void psDelaySave::Trigger() - { - if (item && item->item) - item->item->Commit(); - - #if SAVE_DEBUG - else - { - printf("%s::Save() for '%s' discarded\n", type.GetData(), name.GetData() ); - return; - } - printf("%s::Save() for '%s' committed\n", type.GetData(), name.GetData() ); - #endif - } --- 2467,2469 ---- Index: psitem.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/psitem.h,v retrieving revision 1.120 retrieving revision 1.121 diff -C2 -d -r1.120 -r1.121 *** psitem.h 31 Oct 2006 01:50:09 -0000 1.120 --- psitem.h 12 Nov 2006 02:35:48 -0000 1.121 *************** *** 23,26 **** --- 23,27 ---- #include <csutil/array.h> #include <csgeom/vector3.h> + #include <csutil/weakreferenced.h> #include "util/stringarray.h" #include "util/psconst.h" *************** *** 150,167 **** - /** - * This class holds a shared reference to an object. - * Any other class needing to hold a ptr to a psItem - * for >1 function should use a csRef of this and check for NULL - * before use. - */ - struct psItemSafe : public csRefCount - { - psItem *item; - - psItemSafe() { item = NULL; } - psItemSafe(psItem *init) { item = init; } - }; - #define ITEM_DECAY_FACTOR_PARRY 0.75F // If the target parries the blow, how much is his weapon damaged by blocking the attacker #define ITEM_DECAY_FACTOR_BLOCKED 1.25F // If the target parries the blow, how much is the attacker's weapon damaged by getting blocked --- 151,154 ---- *************** *** 229,233 **** * TODO: Merge various mutually exclusive stats into unions to save space. The container stats and modifiers may be able to be merged (or maybe not). */ ! class psItem : public iScriptableVar, public iDeleteObjectCallback { public: --- 216,220 ---- * TODO: Merge various mutually exclusive stats into unions to save space. The container stats and modifiers may be able to be merged (or maybe not). */ ! class psItem : public iScriptableVar, public iDeleteObjectCallback, public CS::WeakReferenced { public: *************** *** 251,256 **** void SetGemObject( gemItem* object ); - psItemSafe* GetSafeReference() { return self_reference; } - psWorkGameEvent* GetTransformationEvent() { return transformationEvent; } void SetTransformationEvent(psWorkGameEvent* t) { transformationEvent = t; } --- 238,241 ---- *************** *** 932,937 **** bool pendingsave; - csRef<psItemSafe> self_reference; - #if SAVE_TRACER private: --- 917,920 ---- *************** *** 989,1006 **** }; - class psDelaySave : public psGameEvent - { - protected: - csRef<psItemSafe> item; - - public: - psDelaySave(int length, psItemSafe* item); - virtual void Trigger(); - - #if SAVE_DEBUG - private: - csString type, name; - #endif - }; - #endif --- 972,974 ---- Index: psquest.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/psquest.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** psquest.cpp 9 Nov 2006 03:10:19 -0000 1.31 --- psquest.cpp 12 Nov 2006 02:35:48 -0000 1.32 *************** *** 55,59 **** prerequisite = NULL; ! for(int i = 0;i < triggerPairs.Length(); i++) { TriggerResponse triggerResponse = triggerPairs.Get(i); --- 55,59 ---- prerequisite = NULL; ! for(size_t i = 0;i < triggerPairs.Length(); i++) { TriggerResponse triggerResponse = triggerPairs.Get(i); *************** *** 62,66 **** // delete subquests ! for(int i = 0;i < subquests.Length(); i++) CacheManager::GetSingleton().UnloadQuest(subquests.Get(i)); --- 62,66 ---- // delete subquests ! for(size_t i = 0;i < subquests.Length(); i++) CacheManager::GetSingleton().UnloadQuest(subquests.Get(i)); Index: psquest.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/bulkobjects/psquest.h,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** psquest.h 9 Nov 2006 17:39:16 -0000 1.18 --- psquest.h 12 Nov 2006 02:35:48 -0000 1.19 *************** *** 46,50 **** * This class holds the master list of all quests available in the game. */ ! class psQuest : public WeakReferenced { public: --- 46,50 ---- * This class holds the master list of all quests available in the game. */ ! class psQuest : public CS::WeakReferenced { public: |