Преглед на файлове

Fix getting battlefield crash

Andrii Danylchenko преди 3 години
родител
ревизия
665bd4346e
променени са 5 файла, в които са добавени 15 реда и са изтрити 1 реда
  1. 6 0
      lib/mapObjects/CGHeroInstance.cpp
  2. 2 0
      lib/mapObjects/CGHeroInstance.h
  3. 1 1
      lib/mapObjects/CObjectHandler.h
  4. 5 0
      lib/mapObjects/MiscObjects.cpp
  5. 1 0
      lib/mapObjects/MiscObjects.h

+ 6 - 0
lib/mapObjects/CGHeroInstance.cpp

@@ -151,6 +151,12 @@ int3 CGHeroInstance::convertPosition(int3 src, bool toh3m) //toh3m=true: manifes
 		return src;
 	}
 }
+
+BattleField CGHeroInstance::getBattlefield() const
+{
+	return BattleField::NONE;
+}
+
 int3 CGHeroInstance::getPosition(bool h3m) const //h3m=true - returns position of hero object; h3m=false - returns position of hero 'manifestation'
 {
 	if (h3m)

+ 2 - 0
lib/mapObjects/CGHeroInstance.h

@@ -270,6 +270,8 @@ public:
 	void afterAddToMap(CMap * map) override;
 
 	void updateFrom(const JsonNode & data) override;
+
+	BattleField getBattlefield() const override;
 protected:
 	void setPropertyDer(ui8 what, ui32 val) override;//synchr
 	///common part of hero instance and hero definition

+ 1 - 1
lib/mapObjects/CObjectHandler.h

@@ -159,7 +159,7 @@ public:
 	std::set<int3> getBlockedOffsets() const; //returns set of relative positions blocked by this object
 	bool isVisitable() const; //returns true if object is visitable
 
-	BattleField getBattlefield() const;
+	virtual BattleField getBattlefield() const;
 
 	virtual bool isTile2Terrain() const { return false; }
 

+ 5 - 0
lib/mapObjects/MiscObjects.cpp

@@ -1406,6 +1406,11 @@ void CGArtifact::pick(const CGHeroInstance * h) const
 	cb->removeObject(this);
 }
 
+BattleField CGArtifact::getBattlefield() const
+{
+	return BattleField::NONE;
+}
+
 void CGArtifact::battleFinished(const CGHeroInstance *hero, const BattleResult &result) const
 {
 	if(result.winner == 0) //attacker won

+ 1 - 0
lib/mapObjects/MiscObjects.h

@@ -201,6 +201,7 @@ public:
 	void initObj(CRandomGenerator & rand) override;
 
 	void afterAddToMap(CMap * map) override;
+	BattleField getBattlefield() const override;
 
 	template <typename Handler> void serialize(Handler &h, const int version)
 	{