Explorar o código

Change callback interface

nordsoft %!s(int64=2) %!d(string=hai) anos
pai
achega
c0b90432cb
Modificáronse 4 ficheiros con 10 adicións e 5 borrados
  1. 1 1
      client/Client.h
  2. 6 1
      lib/IGameCallback.h
  3. 2 2
      server/CGameHandler.cpp
  4. 1 1
      server/CGameHandler.h

+ 1 - 1
client/Client.h

@@ -231,7 +231,7 @@ public:
 	void changeObjPos(ObjectInstanceID objid, int3 newPos) override {};
 	void sendAndApply(CPackForClient * pack) override {};
 	void heroExchange(ObjectInstanceID hero1, ObjectInstanceID hero2) override {};
-	void castSpell(const CGHeroInstance *hero, SpellID spellID, const int3 &pos) override {};
+	void castSpell(const spells::Caster * caster, SpellID spellID, const int3 &pos) override {};
 
 	void changeFogOfWar(int3 center, ui32 radius, PlayerColor player, bool hide) override {}
 	void changeFogOfWar(std::unordered_set<int3, ShashInt3> & tiles, PlayerColor player, bool hide) override {}

+ 6 - 1
lib/IGameCallback.h

@@ -28,6 +28,11 @@ class CStackBasicDescriptor;
 class CGCreature;
 struct ShashInt3;
 
+namespace spells
+{
+	class Caster;
+}
+
 #if SCRIPTING_ENABLED
 namespace scripting
 {
@@ -133,7 +138,7 @@ public:
 	virtual void changeFogOfWar(int3 center, ui32 radius, PlayerColor player, bool hide) = 0;
 	virtual void changeFogOfWar(std::unordered_set<int3, ShashInt3> &tiles, PlayerColor player, bool hide) = 0;
 	
-	virtual void castSpell(const CGHeroInstance *hero, SpellID spellID, const int3 &pos) = 0;
+	virtual void castSpell(const spells::Caster * caster, SpellID spellID, const int3 &pos) = 0;
 };
 
 class DLL_LINKAGE CNonConstInfoCallback : public CPrivilegedInfoCallback

+ 2 - 2
server/CGameHandler.cpp

@@ -6282,14 +6282,14 @@ bool CGameHandler::moveStack(const StackLocation &src, const StackLocation &dst,
 	return true;
 }
 
-void CGameHandler::castSpell(const CGHeroInstance *hero, SpellID spellID, const int3 &pos)
+void CGameHandler::castSpell(const spells::Caster * caster, SpellID spellID, const int3 &pos)
 {
 	const CSpell * s = spellID.toSpell();
 	if(!s)
 		return;
 
 	AdventureSpellCastParameters p;
-	p.caster = hero;
+	p.caster = caster;
 	p.pos = pos;
 
 	s->adventureCast(spellEnv, p);

+ 1 - 1
server/CGameHandler.h

@@ -275,7 +275,7 @@ public:
 	void moveArmy(const CArmedInstance *src, const CArmedInstance *dst, bool allowMerging);
 	const ObjectInstanceID putNewObject(Obj ID, int subID, int3 pos);
 
-	void castSpell(const CGHeroInstance *hero, SpellID spellID, const int3 &pos);
+	void castSpell(const spells::Caster * caster, SpellID spellID, const int3 &pos);
 
 	template <typename Handler> void serialize(Handler &h, const int version)
 	{