Browse Source

- Added new files that should have been in last commit

Ivan Savenko 11 years ago
parent
commit
153dd1f5f9
3 changed files with 70 additions and 1 deletions
  1. 1 1
      lib/CMakeLists.txt
  2. 12 0
      lib/CObjectConstructor.cpp
  3. 57 0
      lib/CObjectConstructor.h

+ 1 - 1
lib/CMakeLists.txt

@@ -68,8 +68,8 @@ set(lib_SRCS
 		CHeroHandler.cpp
 		CModHandler.cpp
 		CObstacleInstance.cpp
-		CObjectWithReward.cpp
 		CObjectConstructor.cpp
+		CObjectWithReward.cpp
 		CSpellHandler.cpp
 		CThreadHelper.cpp
 		CTownHandler.cpp

+ 12 - 0
lib/CObjectConstructor.cpp

@@ -0,0 +1,12 @@
+#include "StdInc.h"
+#include "CObjectConstructor.h"
+
+/*
+ * CObjectConstructor.cpp, part of VCMI engine
+ *
+ * Authors: listed in file AUTHORS in main folder
+ *
+ * License: GNU General Public License v2.0 or later
+ * Full text of license available in license.txt file, in main folder
+ *
+ */

+ 57 - 0
lib/CObjectConstructor.h

@@ -0,0 +1,57 @@
+#pragma once
+
+#include "CObjectWithReward.h"
+#include "CDefObjInfoHandler.h"
+#include "JsonNode.h"
+
+/*
+ * CObjectConstructor.h, part of VCMI engine
+ *
+ * Authors: listed in file AUTHORS in main folder
+ *
+ * License: GNU General Public License v2.0 or later
+ * Full text of license available in license.txt file, in main folder
+ *
+ */
+
+class CRandomRewardObjectInfo : public IObjectInfo
+{
+	JsonNode objectConfig;
+
+public:
+	bool givesResources() const override;
+
+	bool givesExperience() const override;
+	bool givesMana() const override;
+	bool givesMovement() const override;
+
+	bool givesPrimarySkills() const override;
+	bool givesSecondarySkills() const override;
+
+	bool givesArtifacts() const override;
+	bool givesCreatures() const override;
+	bool givesSpells() const override;
+
+	bool givesBonuses() const override;
+
+	void configureObject(CObjectWithReward * object) const;
+
+	CRandomRewardObjectInfo()
+	{}
+
+	void init(JsonNode objectConfig);
+};
+
+class CObjectWithRewardConstructor : public IObjectTypeHandler
+{
+	std::map<ui32, std::map<ui32, CRewardObjectInfo> > objectConfigs;
+
+public:
+	CGObjectInstance * create(ui32 id, ui32 subID) const override;
+
+	bool handlesID(ui32 id) const override;
+
+	void configureObject(CGObjectInstance * object) const override;
+
+	IObjectInfo * getObjectInfo(ui32 id, ui32 subID) const override;
+};