fix copier token image

This commit is contained in:
Anthony Calosa
2017-01-26 15:32:17 +08:00
parent adcf6fb86d
commit 1428eeba06
10 changed files with 66 additions and 2 deletions

View File

@@ -906,7 +906,7 @@ type=Instant
[card] [card]
name=Adventuring Gear name=Adventuring Gear
auto={1}:equip auto={1}:equip
auto=teach(creature) transforms((,newability[@movedTo(land|myBattlefield):2/2])) auto=teach(creature) transforms((,newability[@movedTo(land|myBattlefield):2/2 ueot]))
text=Landfall - Whenever a land enters the battlefield under your control, equipped creature gets +2/+2 until end of turn. -- Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) text=Landfall - Whenever a land enters the battlefield under your control, equipped creature gets +2/+2 until end of turn. -- Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.)
mana={1} mana={1}
type=Artifact type=Artifact
@@ -63590,7 +63590,7 @@ subtype=Swamp
[card] [card]
name=Leering Emblem name=Leering Emblem
auto={2}:equip auto={2}:equip
auto=teach(creature) transforms((,newability[@movedTo(*|mystack):2/2])) auto=teach(creature) transforms((,newability[@movedTo(*|mystack):2/2 ueot]))
text=Whenever you cast a spell, equipped creature gets +2/+2 until end of turn. -- Equip {2} text=Whenever you cast a spell, equipped creature gets +2/+2 until end of turn. -- Equip {2}
mana={2} mana={2}
type=Artifact type=Artifact

View File

@@ -64,6 +64,7 @@ public:
int equipment; int equipment;
int auras; int auras;
bool wasDealtDamage; bool wasDealtDamage;
bool combatdamageToOpponent;
bool damageToOpponent; bool damageToOpponent;
bool damageToController; bool damageToController;
bool damageToCreature; bool damageToCreature;

View File

@@ -80,6 +80,7 @@ public:
} }
}; };
virtual JQuadPtr RetrieveCard(MTGCard * card, int style = RETRIEVE_NORMAL,int submode = CACHE_NORMAL) = 0; virtual JQuadPtr RetrieveCard(MTGCard * card, int style = RETRIEVE_NORMAL,int submode = CACHE_NORMAL) = 0;
virtual JQuadPtr RetrieveCardToken(MTGCard * card, int style = RETRIEVE_NORMAL,int submode = CACHE_NORMAL, int tId = 0) = 0;
virtual JSample * RetrieveSample(const string& filename, int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL) = 0; virtual JSample * RetrieveSample(const string& filename, int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL) = 0;
virtual JTexture * RetrieveTexture(const string& filename, int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL) = 0; virtual JTexture * RetrieveTexture(const string& filename, int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL) = 0;
virtual JQuadPtr RetrieveQuad(const string& filename, float offX=0.0f, float offY=0.0f, float width=0.0f, float height=0.0f, string resname="", int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL, int id = 0) = 0; virtual JQuadPtr RetrieveQuad(const string& filename, float offX=0.0f, float offY=0.0f, float width=0.0f, float height=0.0f, string resname="", int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL, int id = 0) = 0;

View File

@@ -141,6 +141,7 @@ public:
bool IsThreaded(); bool IsThreaded();
JQuadPtr RetrieveCard(MTGCard * card, int style = RETRIEVE_NORMAL,int submode = CACHE_NORMAL); JQuadPtr RetrieveCard(MTGCard * card, int style = RETRIEVE_NORMAL,int submode = CACHE_NORMAL);
JQuadPtr RetrieveCardToken(MTGCard * card, int style = RETRIEVE_NORMAL,int submode = CACHE_NORMAL, int tId = 0);
JSample * RetrieveSample(const string& filename, int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL); JSample * RetrieveSample(const string& filename, int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL);
JTexture * RetrieveTexture(const string& filename, int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL); JTexture * RetrieveTexture(const string& filename, int style = RETRIEVE_NORMAL, int submode = CACHE_NORMAL);
JQuadPtr RetrieveQuad(const string& filename, float offX=0.0f, float offY=0.0f, float width=0.0f, float height=0.0f, string resname="", int style = RETRIEVE_LOCK, int submode = CACHE_NORMAL, int id = 0); JQuadPtr RetrieveQuad(const string& filename, float offX=0.0f, float offY=0.0f, float width=0.0f, float height=0.0f, string resname="", int style = RETRIEVE_LOCK, int submode = CACHE_NORMAL, int id = 0);

View File

