From: kainazzzo Date: Mon, 21 Sep 2009 22:02:32 +0000 (+0000) Subject: As part of sticking to the Single Responsibility Principle of OOD, I am creating... X-Git-Url: https://jfr.im/git/irc/gameservirc.git/commitdiff_plain/382a51bfa84449294a80da33d71d0e42d8ce5606 As part of sticking to the Single Responsibility Principle of OOD, I am creating a class for cloning items git-svn-id: https://svn.code.sf.net/p/gameservirc/code/trunk@531 bc333340-6410-0410-a689-9d09f3c113fa --- diff --git a/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ArmorGO.h b/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ArmorGO.h index cd127b9..09ae0cd 100644 --- a/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ArmorGO.h +++ b/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/ArmorGO.h @@ -17,7 +17,7 @@ public: virtual ~ArmorGO(); virtual ItemTypes::ItemType Type(void) const; - virtual ArmorGO *Clone(void) const; + virtual ItemGO *Clone(void) const; private: }; diff --git a/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/PlayerGO.h b/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/PlayerGO.h index 36780e4..420d20a 100644 --- a/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/PlayerGO.h +++ b/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/GameObjects/PlayerGO.h @@ -137,7 +137,7 @@ namespace GameServ { namespace GameLayer { namespace GameObjects bool operator==(const PlayerGO &right) const; bool operator!=(const PlayerGO &right) const; - virtual PlayerGO *Clone(void) const; + virtual ItemGO *Clone(void) const; virtual ObjectTypes::ObjectType ObjectType(void) const; diff --git a/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/Helpers/ItemCloner.h b/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/Helpers/ItemCloner.h new file mode 100644 index 0000000..117ce42 --- /dev/null +++ b/gameserv-2.0/libgameservgldl/include/GameServ/GameLayer/Helpers/ItemCloner.h @@ -0,0 +1,18 @@ +#ifndef __GS__ITEMCLONER_H__ +#define __GS__ITEMCLONER_H__ + +#include +using GameServ::GameLayer::GameObjects::ItemGO; + +namespace GameServ { namespace GameLayer { + +class ItemCloner +{ +public: +private: + +}; + +}} // GameServ::GameLayer + +#endif \ No newline at end of file diff --git a/gameserv-2.0/libgameservgldl/libgameservgldl.vcproj b/gameserv-2.0/libgameservgldl/libgameservgldl.vcproj index 80bf783..1fcc984 100644 --- a/gameserv-2.0/libgameservgldl/libgameservgldl.vcproj +++ b/gameserv-2.0/libgameservgldl/libgameservgldl.vcproj @@ -314,6 +314,18 @@ > + + + + + + diff --git a/gameserv-2.0/libgameservgldl/src/DataLayer/File/FilePlayerDAO.cpp b/gameserv-2.0/libgameservgldl/src/DataLayer/File/FilePlayerDAO.cpp index f983ffc..5e1e598 100644 --- a/gameserv-2.0/libgameservgldl/src/DataLayer/File/FilePlayerDAO.cpp +++ b/gameserv-2.0/libgameservgldl/src/DataLayer/File/FilePlayerDAO.cpp @@ -290,7 +290,7 @@ shared_ptr FilePlayerDAO::CreatePlayerFromLine(const string &line) con throw DataLayerException(str(format("Corrupt %1% file: Non integer item uses for item %2% on player %3%") % mFilename % itemid % spPlayer->Name()), __FILE__, __LINE__); } - spPlayer->AddItemToInventory(spItem); + spPlayer->AddItemToInventory(spItem->Clone()); tok_iter++; } diff --git a/gameserv-2.0/libgameservgldl/src/GameLayer/Helpers/ItemCloner.cpp b/gameserv-2.0/libgameservgldl/src/GameLayer/Helpers/ItemCloner.cpp new file mode 100644 index 0000000..e69de29