فهرست منبع

fix copy of ResourceSet

Laserlicht 1 ماه پیش
والد
کامیت
3d382eefee
2فایلهای تغییر یافته به همراه15 افزوده شده و 2 حذف شده
  1. 5 2
      lib/ResourceSet.cpp
  2. 10 0
      lib/ResourceSet.h

+ 5 - 2
lib/ResourceSet.cpp

@@ -30,6 +30,11 @@ ResourceSet::ResourceSet(const JsonNode & node)
 		container[i] = static_cast<int>(node[i.toResource()->getJsonKey()].Float());
 }
 
+ResourceSet::ResourceSet(const ResourceSet& rhs)
+	: container(rhs.container) // vector copy constructor
+{
+}
+
 void ResourceSet::serializeJson(JsonSerializeFormat & handler, const std::string & fieldName)
 {
 	if(handler.saving && !nonZero())
@@ -37,10 +42,8 @@ void ResourceSet::serializeJson(JsonSerializeFormat & handler, const std::string
 	auto s = handler.enterStruct(fieldName);
 
 	for(auto & idx : LIBRARY->resourceTypeHandler->getAllObjects())
-	{
 		handler.serializeInt(idx.toResource()->getJsonKey(), this->operator[](idx), 0);
 }
-}
 
 bool ResourceSet::nonZero() const
 {

+ 10 - 0
lib/ResourceSet.h

@@ -31,6 +31,7 @@ public:
 	// read resources set from json. Format example: { "gold": 500, "wood":5 }
 	DLL_LINKAGE ResourceSet(const JsonNode & node);
 	DLL_LINKAGE ResourceSet();
+	DLL_LINKAGE ResourceSet(const ResourceSet& rhs);
 
 
 #define scalarOperator(OPSIGN)									\
@@ -179,6 +180,15 @@ public:
 		return *this;
 	}
 
+	ResourceSet& operator=(const ResourceSet& rhs)
+	{
+		if (this != &rhs)
+		{
+			container = rhs.container;
+		}
+		return *this;
+	}
+
 	ResourceSet operator-() const
 	{
 		ResourceSet ret;