@@ -148,6 +148,11 @@ void CardGui::Render()
MTGCard * fcard = MTGCollection()->getCardByName(card->name); MTGCard * fcard = MTGCollection()->getCardByName(card->name);
quad = game->getResourceManager()->RetrieveCard(fcard, CACHE_THUMB); quad = game->getResourceManager()->RetrieveCard(fcard, CACHE_THUMB);
} }
if (game && card->hasCopiedToken && !quad.get())
{
MTGCard * tcard = MTGCollection()->getCardById(abs(card->copiedID));
quad = game->getResourceManager()->RetrieveCardToken(tcard, CACHE_THUMB, 1, abs(card->copiedID));
}
if (quad.get()) if (quad.get())
alternate = false; alternate = false;
else else
@@ -1144,6 +1149,12 @@ void CardGui::RenderBig(MTGCard* card, const Pos& pos, bool thumb, bool noborder
MTGCard * fcard = MTGCollection()->getCardByName(kcard->name); MTGCard * fcard = MTGCollection()->getCardByName(kcard->name);
quad = WResourceManager::Instance()->RetrieveCard(fcard); quad = WResourceManager::Instance()->RetrieveCard(fcard);
} }
if (kcard->getObserver() && kcard->hasCopiedToken && !quad.get())
{
MTGCard * tcard = MTGCollection()->getCardById(abs(kcard->copiedID));
quad = thumb ? WResourceManager::Instance()->RetrieveCardToken(tcard, RETRIEVE_THUMB, 1, abs(kcard->copiedID))
: WResourceManager::Instance()->RetrieveCardToken(tcard, RETRIEVE_NORMAL, 1, abs(kcard->copiedID));
}
if (quad.get()) if (quad.get())
{ {
if (quad->mHeight < quad->mWidth) if (quad->mHeight < quad->mWidth)

View File

@@ -261,6 +261,7 @@ int Damage::resolve()
if ( typeOfDamage == 1 && target == source->controller()->opponent() )//add vector prowledtypes. if ( typeOfDamage == 1 && target == source->controller()->opponent() )//add vector prowledtypes.
{ {
source->controller()->dealsdamagebycombat = 1; // for restriction check source->controller()->dealsdamagebycombat = 1; // for restriction check
((MTGCardInstance*)source)->combatdamageToOpponent = true; //check
vector<string> values = MTGAllCards::getCreatureValuesById();//getting a weird crash here. rarely. vector<string> values = MTGAllCards::getCreatureValuesById();//getting a weird crash here. rarely.
for (size_t i = 0; i < values.size(); ++i) for (size_t i = 0; i < values.size(); ++i)
{ {

View File

@@ -968,6 +968,7 @@ void GameObserver::gameStateBasedEffects()
c->wasDealtDamage = false; c->wasDealtDamage = false;
c->damageToController = false; c->damageToController = false;
c->damageToOpponent = false; c->damageToOpponent = false;
c->combatdamageToOpponent = false;
c->damageToCreature = false; c->damageToCreature = false;
c->isAttacking = NULL; c->isAttacking = NULL;
} }

View File

@@ -577,6 +577,13 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
if(card->didattacked) if(card->didattacked)
return 0; return 0;
} }
check = restriction[i].find("didcombatdamagetofoe");
if(check != string::npos)
{
if(!card->combatdamageToOpponent)
return 0;
}
check = restriction[i].find("ownerscontrol"); check = restriction[i].find("ownerscontrol");
if(check != string::npos) if(check != string::npos)

View File

@@ -218,6 +218,7 @@ void MTGCardInstance::initMTGCI()
sunburst = 0; sunburst = 0;
equipment = 0; equipment = 0;
auras = 0; auras = 0;
combatdamageToOpponent = false;
damageToOpponent = false; damageToOpponent = false;
damageToController = false; damageToController = false;
damageToCreature = false; damageToCreature = false;

View File

@@ -263,6 +263,46 @@ JQuadPtr ResourceManagerImpl::RetrieveCard(MTGCard * card, int style, int submod
return JQuadPtr(); return JQuadPtr();
} }
JQuadPtr ResourceManagerImpl::RetrieveCardToken(MTGCard * card, int style, int submode, int tId)
{
//Cards are never, ever resource managed, so just check cache.
if (!card || options[Options::DISABLECARDS].number) return JQuadPtr();
submode = submode | TEXTURE_SUB_CARD;
//static std::ostringstream filename;
//filename.str("");
string filename;
filename.reserve(4096);
//filename << setlist[card->setId] << "/" << card->getImageName();
filename.append(setlist[card->setId]);
filename.append("/");
int id = -card->getMTGId();
if(tId)
id = -tId;
ostringstream imagename;
imagename << "-" << id << "t.jpg";
filename.append(imagename.str());
//Aliases.
if (style == RETRIEVE_THUMB)
{
submode = submode | TEXTURE_SUB_THUMB;
style = RETRIEVE_NORMAL;
}
JQuadPtr jq = RetrieveQuad(filename, 0, 0, 0, 0, "", style, submode | TEXTURE_SUB_5551, id);
lastError = textureWCache.mError;
if (jq)
{
jq->SetHotSpot(static_cast<float> (jq->mTex->mWidth / 2), static_cast<float> (jq->mTex->mHeight / 2));
return jq;
}
return JQuadPtr();
}
int ResourceManagerImpl::AddQuadToManaged(const WManagedQuad& inQuad) int ResourceManagerImpl::AddQuadToManaged(const WManagedQuad& inQuad)
{ {
int id = mIDLookupMap.size(); int id = mIDLookupMap.size();