fixed a memleak introduced in r3639..

i also changed the logic behind wololo "ueot " instant ability creator...instead of sending it directly to genericinstantability i created a new class called AGenericInstantWrapper...which handles the adding, cloning, removel ect, exactly how we have always handled "instant abilities"...this should correct any further "odd edge case" issues with the new "ueot " code...

later i will varify if it works with every single ability we current build with a wrapper class...and see if i cant remove them all and convert "ueot " into the NEW until end of turn handling method....lets cross our fingers as it would remove ALOT of extra code if successful....
This commit is contained in:
omegablast2002@yahoo.com
2011-05-10 18:52:51 +00:00
parent 5a1540e0a1
commit 2c9d029bdc
3 changed files with 48 additions and 2 deletions

View File

@@ -69,6 +69,39 @@ GenericActivatedAbility::~GenericActivatedAbility()
SAFE_DELETE(ability);
}
//a generic instant wrapper
//this turns any MTGAbility object into an instant ability.
AGenericInstantWrapper::AGenericInstantWrapper(int id, MTGCardInstance * source, Damageable * target,MTGAbility * wrapThis) :
InstantAbility(id, source, target)
{
ability = wrapThis;
}
int AGenericInstantWrapper::resolve()
{
MTGAbility * a = ability->clone();
GenericInstantAbility * wrapper = NEW GenericInstantAbility(1, source, (Damageable *) (this->target), a);
wrapper->addToGame();
return 1;
}
const char * AGenericInstantWrapper::getMenuText()
{
return ability->getMenuText();
}
AGenericInstantWrapper * AGenericInstantWrapper::clone() const
{
AGenericInstantWrapper * a = NEW AGenericInstantWrapper(*this);
a->ability = this->ability->clone();
a->isClone = 1;
return a;
}
AGenericInstantWrapper::~AGenericInstantWrapper()
{
SAFE_DELETE(ability);
}
//AA Alter Poison
AAAlterPoison::AAAlterPoison(int _id, MTGCardInstance * _source, Targetable * _target, int poison, ManaCost * _cost,
int who) :