Merge pull request #845 from kevlahnota/master

border & mask
This commit is contained in:
Anthony Calosa
2016-08-08 18:45:44 +08:00
committed by GitHub
2 changed files with 22 additions and 28 deletions

View File

@@ -36,7 +36,7 @@ protected:
static void RenderBig(MTGCard * card, const Pos& pos, bool thumb = false, bool noborder = false, bool smallerscale = false, bool ingame = false); static void RenderBig(MTGCard * card, const Pos& pos, bool thumb = false, bool noborder = false, bool smallerscale = false, bool ingame = false);
static void RenderCountersBig(MTGCard * card, const Pos& pos, int drawMode = DrawMode::kNormal); static void RenderCountersBig(MTGCard * card, const Pos& pos, int drawMode = DrawMode::kNormal);
static void AlternateRender(MTGCard * card, const Pos& pos); static void AlternateRender(MTGCard * card, const Pos& pos, bool noborder = false, bool smallerscale = false);
static void TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad); static void TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad);
static string FormattedData (string data, string replace, string value); static string FormattedData (string data, string replace, string value);
static bool FilterCard (MTGCard * card,string filter); static bool FilterCard (MTGCard * card,string filter);

View File

@@ -124,7 +124,7 @@ void CardGui::DrawCard(MTGCard* inCard, const Pos& inPosition, int inMode, bool
RenderBig(inCard, inPosition, thumb, noborder, smallerscale, ingame); RenderBig(inCard, inPosition, thumb, noborder, smallerscale, ingame);
break; break;
case DrawMode::kText: case DrawMode::kText:
AlternateRender(inCard, inPosition); AlternateRender(inCard, inPosition, noborder, smallerscale);
break; break;
default: default:
break; break;
@@ -137,6 +137,10 @@ void CardGui::Render()
WFont * mFont = game?game->getResourceManager()->GetWFont(Fonts::MAIN_FONT):WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT); WFont * mFont = game?game->getResourceManager()->GetWFont(Fonts::MAIN_FONT):WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
JRenderer * renderer = JRenderer::GetInstance(); JRenderer * renderer = JRenderer::GetInstance();
TargetChooser * tc = NULL; TargetChooser * tc = NULL;
//fake border and mask...
JQuadPtr fakeborder = game? game->getResourceManager()->GetQuad("white"):WResourceManager::Instance()->GetQuad("white");
JQuadPtr highlightborder = game? game->getResourceManager()->GetQuad("white"):WResourceManager::Instance()->GetQuad("white");
JQuadPtr fakemask = game? game->getResourceManager()->GetQuad("white"):WResourceManager::Instance()->GetQuad("white");
if (game) if (game)
tc = game->getCurrentTargetChooser(); tc = game->getCurrentTargetChooser();
@@ -252,11 +256,6 @@ void CardGui::Render()
if (quad) if (quad)
{ {
quad->SetColor(ARGB(static_cast<unsigned char>(actA),255,255,255)); quad->SetColor(ARGB(static_cast<unsigned char>(actA),255,255,255));
//fake border...
JQuadPtr fakeborder;
JQuadPtr highlightborder;
fakeborder = game? game->getResourceManager()->GetQuad("white"):WResourceManager::Instance()->GetQuad("white");
highlightborder = game? game->getResourceManager()->GetQuad("white"):WResourceManager::Instance()->GetQuad("white");
if(fakeborder) if(fakeborder)
{ {
int rgb = isBlackBorder(setlist[card->setId].c_str())?15:240; int rgb = isBlackBorder(setlist[card->setId].c_str())?15:240;
@@ -265,7 +264,7 @@ void CardGui::Render()
else else
fakeborder->SetColor(ARGB((int)(actA),rgb,rgb,rgb)); fakeborder->SetColor(ARGB((int)(actA),rgb,rgb,rgb));
renderer->RenderQuad(fakeborder.get(), actX, (actY-yy), actT, (28 * (actZ*zz) + 1) / 16, 40 * (actZ*zz) / 16); renderer->RenderQuad(fakeborder.get(), actX, (actY-yy), actT, (28 * (actZ*zz) + 1) / 16, 40 * (actZ*zz) / 16);
renderer->DrawRect(actX, (actY-yy),((28 * (actZ*zz) + 1) / 16),(40 * (actZ*zz) / 16),ARGB((int)(actA),240,240,240)); //renderer->DrawRect(actX, (actY-yy),((28 * (actZ*zz) + 1) / 16),(40 * (actZ*zz) / 16),ARGB((int)(actA),240,240,240));
} }
//draw border for highlighting //draw border for highlighting
if (game) if (game)
@@ -484,7 +483,7 @@ void CardGui::Render()
if (shadow) if (shadow)
{ {
shadow->SetColor(ARGB(200,255,255,255)); shadow->SetColor(ARGB(200,255,255,255));
renderer->RenderQuad(shadow.get(), actX, (actY-yy), actT, (25 * (actZ*zz) + 1) / 16, 37 * (actZ*zz) / 16); renderer->RenderQuad(shadow.get(), actX, (actY-yy), actT, (28 * (actZ*zz) + 1) / 16, 40 * (actZ*zz) / 16);
} }
} }
@@ -494,28 +493,18 @@ void CardGui::Render()
if ((tc && tc->alreadyHasTarget(card)) || (game && card == game->mLayers->actionLayer()->currentActionCard))//paint targets red. if ((tc && tc->alreadyHasTarget(card)) || (game && card == game->mLayers->actionLayer()->currentActionCard))//paint targets red.
{ {
float xy = yy>0.0f?2.0f:1.0f; if(fakemask)
float modx = mHasFocus?xy:0.0f;
if (card->isTapped())
{ {
renderer->FillRect(actX - (scale * quad->mWidth / 2)-(7+modx),(actY-yy) - (scale * quad->mHeight / 2)+(7+modx),scale* quad->mHeight,scale * quad->mWidth, ARGB(128,255,0,0)); fakemask->SetColor(ARGB(150,255,0,0));
} renderer->RenderQuad(fakemask.get(), actX, (actY-yy), actT, (26 * (actZ*zz) + 1) / 16, 38 * (actZ*zz) / 16);
else
{
renderer->FillRect(actX - (scale * quad->mWidth / 2),(actY-yy) - (scale * quad->mHeight / 2), scale * quad->mWidth, scale* quad->mHeight, ARGB(128,255,0,0));
} }
} }
if(tc && tc->source && tc->source->view && tc->source->view->actY >= 1.3 && card == tc->source)//paint the source green while infocus. if(tc && tc->source && tc->source->view && tc->source->view->actY >= 1.3 && card == tc->source)//paint the source green while infocus.
{ {
float xy = yy>0.0f?2.0f:1.0f; if(fakemask)
float modx = mHasFocus?xy:0.0f;
if (tc->source->isTapped())
{ {
renderer->FillRect(actX - (scale * quad->mWidth / 2)-(7+modx),(actY-yy) - (scale * quad->mHeight / 2)+(7+modx),scale* quad->mHeight,scale * quad->mWidth, ARGB(128,0,255,0)); fakemask->SetColor(ARGB(150,0,255,0));
} renderer->RenderQuad(fakemask.get(), actX, (actY-yy), actT, (26 * (actZ*zz) + 1) / 16, 38 * (actZ*zz) / 16);
else
{
renderer->FillRect(tc->source->view->actX - (scale * quad->mWidth / 2),(tc->source->view->actY-yy) - (scale * quad->mHeight / 2), scale*quad->mWidth, scale*quad->mHeight, ARGB(128,0,255,0));
} }
} }
@@ -545,12 +534,13 @@ JQuadPtr CardGui::AlternateThumbQuad(MTGCard * card)
return q; return q;
} }
void CardGui::AlternateRender(MTGCard * card, const Pos& pos) void CardGui::AlternateRender(MTGCard * card, const Pos& pos, bool noborder, bool smallerscale)
{ {
// Draw the "unknown" card model // Draw the "unknown" card model
JRenderer * renderer = JRenderer::GetInstance(); JRenderer * renderer = JRenderer::GetInstance();
JQuadPtr q; JQuadPtr q;
//set id
string cardsetname = setlist[card->setId].c_str();
float x = pos.actX; float x = pos.actX;
vector<ModRulesBackGroundCardGuiItem *>items = gModRules.cardgui.background; vector<ModRulesBackGroundCardGuiItem *>items = gModRules.cardgui.background;
@@ -574,6 +564,10 @@ void CardGui::AlternateRender(MTGCard * card, const Pos& pos)
float scale = pos.actZ * 250 / q->mHeight; float scale = pos.actZ * 250 / q->mHeight;
q->SetColor(ARGB((int)pos.actA,255,255,255)); q->SetColor(ARGB((int)pos.actA,255,255,255));
//Draw border
DrawBorder(cardsetname, pos, x, noborder, smallerscale);
//render alternate
renderer->RenderQuad(q.get(), x, pos.actY, pos.actT, scale, scale); renderer->RenderQuad(q.get(), x, pos.actY, pos.actT, scale, scale);
} }
@@ -1186,7 +1180,7 @@ void CardGui::RenderBig(MTGCard* card, const Pos& pos, bool thumb, bool noborder
//DebugTrace("Unable to fetch image: " << card->getImageName()); //DebugTrace("Unable to fetch image: " << card->getImageName());
// If we come here, we do not have the picture. // If we come here, we do not have the picture.
AlternateRender(card, pos); AlternateRender(card, pos, noborder, smallerscale);
} }
void CardGui::DrawBorder(string cardsetname, const Pos& pos, float x, bool noborder, bool smallerscale) void CardGui::DrawBorder(string cardsetname, const Pos& pos, float x, bool noborder, bool smallerscale)