hiddenview

if the target is in library and the source has the hiddenface ability
then hide it
This commit is contained in:
Anthony Calosa
2017-02-14 05:09:28 +08:00
parent 143b3d98b1
commit 2d383e237f
4 changed files with 33 additions and 3 deletions
+1
View File
@@ -134,6 +134,7 @@ class GameObserver{
int isInGrave(MTGCardInstance * card); int isInGrave(MTGCardInstance * card);
int isInExile(MTGCardInstance * card); int isInExile(MTGCardInstance * card);
int isInHand(MTGCardInstance * card); int isInHand(MTGCardInstance * card);
int isInLibrary(MTGCardInstance * card);
virtual void Update(float dt); virtual void Update(float dt);
void Render(); void Render();
void ButtonPressed(PlayGuiObject*); void ButtonPressed(PlayGuiObject*);
+1
View File
@@ -221,6 +221,7 @@ public:
BLOCK_COST = 37, BLOCK_COST = 37,
GRANTEDFLASHBACK_COST = 38, GRANTEDFLASHBACK_COST = 38,
FORCED_TOKEN_CREATOR = 39, FORCED_TOKEN_CREATOR = 39,
HIDDENVIEW = 40,
}; };
}; };
+19 -2
View File
@@ -94,7 +94,7 @@ void Interruptible::Render(MTGCardInstance * source, JQuad * targetQuad, string
mFont->SetColor(ARGB(255,255,255,255)); mFont->SetColor(ARGB(255,255,255,255));
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
JRenderer * renderer = JRenderer::GetInstance(); JRenderer * renderer = JRenderer::GetInstance();
bool hiddenview = source->has(Constants::HIDDENFACE)?true:false; bool hiddenview = aType == MTGAbility::HIDDENVIEW?true:false;
if (!targetQuad) if (!targetQuad)
{ {
@@ -241,6 +241,8 @@ void StackAbility::Render()
MTGCardInstance * source = ability->source; MTGCardInstance * source = ability->source;
string alt1 = source->getName(); string alt1 = source->getName();
vector<JQuadPtr> mytargetQuads; vector<JQuadPtr> mytargetQuads;
int fmLibrary = 0;
int force = 0;
Targetable * _target = ability->target; Targetable * _target = ability->target;
if (ability->getActionTc()) if (ability->getActionTc())
@@ -257,7 +259,19 @@ void StackAbility::Render()
{ {
Targetable * tt = ability->getActionTc()->getTargetsFrom()[i]; Targetable * tt = ability->getActionTc()->getTargetsFrom()[i];
if(tt) if(tt)
{
if( ((Damageable *)(tt))->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE )
{
if( source->has(Constants::HIDDENFACE) && !observer->isInLibrary(((MTGCardInstance *)(tt))) )
mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() ); mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() );
else if ( !source->has(Constants::HIDDENFACE) )
mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() );
else
fmLibrary++;
}
else
mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() );
}
} }
} }
//end //end
@@ -279,10 +293,13 @@ void StackAbility::Render()
} }
} }
if(source->has(Constants::HIDDENFACE) && fmLibrary)
force = MTGAbility::HIDDENVIEW;
if(observer->gameType() == GAME_TYPE_MOMIR) if(observer->gameType() == GAME_TYPE_MOMIR)
Interruptible::Render(source, quad.get(), alt1, alt2, action, true, ability->aType, mytargetQuads); Interruptible::Render(source, quad.get(), alt1, alt2, action, true, ability->aType, mytargetQuads);
else else
Interruptible::Render(source, quad.get(), alt1, alt2, action, false, 0, mytargetQuads); Interruptible::Render(source, quad.get(), alt1, alt2, action, false, force, mytargetQuads);
} }
StackAbility::StackAbility(GameObserver* observer, int id, MTGAbility * _ability) : StackAbility::StackAbility(GameObserver* observer, int id, MTGAbility * _ability) :
Interruptible(observer, id), ability(_ability) Interruptible(observer, id), ability(_ability)
+11
View File
@@ -1630,6 +1630,17 @@ int GameObserver::isInHand(MTGCardInstance * card)
} }
return 0; return 0;
} }
int GameObserver::isInLibrary(MTGCardInstance * card)
{
for (int i = 0; i < 2; i++)
{
MTGGameZone * library = players[i]->game->library;
if (players[i]->game->isInZone(card, library))
return 1;
}
return 0;
}
void GameObserver::cleanupPhase() void GameObserver::cleanupPhase()
{ {
currentPlayer->cleanupPhase(); currentPlayer->cleanupPhase();