Resuming on my threading support work with the card caching mechanism. This change unfortunately touches quite a few files, but I needed to get it out of the way before things got out of hand: one significant hurdle is the assumed lifetime of a JQuad pointer. In a single threaded model, the life time of the pointer is clear: you fetch it into the cache, the cache makes room, you use the pointer immediately. In a multithreaded context however, it's unsafe, as the drawing thread can request a few JQuads, and the cache operating on a separate thread can potentially bounce a JQuad out of the cache before the draw routine is done using it, which ends up in an access violation when you attempt to draw using an invalidated quad pointer. To prevent this, the bulk of this change swaps out the use of naked JQuad* pointers in the code with a JQuadPtr, which is basically a typedef to a boost shared_ptr<JQuad>.
This btw points out another circular dependancy between the texture and the JQuad - a texture owns a bunch of JQuads, yet the renderer uses JQuads and always assumes that the texture is valid. We're going to need to add more defensiveness to JGE to protect against this. Other changes in this check-in: WResourceManager doesn't derive from JResourceManager anymore. It actually didn't require anything from the base, so I killed the dependency. Also cleaned up the notion of a WTrackedQuad in the WCachedResource - it didn't need a separate class, just a better container. I've build this & tested against PSP, win, linux, QT (linux). I haven't tried against iOS and QT Win, or Maemo. If these other platforms are broken, I apologize in advance! - I'm hoping it should be fairly simple to put them back into play.
This commit is contained in:
@@ -1275,9 +1275,7 @@ AIPlayerBaka::AIPlayerBaka(MTGDeck * deck, string file, string fileSmall, string
|
||||
|
||||
if (mAvatarTex)
|
||||
mAvatar = WResourceManager::Instance()->RetrieveQuad(avatarFile, 0, 0, 35, 50, "bakaAvatar", RETRIEVE_NORMAL,
|
||||
TEXTURE_SUB_AVATAR);
|
||||
else
|
||||
mAvatar = NULL;
|
||||
TEXTURE_SUB_AVATAR);
|
||||
|
||||
initTimer();
|
||||
}
|
||||
|
||||
@@ -96,14 +96,14 @@ void Interruptible::Render(MTGCardInstance * source, JQuad * targetQuad, string
|
||||
|
||||
mFont->DrawString(_(action).c_str(), x + 35, y + GetVerticalTextOffset(), JGETEXT_LEFT);
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveCard(source, CACHE_THUMB);
|
||||
if (!quad)
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveCard(source, CACHE_THUMB);
|
||||
if (!quad.get())
|
||||
quad = CardGui::AlternateThumbQuad(source);
|
||||
if (quad)
|
||||
if (quad.get())
|
||||
{
|
||||
quad->SetColor(ARGB(255,255,255,255));
|
||||
float scale = mHeight / quad->mHeight;
|
||||
renderer->RenderQuad(quad, x + (quad->mWidth * scale / 2), y + (quad->mHeight * scale / 2), 0, scale, scale);
|
||||
renderer->RenderQuad(quad.get(), x + (quad->mWidth * scale / 2), y + (quad->mHeight * scale / 2), 0, scale, scale);
|
||||
}
|
||||
else if (alt1.size())
|
||||
{
|
||||
@@ -157,7 +157,7 @@ void StackAbility::Render()
|
||||
target = (Damageable *) _target;
|
||||
}
|
||||
|
||||
JQuad * quad = NULL;
|
||||
JQuadPtr quad;
|
||||
string alt2 = "";
|
||||
if (target)
|
||||
{
|
||||
@@ -168,7 +168,7 @@ void StackAbility::Render()
|
||||
}
|
||||
}
|
||||
|
||||
Interruptible::Render(source, quad, alt1, alt2, action);
|
||||
Interruptible::Render(source, quad.get(), alt1, alt2, action);
|
||||
}
|
||||
StackAbility::StackAbility(int id, MTGAbility * _ability) :
|
||||
Interruptible(id), ability(_ability)
|
||||
@@ -220,8 +220,7 @@ Interruptible(id), tc(tc), cost(_cost), payResult(payResult)
|
||||
int Spell::computeX(MTGCardInstance * card)
|
||||
{
|
||||
ManaCost * c = cost->Diff(card->getManaCost());
|
||||
int x = 0;
|
||||
x = c->getCost(Constants::MTG_NB_COLORS);
|
||||
int x = c->getCost(Constants::MTG_NB_COLORS);
|
||||
delete c;
|
||||
return x;
|
||||
}
|
||||
@@ -229,8 +228,7 @@ int Spell::computeX(MTGCardInstance * card)
|
||||
int Spell::computeXX(MTGCardInstance * card)
|
||||
{
|
||||
ManaCost * c = cost->Diff(card->getManaCost());
|
||||
int xx = 0;
|
||||
xx = c->getCost(Constants::MTG_NB_COLORS) / 2;
|
||||
int xx = c->getCost(Constants::MTG_NB_COLORS) / 2;
|
||||
delete c;
|
||||
return xx;
|
||||
}
|
||||
@@ -351,9 +349,9 @@ void Spell::Render()
|
||||
string action = source->getName();
|
||||
string alt1 = "";
|
||||
|
||||
JQuad * quad = NULL;
|
||||
string alt2 = "";
|
||||
Damageable * target = getNextDamageableTarget();
|
||||
JQuadPtr quad;
|
||||
if (target)
|
||||
{
|
||||
quad = target->getIcon();
|
||||
@@ -362,7 +360,7 @@ void Spell::Render()
|
||||
alt2 = ((MTGCardInstance *) target)->name;
|
||||
}
|
||||
}
|
||||
Interruptible::Render(source, quad, alt1, alt2, action, true);
|
||||
Interruptible::Render(source, quad.get(), alt1, alt2, action, true);
|
||||
}
|
||||
|
||||
ostream& Spell::toString(ostream& out) const
|
||||
@@ -407,12 +405,12 @@ void PutInGraveyard::Render()
|
||||
mFont->DrawString(_("is exiled").c_str(), x + 30, y, JGETEXT_LEFT);
|
||||
}
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveCard(card, CACHE_THUMB);
|
||||
if (quad)
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveCard(card, CACHE_THUMB);
|
||||
if (quad.get())
|
||||
{
|
||||
quad->SetColor(ARGB(255,255,255,255));
|
||||
float scale = 30 / quad->mHeight;
|
||||
renderer->RenderQuad(quad, x, y, 0, scale, scale);
|
||||
renderer->RenderQuad(quad.get(), x, y, 0, scale, scale);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1117,21 +1115,21 @@ void ActionStack::Render()
|
||||
static const float kIconVerticalOffset = 24;
|
||||
if (mCount > 1)
|
||||
{
|
||||
renderer->RenderQuad(pspIcons[7], x0 + 10, kIconVerticalOffset, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
renderer->RenderQuad(pspIcons[7].get(), x0 + 10, kIconVerticalOffset, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
mFont->DrawString(kInterruptString, x0 + 19, kIconVerticalOffset - 6);
|
||||
|
||||
renderer->RenderQuad(pspIcons[4], x0 + 97, kIconVerticalOffset, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
renderer->RenderQuad(pspIcons[4].get(), x0 + 97, kIconVerticalOffset, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
mFont->DrawString(kNoString, x0 + 106, kIconVerticalOffset - 6);
|
||||
|
||||
renderer->RenderQuad(pspIcons[6], x0 + 145, kIconVerticalOffset, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
renderer->RenderQuad(pspIcons[6].get(), x0 + 145, kIconVerticalOffset, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
mFont->DrawString(kNoToAllString, x0 + 154, kIconVerticalOffset - 6);
|
||||
}
|
||||
else
|
||||
{
|
||||
renderer->RenderQuad(pspIcons[7], x0 + 40, kIconVerticalOffset, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
renderer->RenderQuad(pspIcons[7].get(), x0 + 40, kIconVerticalOffset, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
mFont->DrawString(kInterruptString, x0 + 49, kIconVerticalOffset - 6);
|
||||
|
||||
renderer->RenderQuad(pspIcons[4], x0 + 140, kIconVerticalOffset - 6, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
renderer->RenderQuad(pspIcons[4].get(), x0 + 140, kIconVerticalOffset - 6, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
mFont->DrawString(kNoString, x0 + 146, kIconVerticalOffset - 6);
|
||||
}
|
||||
|
||||
|
||||
@@ -140,13 +140,14 @@ void CardGui::Render()
|
||||
tc = game->getCurrentTargetChooser();
|
||||
|
||||
bool alternate = true;
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveCard(card, CACHE_THUMB);
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveCard(card, CACHE_THUMB);
|
||||
|
||||
#if defined (WIN32) || defined (LINUX)
|
||||
//On pcs we render the big image if the thumbnail is not available
|
||||
if (!quad) quad = WResourceManager::Instance()->RetrieveCard(card);
|
||||
if (!quad.get())
|
||||
quad = WResourceManager::Instance()->RetrieveCard(card);
|
||||
#endif
|
||||
if (quad)
|
||||
if (quad.get())
|
||||
alternate = false;
|
||||
else
|
||||
quad = AlternateThumbQuad(card);
|
||||
@@ -154,24 +155,26 @@ void CardGui::Render()
|
||||
float cardScale = quad ? 40 / quad->mHeight : 1;
|
||||
float scale = actZ * cardScale;
|
||||
|
||||
JQuad* shadow = NULL;
|
||||
JQuadPtr shadow;
|
||||
if (actZ > 1)
|
||||
{
|
||||
shadow = WResourceManager::Instance()->GetQuad("shadow");
|
||||
shadow->SetColor(ARGB(static_cast<unsigned char>(actA)/2,255,255,255));
|
||||
renderer->RenderQuad(shadow, actX + (actZ - 1) * 15, actY + (actZ - 1) * 15, actT, 28 * actZ / 16, 40 * actZ / 16);
|
||||
renderer->RenderQuad(shadow.get(), actX + (actZ - 1) * 15, actY + (actZ - 1) * 15, actT, 28 * actZ / 16, 40 * actZ / 16);
|
||||
}
|
||||
JQuad* extracostshadow = NULL;
|
||||
if(card->isExtraCostTarget )
|
||||
|
||||
JQuadPtr extracostshadow;
|
||||
if (card->isExtraCostTarget)
|
||||
{
|
||||
extracostshadow = WResourceManager::Instance()->GetQuad("extracostshadow");
|
||||
extracostshadow->SetColor(ARGB(static_cast<unsigned char>(actA)/2,100,0,0));
|
||||
renderer->RenderQuad(extracostshadow, actX + (actZ - 1) * 15, actY + (actZ - 1) * 15, actT, 28 * actZ / 16, 40 * actZ / 16);
|
||||
renderer->RenderQuad(extracostshadow.get(), actX + (actZ - 1) * 15, actY + (actZ - 1) * 15, actT, 28 * actZ / 16, 40 * actZ / 16);
|
||||
}
|
||||
|
||||
if (quad)
|
||||
{
|
||||
quad->SetColor(ARGB(static_cast<unsigned char>(actA),255,255,255));
|
||||
renderer->RenderQuad(quad, actX, actY, actT, scale, scale);
|
||||
renderer->RenderQuad(quad.get(), actX, actY, actT, scale, scale);
|
||||
}
|
||||
|
||||
if (alternate)
|
||||
@@ -181,7 +184,7 @@ void CardGui::Render()
|
||||
mFont->DrawString(_(card->getName()), actX - actZ * Width / 2 + 1, actY - actZ * Height / 2 + 1);
|
||||
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
||||
|
||||
JQuad * icon = NULL;
|
||||
JQuadPtr icon;
|
||||
if (card->hasSubtype("plains"))
|
||||
icon = WResourceManager::Instance()->GetQuad("c_white");
|
||||
else if (card->hasSubtype("swamp"))
|
||||
@@ -192,21 +195,21 @@ void CardGui::Render()
|
||||
icon = WResourceManager::Instance()->GetQuad("c_red");
|
||||
else if (card->hasSubtype("island"))
|
||||
icon = WResourceManager::Instance()->GetQuad("c_blue");
|
||||
|
||||
if (icon)
|
||||
|
||||
if (icon.get())
|
||||
{
|
||||
icon->SetColor(ARGB(static_cast<unsigned char>(actA),255,255,255));
|
||||
renderer->RenderQuad(icon, actX, actY, 0);
|
||||
renderer->RenderQuad(icon.get(), actX, actY, 0);
|
||||
icon->SetColor(ARGB(255,255,255,255)); //Putting color back as this quad is shared
|
||||
}
|
||||
|
||||
}
|
||||
JQuad * mor = NULL;
|
||||
JQuadPtr mor;
|
||||
if(card->isMorphed && !alternate)
|
||||
{
|
||||
mor = WResourceManager::Instance()->GetQuad("morph");
|
||||
mor->SetColor(ARGB(255,255,255,255));
|
||||
renderer->RenderQuad(mor, actX, actY, actT,scale, scale);
|
||||
renderer->RenderQuad(mor.get(), actX, actY, actT,scale, scale);
|
||||
}
|
||||
|
||||
//draws the numbers power/toughness
|
||||
@@ -249,14 +252,15 @@ void CardGui::Render()
|
||||
if (!shadow)
|
||||
shadow = WResourceManager::Instance()->GetQuad("shadow");
|
||||
shadow->SetColor(ARGB(200,255,255,255));
|
||||
renderer->RenderQuad(shadow, actX, actY, actT, (28 * actZ + 1) / 16, 40 * actZ / 16);
|
||||
renderer->RenderQuad(shadow.get(), actX, actY, actT, (28 * actZ + 1) / 16, 40 * actZ / 16);
|
||||
}
|
||||
|
||||
PlayGuiObject::Render();
|
||||
}
|
||||
|
||||
JQuad * CardGui::AlternateThumbQuad(MTGCard * card)
|
||||
JQuadPtr CardGui::AlternateThumbQuad(MTGCard * card)
|
||||
{
|
||||
JQuad * q;
|
||||
JQuadPtr q;
|
||||
|
||||
if (card->data->countColors() > 1)
|
||||
{
|
||||
@@ -301,7 +305,7 @@ void CardGui::AlternateRender(MTGCard * card, const Pos& pos)
|
||||
{
|
||||
// Draw the "unknown" card model
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * q;
|
||||
JQuadPtr q;
|
||||
|
||||
float x = pos.actX;
|
||||
|
||||
@@ -339,13 +343,13 @@ void CardGui::AlternateRender(MTGCard * card, const Pos& pos)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (q && q->mTex)
|
||||
if (q.get() && q->mTex)
|
||||
{
|
||||
q->SetHotSpot(static_cast<float> (q->mTex->mWidth / 2), static_cast<float> (q->mTex->mHeight / 2));
|
||||
|
||||
float scale = pos.actZ * 250 / q->mHeight;
|
||||
q->SetColor(ARGB((int)pos.actA,255,255,255));
|
||||
renderer->RenderQuad(q, x, pos.actY, pos.actT, scale, scale);
|
||||
renderer->RenderQuad(q.get(), x, pos.actY, pos.actT, scale, scale);
|
||||
}
|
||||
// Write the title
|
||||
WFont * font = WResourceManager::Instance()->GetWFont(Fonts::MAGIC_FONT);
|
||||
@@ -395,19 +399,19 @@ void CardGui::AlternateRender(MTGCard * card, const Pos& pos)
|
||||
|
||||
if (scale < 0)
|
||||
{
|
||||
renderer->RenderQuad(manaIcons[h->color1], x + (-12 * j + 75 + 3 * SineHelperFunction((float) t)) * pos.actZ,
|
||||
renderer->RenderQuad(manaIcons[h->color1].get(), x + (-12 * j + 75 + 3 * SineHelperFunction((float) t)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) t)) * pos.actZ, 0, 0.4f + scale, 0.4f
|
||||
+ scale);
|
||||
renderer->RenderQuad(manaIcons[h->color2], x + (-12 * j + 75 + 3 * SineHelperFunction((float) v)) * pos.actZ,
|
||||
renderer->RenderQuad(manaIcons[h->color2].get(), x + (-12 * j + 75 + 3 * SineHelperFunction((float) v)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) v)) * pos.actZ, 0, 0.4f - scale, 0.4f
|
||||
- scale);
|
||||
}
|
||||
else
|
||||
{
|
||||
renderer->RenderQuad(manaIcons[h->color2], x + (-12 * j + 75 + 3 * SineHelperFunction((float) v)) * pos.actZ,
|
||||
renderer->RenderQuad(manaIcons[h->color2].get(), x + (-12 * j + 75 + 3 * SineHelperFunction((float) v)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) v)) * pos.actZ, 0, 0.4f - scale, 0.4f
|
||||
- scale);
|
||||
renderer->RenderQuad(manaIcons[h->color1], x + (-12 * j + 75 + 3 * SineHelperFunction((float) t)) * pos.actZ,
|
||||
renderer->RenderQuad(manaIcons[h->color1].get(), x + (-12 * j + 75 + 3 * SineHelperFunction((float) t)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) t)) * pos.actZ, 0, 0.4f + scale, 0.4f
|
||||
+ scale);
|
||||
}
|
||||
@@ -417,7 +421,7 @@ void CardGui::AlternateRender(MTGCard * card, const Pos& pos)
|
||||
{
|
||||
for (int cost = manacost->getCost(i); cost > 0; --cost)
|
||||
{
|
||||
renderer->RenderQuad(manaIcons[i], x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f
|
||||
renderer->RenderQuad(manaIcons[i].get(), x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f
|
||||
* pos.actZ, 0.4f * pos.actZ);
|
||||
++j;
|
||||
}
|
||||
@@ -427,7 +431,7 @@ void CardGui::AlternateRender(MTGCard * card, const Pos& pos)
|
||||
{
|
||||
char buffer[10];
|
||||
sprintf(buffer, "%d", cost);
|
||||
renderer->RenderQuad(manaIcons[0], x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f * pos.actZ,
|
||||
renderer->RenderQuad(manaIcons[0].get(), x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f * pos.actZ,
|
||||
0.4f * pos.actZ);
|
||||
float w = font->GetStringWidth(buffer);
|
||||
font->DrawString(buffer, x + (-12 * j + 76 - w / 2) * pos.actZ, pos.actY + (yOffset - 5) * pos.actZ);
|
||||
@@ -438,7 +442,7 @@ void CardGui::AlternateRender(MTGCard * card, const Pos& pos)
|
||||
{
|
||||
char buffer[10];
|
||||
sprintf(buffer, "X");
|
||||
renderer->RenderQuad(manaIcons[0], x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f * pos.actZ,
|
||||
renderer->RenderQuad(manaIcons[0].get(), x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f * pos.actZ,
|
||||
0.4f * pos.actZ);
|
||||
float w = font->GetStringWidth(buffer);
|
||||
font->DrawString(buffer, x + (-12 * j + 76 - w / 2) * pos.actZ, pos.actY + (yOffset - 5) * pos.actZ);
|
||||
@@ -522,12 +526,11 @@ font->SetScale(backup_scale);
|
||||
|
||||
void CardGui::TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad)
|
||||
{
|
||||
|
||||
if (!quad)
|
||||
return;
|
||||
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * q;
|
||||
JQuadPtr q;
|
||||
|
||||
float x = pos.actX;
|
||||
float displayScale = 250 / BigHeight;
|
||||
@@ -566,14 +569,13 @@ void CardGui::TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (q && q->mTex)
|
||||
if (q.get() && q->mTex)
|
||||
{
|
||||
q->SetHotSpot(static_cast<float> (q->mTex->mWidth / 2), static_cast<float> (q->mTex->mHeight / 2));
|
||||
|
||||
float scale = pos.actZ * displayScale * BigHeight / q->mHeight;
|
||||
q->SetColor(ARGB((int)pos.actA,255,255,255));
|
||||
renderer->RenderQuad(q, x, pos.actY, pos.actT, scale, scale);
|
||||
renderer->RenderQuad(q.get(), x, pos.actY, pos.actT, scale, scale);
|
||||
}
|
||||
|
||||
const std::vector<string> txt = card->data->formattedText();
|
||||
@@ -638,21 +640,21 @@ void CardGui::TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad)
|
||||
|
||||
if (scale < 0)
|
||||
{
|
||||
renderer->RenderQuad(manaIcons[h->color1], x + (-12 * j + 75 + 3 * SineHelperFunction((float) t)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) t)) * pos.actZ, 0, 0.4f + scale, 0.4f
|
||||
+ scale);
|
||||
renderer->RenderQuad(manaIcons[h->color2], x + (-12 * j + 75 + 3 * SineHelperFunction((float) v)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) v)) * pos.actZ, 0, 0.4f - scale, 0.4f
|
||||
- scale);
|
||||
renderer->RenderQuad(manaIcons[h->color1].get(), x + (-12 * j + 75 + 3 * SineHelperFunction((float) t)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) t)) * pos.actZ, 0, 0.4f + scale, 0.4f
|
||||
+ scale);
|
||||
renderer->RenderQuad(manaIcons[h->color2].get(), x + (-12 * j + 75 + 3 * SineHelperFunction((float) v)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) v)) * pos.actZ, 0, 0.4f - scale, 0.4f
|
||||
- scale);
|
||||
}
|
||||
else
|
||||
{
|
||||
renderer->RenderQuad(manaIcons[h->color2], x + (-12 * j + 75 + 3 * SineHelperFunction((float) v)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) v)) * pos.actZ, 0, 0.4f - scale, 0.4f
|
||||
- scale);
|
||||
renderer->RenderQuad(manaIcons[h->color1], x + (-12 * j + 75 + 3 * SineHelperFunction((float) t)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) t)) * pos.actZ, 0, 0.4f + scale, 0.4f
|
||||
+ scale);
|
||||
renderer->RenderQuad(manaIcons[h->color2].get(), x + (-12 * j + 75 + 3 * SineHelperFunction((float) v)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) v)) * pos.actZ, 0, 0.4f - scale, 0.4f
|
||||
- scale);
|
||||
renderer->RenderQuad(manaIcons[h->color1].get(), x + (-12 * j + 75 + 3 * SineHelperFunction((float) t)) * pos.actZ,
|
||||
pos.actY + (yOffset + 3 * CosineHelperFunction((float) t)) * pos.actZ, 0, 0.4f + scale, 0.4f
|
||||
+ scale);
|
||||
}
|
||||
++j;
|
||||
}
|
||||
@@ -660,8 +662,8 @@ void CardGui::TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad)
|
||||
{
|
||||
for (int cost = manacost->getCost(i); cost > 0; --cost)
|
||||
{
|
||||
renderer->RenderQuad(manaIcons[i], x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f
|
||||
* pos.actZ, 0.4f * pos.actZ);
|
||||
renderer->RenderQuad(manaIcons[i].get(), x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f
|
||||
* pos.actZ, 0.4f * pos.actZ);
|
||||
++j;
|
||||
}
|
||||
}
|
||||
@@ -670,19 +672,19 @@ void CardGui::TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad)
|
||||
{
|
||||
char buffer[10];
|
||||
sprintf(buffer, "%d", cost);
|
||||
renderer->RenderQuad(manaIcons[0], x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f * pos.actZ,
|
||||
0.4f * pos.actZ);
|
||||
renderer->RenderQuad(manaIcons[0].get(), x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f * pos.actZ,
|
||||
0.4f * pos.actZ);
|
||||
float w = font->GetStringWidth(buffer);
|
||||
font->DrawString(buffer, x + (-12 * j + 76 - w / 2) * pos.actZ, pos.actY + (yOffset - 5) * pos.actZ);
|
||||
++j;
|
||||
}
|
||||
//Has X?
|
||||
if (manacost->hasX())
|
||||
if (int cost = manacost->hasX())
|
||||
{
|
||||
char buffer[10];
|
||||
sprintf(buffer, "X");
|
||||
renderer->RenderQuad(manaIcons[0], x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f * pos.actZ,
|
||||
0.4f * pos.actZ);
|
||||
renderer->RenderQuad(manaIcons[0].get(), x + (-12 * j + 75) * pos.actZ, pos.actY + (yOffset) * pos.actZ, 0, 0.4f * pos.actZ,
|
||||
0.4f * pos.actZ);
|
||||
float w = font->GetStringWidth(buffer);
|
||||
font->DrawString(buffer, x + (-12 * j + 76 - w / 2) * pos.actZ, pos.actY + (yOffset - 5) * pos.actZ);
|
||||
}
|
||||
@@ -700,59 +702,59 @@ void CardGui::TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad)
|
||||
s += _(Subtypes::subtypesList->find(card->data->types[0]));
|
||||
else
|
||||
{
|
||||
DebugTrace ("Typeless card: " << setlist[card->setId].c_str() << card->data->getName() << card->getId());
|
||||
DebugTrace("Typeless card: " << setlist[card->setId].c_str() << card->data->getName() << card->getId());
|
||||
}
|
||||
|
||||
font->DrawString(s.c_str(), x + (22 - BigWidth / 2)*pos.actZ, pos.actY + (49 - BigHeight / 2)*pos.actZ);
|
||||
}
|
||||
|
||||
font->DrawString(s.c_str(), x + (22 - BigWidth / 2)*pos.actZ, pos.actY + (49 - BigHeight / 2)*pos.actZ);
|
||||
}
|
||||
|
||||
//expansion and rarity
|
||||
font->SetColor(ARGB((int)pos.actA, 0, 0, 0));
|
||||
{
|
||||
char buf[512];
|
||||
switch(card->getRarity())
|
||||
//expansion and rarity
|
||||
font->SetColor(ARGB((int)pos.actA, 0, 0, 0));
|
||||
{
|
||||
char buf[512];
|
||||
switch(card->getRarity())
|
||||
{
|
||||
case Constants::RARITY_M:
|
||||
sprintf(buf,_("%s Mythic").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
sprintf(buf,_("%s Mythic").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
case Constants::RARITY_R:
|
||||
sprintf(buf,_("%s Rare").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
sprintf(buf,_("%s Rare").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
case Constants::RARITY_U:
|
||||
sprintf(buf,_("%s Uncommon").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
sprintf(buf,_("%s Uncommon").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
case Constants::RARITY_C:
|
||||
sprintf(buf,_("%s Common").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
sprintf(buf,_("%s Common").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
case Constants::RARITY_L:
|
||||
sprintf(buf,_("%s Land").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
sprintf(buf,_("%s Land").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
case Constants::RARITY_T:
|
||||
sprintf(buf,_("%s Token").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
sprintf(buf,_("%s Token").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
default:
|
||||
case Constants::RARITY_S:
|
||||
sprintf(buf,_("%s Special").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
}
|
||||
sprintf(buf,_("%s Special").c_str(),setlist[card->setId].c_str());
|
||||
break;
|
||||
}
|
||||
|
||||
switch(card->data->getColor())
|
||||
{
|
||||
switch(card->data->getColor())
|
||||
{
|
||||
case Constants::MTG_COLOR_BLACK:
|
||||
case Constants::MTG_COLOR_GREEN:
|
||||
case Constants::MTG_COLOR_BLUE:
|
||||
case Constants::MTG_COLOR_LAND:
|
||||
font->SetColor(ARGB((int)pos.actA,255,255,255));
|
||||
font->DrawString(buf, x + (22 - BigWidth / 2)*pos.actZ, pos.actY + (BigHeight / 2 - 30)*pos.actZ);
|
||||
break;
|
||||
font->SetColor(ARGB((int)pos.actA,255,255,255));
|
||||
font->DrawString(buf, x + (22 - BigWidth / 2)*pos.actZ, pos.actY + (BigHeight / 2 - 30)*pos.actZ);
|
||||
break;
|
||||
default:
|
||||
font->DrawString(buf, x + (22 - BigWidth / 2)*pos.actZ, pos.actY + (BigHeight / 2 - 30)*pos.actZ);
|
||||
break; //Leave black
|
||||
font->DrawString(buf, x + (22 - BigWidth / 2)*pos.actZ, pos.actY + (BigHeight / 2 - 30)*pos.actZ);
|
||||
break; //Leave black
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
font->SetScale(backup_scale);
|
||||
font->SetScale(backup_scale);
|
||||
}
|
||||
|
||||
//Renders a big card on screen. Defaults to the "alternate" rendering if no image is found
|
||||
@@ -762,26 +764,26 @@ void CardGui::RenderBig(MTGCard* card, const Pos& pos)
|
||||
|
||||
float x = pos.actX;
|
||||
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveCard(card);
|
||||
if (quad)
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveCard(card);
|
||||
if (quad.get())
|
||||
{
|
||||
if (quad->mHeight < quad->mWidth)
|
||||
{
|
||||
return TinyCropRender(card, pos, quad);
|
||||
return TinyCropRender(card, pos, quad.get());
|
||||
}
|
||||
quad->SetColor(ARGB(255,255,255,255));
|
||||
float scale = pos.actZ * 257.f / quad->mHeight;
|
||||
renderer->RenderQuad(quad, x, pos.actY, pos.actT, scale, scale);
|
||||
renderer->RenderQuad(quad.get(), x, pos.actY, pos.actT, scale, scale);
|
||||
return;
|
||||
}
|
||||
|
||||
//No card found, attempt to render the thumbnail instead (better than nothing, even if it gets super stretched)
|
||||
JQuad * q;
|
||||
JQuadPtr q;
|
||||
if ((q = WResourceManager::Instance()->RetrieveCard(card, CACHE_THUMB)))
|
||||
{
|
||||
float scale = pos.actZ * 250 / q->mHeight;
|
||||
q->SetColor(ARGB(255,255,255,255));
|
||||
renderer->RenderQuad(q, x, pos.actY, pos.actT, scale, scale);
|
||||
renderer->RenderQuad(q.get(), x, pos.actY, pos.actT, scale, scale);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -201,12 +201,12 @@ void Credits::compute(Player * _p1, Player * _p2, GameApp * _app)
|
||||
SAFE_DELETE(playerdata);
|
||||
}
|
||||
|
||||
JQuad * Credits::GetUnlockedQuad(string textureName)
|
||||
JQuadPtr Credits::GetUnlockedQuad(string textureName)
|
||||
{
|
||||
if (!textureName.size()) return NULL;
|
||||
if (!textureName.size()) return JQuadPtr();
|
||||
|
||||
JTexture * unlockedTex = WResourceManager::Instance()->RetrieveTexture(textureName);
|
||||
if (!unlockedTex) return NULL;
|
||||
if (!unlockedTex) return JQuadPtr();
|
||||
|
||||
return WResourceManager::Instance()->RetrieveQuad(unlockedTextureName, 2, 2, unlockedTex->mWidth - 4, unlockedTex->mHeight - 4);
|
||||
|
||||
@@ -239,11 +239,11 @@ void Credits::Render()
|
||||
if (g->gameOver != p1)
|
||||
{
|
||||
sprintf(buffer, _("Congratulations! You earn %i credits").c_str(), value);
|
||||
JQuad * unlockedQuad = GetUnlockedQuad(unlockedTextureName);
|
||||
JQuadPtr unlockedQuad = GetUnlockedQuad(unlockedTextureName);
|
||||
if (unlockedQuad)
|
||||
{
|
||||
showMsg = 0;
|
||||
r->RenderQuad(unlockedQuad, 20, 20);
|
||||
r->RenderQuad(unlockedQuad.get(), 20, 20);
|
||||
}
|
||||
if (unlockedString.size())
|
||||
{
|
||||
|
||||
@@ -193,21 +193,21 @@ void Damage::Render()
|
||||
sprintf(buffer, _("Deals %i damage to").c_str(), damage);
|
||||
mFont->DrawString(buffer, x + 20, y, JGETEXT_LEFT);
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveCard(source, CACHE_THUMB);
|
||||
if (quad)
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveCard(source, CACHE_THUMB);
|
||||
if (quad.get())
|
||||
{
|
||||
float scale = 30 / quad->mHeight;
|
||||
renderer->RenderQuad(quad, x, y, 0, scale, scale);
|
||||
renderer->RenderQuad(quad.get(), x, y, 0, scale, scale);
|
||||
}
|
||||
else
|
||||
{
|
||||
mFont->DrawString(_(source->getName()).c_str(), x, y - 15);
|
||||
}
|
||||
quad = target->getIcon();
|
||||
if (quad)
|
||||
if (quad.get())
|
||||
{
|
||||
float scale = 30 / quad->mHeight;
|
||||
renderer->RenderQuad(quad, x + 150, y, 0, scale, scale);
|
||||
renderer->RenderQuad(quad.get(), x + 150, y, 0, scale, scale);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -92,8 +92,8 @@ JGuiController(id, listener), fontId(fontId), mShowDetailsScreen( showDetailsOve
|
||||
|
||||
mSelectionTargetY = selectionY = kVerticalMargin;
|
||||
|
||||
if (NULL == stars)
|
||||
stars = NEW hgeParticleSystem(WResourceManager::Instance()->RetrievePSI("stars.psi", WResourceManager::Instance()->GetQuad("stars")));
|
||||
if (NULL == stars)
|
||||
stars = NEW hgeParticleSystem(WResourceManager::Instance()->RetrievePSI("stars.psi", WResourceManager::Instance()->GetQuad("stars").get()));
|
||||
stars->FireAt(mX, mY);
|
||||
|
||||
updateScroller();
|
||||
@@ -101,8 +101,6 @@ JGuiController(id, listener), fontId(fontId), mShowDetailsScreen( showDetailsOve
|
||||
|
||||
void DeckMenu::RenderDeckManaColors()
|
||||
{
|
||||
JRenderer *renderer = JRenderer::GetInstance();
|
||||
|
||||
// display the deck mana colors if known
|
||||
// We only want to display the mana symbols on the game screens and not the Deck Editor screens.
|
||||
// Need a better way to determine where/when to display the mana symbols. Perhaps make it a property setting.
|
||||
@@ -120,7 +118,7 @@ void DeckMenu::RenderDeckManaColors()
|
||||
{
|
||||
if ( (deckManaColors.at(colorIdx) == '1') != 0)
|
||||
{
|
||||
renderer->RenderQuad(manaIcons[colorIdx], manaIconX, manaIconY, 0, 0.5f, 0.5f);
|
||||
JRenderer::GetInstance()->RenderQuad(manaIcons[colorIdx].get(), manaIconX, manaIconY, 0, 0.5f, 0.5f);
|
||||
manaIconX += 15;
|
||||
}
|
||||
}
|
||||
@@ -138,9 +136,9 @@ void DeckMenu::RenderBackground()
|
||||
static bool loadBackground = true;
|
||||
if (loadBackground)
|
||||
{
|
||||
JQuad *background = WResourceManager::Instance()->RetrieveTempQuad(bgFilename.str(), TEXTURE_SUB_5551);
|
||||
if (background)
|
||||
JRenderer::GetInstance()->RenderQuad(background, 0, 0);
|
||||
JQuadPtr background = WResourceManager::Instance()->RetrieveTempQuad(bgFilename.str(), TEXTURE_SUB_5551);
|
||||
if (background.get())
|
||||
JRenderer::GetInstance()->RenderQuad(background.get(), 0, 0);
|
||||
else
|
||||
loadBackground = false;
|
||||
}
|
||||
@@ -227,6 +225,7 @@ void DeckMenu::Render()
|
||||
mSelectedDeck = currentMenuItem->meta;
|
||||
|
||||
WFont *mainFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
|
||||
|
||||
// display the "more info" button if special condition is met
|
||||
if (showDetailsScreen())
|
||||
{
|
||||
@@ -236,7 +235,7 @@ void DeckMenu::Render()
|
||||
float boxStartX = detailedInfoBoxX - stringWidth / 2;
|
||||
DWORD currentColor = mainFont->GetColor();
|
||||
renderer->FillRoundRect( boxStartX, detailedInfoBoxY - 5, stringWidth, mainFont->GetHeight() + 15, .5, ARGB( 255, 0, 0, 0) );
|
||||
renderer->RenderQuad(pspIcons[5], detailedInfoBoxX, detailedInfoBoxY + 2, 0, pspIconsSize, pspIconsSize);
|
||||
renderer->RenderQuad(pspIcons[5].get(), detailedInfoBoxX, detailedInfoBoxY + 2, 0, pspIconsSize, pspIconsSize);
|
||||
mainFont->SetColor(currentColor);
|
||||
mainFont->DrawString(detailedInfoString, boxStartX, detailedInfoBoxY + 10);
|
||||
}
|
||||
@@ -244,8 +243,9 @@ void DeckMenu::Render()
|
||||
// display the avatar image
|
||||
if (currentMenuItem->imageFilename.size() > 0)
|
||||
{
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveTempQuad(currentMenuItem->imageFilename, TEXTURE_SUB_AVATAR);
|
||||
if (quad) renderer->RenderQuad(quad, avatarX, avatarY);
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveTempQuad(currentMenuItem->imageFilename, TEXTURE_SUB_AVATAR);
|
||||
if (quad.get())
|
||||
renderer->RenderQuad(quad.get(), avatarX, avatarY);
|
||||
}
|
||||
// fill in the description part of the screen
|
||||
string text = wordWrap(currentMenuItem->desc, descWidth, mainFont->mFontID );
|
||||
|
||||
@@ -26,7 +26,7 @@ DeckMenuItem::DeckMenuItem(DeckMenu* _parent, int id, int fontId, string text, f
|
||||
JTexture * tex = WResourceManager::Instance()->RetrieveTexture("new.png");
|
||||
if (tex)
|
||||
{
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveQuad("new.png", 2.0f, 2.0f, tex->mWidth - 4.0f, tex->mHeight - 4.0f); //avoids weird rectangle around the texture because of bilinear filtering
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveQuad("new.png", 2.0f, 2.0f, tex->mWidth - 4.0f, tex->mHeight - 4.0f); //avoids weird rectangle around the texture because of bilinear filtering
|
||||
newImageWidth = quad->mWidth;
|
||||
}
|
||||
}
|
||||
@@ -74,10 +74,10 @@ void DeckMenuItem::RenderWithOffset(float yOffset)
|
||||
JTexture * tex = WResourceManager::Instance()->RetrieveTexture("new.png");
|
||||
if (tex)
|
||||
{
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveQuad("new.png", 2.0f, 2.0f, tex->mWidth - 4.0f, tex->mHeight - 4.0f); //avoids weird rectangle aroudn the texture because of bilinear filtering
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveQuad("new.png", 2.0f, 2.0f, tex->mWidth - 4.0f, tex->mHeight - 4.0f); //avoids weird rectangle aroudn the texture because of bilinear filtering
|
||||
quad->SetHotSpot(quad->mWidth/2.0f, quad->mHeight/2.0f);
|
||||
float x = mX + min(ITEM_PX_WIDTH - quad->mWidth, GetWidth() )/2 + quad->mWidth/2;
|
||||
if (quad) JRenderer::GetInstance()->RenderQuad(quad, x , mY + yOffset + quad->mHeight/2, 0.5);
|
||||
if (quad) JRenderer::GetInstance()->RenderQuad(quad.get(), x , mY + yOffset + quad->mHeight/2, 0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ JMusic * GameApp::music = NULL;
|
||||
string GameApp::currentMusicFile = "";
|
||||
string GameApp::systemError = "";
|
||||
|
||||
JQuad* manaIcons[7] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL };
|
||||
JQuadPtr manaIcons[7];
|
||||
|
||||
GameState::GameState(GameApp* parent) :
|
||||
mParent(parent)
|
||||
@@ -156,13 +156,13 @@ void GameApp::Create()
|
||||
RETRIEVE_MANAGE);
|
||||
|
||||
for (int i = sizeof(manaIcons) / sizeof(manaIcons[0]) - 1; i >= 0; --i)
|
||||
if (manaIcons[i])
|
||||
if (manaIcons[i].get())
|
||||
manaIcons[i]->SetHotSpot(16, 16);
|
||||
|
||||
LOG("--Loading back.jpg");
|
||||
WResourceManager::Instance()->RetrieveTexture("back.jpg", RETRIEVE_MANAGE);
|
||||
JQuad * jq = WResourceManager::Instance()->RetrieveQuad("back.jpg", 0, 0, 0, 0, "back", RETRIEVE_MANAGE);
|
||||
if (jq)
|
||||
JQuadPtr jq = WResourceManager::Instance()->RetrieveQuad("back.jpg", 0, 0, 0, 0, "back", RETRIEVE_MANAGE);
|
||||
if (jq.get())
|
||||
jq->SetHotSpot(jq->mWidth / 2, jq->mHeight / 2);
|
||||
|
||||
WResourceManager::Instance()->RetrieveTexture("back_thumb.jpg", RETRIEVE_MANAGE);
|
||||
|
||||
@@ -137,9 +137,9 @@ void GameStateAwards::Render()
|
||||
JRenderer * r = JRenderer::GetInstance();
|
||||
r->ClearScreen(ARGB(0,0,0,0));
|
||||
|
||||
JQuad * mBg = WResourceManager::Instance()->RetrieveTempQuad("awardback.jpg", TEXTURE_SUB_5551);
|
||||
if (mBg)
|
||||
r->RenderQuad(mBg, 0, 0);
|
||||
JQuadPtr background = WResourceManager::Instance()->RetrieveTempQuad("awardback.jpg", TEXTURE_SUB_5551);
|
||||
if (background.get())
|
||||
r->RenderQuad(background.get(), 0, 0);
|
||||
|
||||
switch (mState)
|
||||
{
|
||||
|
||||
@@ -94,7 +94,7 @@ void GameStateDeckViewer::rebuildFilters()
|
||||
{
|
||||
if (!filterMenu) filterMenu = NEW WGuiFilters("Filter by...", NULL);
|
||||
if (source)
|
||||
SAFE_DELETE(source);
|
||||
SAFE_DELETE(source);
|
||||
source = NEW WSrcDeckViewer(myDeck, myCollection);
|
||||
filterMenu->setSrc(source);
|
||||
if (displayed_deck != myDeck) source->swapSrc();
|
||||
@@ -184,7 +184,7 @@ void GameStateDeckViewer::buildEditorMenu()
|
||||
deckSummaryInformation << "All changes are final." << endl;
|
||||
|
||||
if (menu)
|
||||
SAFE_DELETE( menu );
|
||||
SAFE_DELETE( menu );
|
||||
//Build menu.
|
||||
JRenderer::GetInstance()->FillRoundRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 100, ARGB(0, 0, 0, 0) );
|
||||
menu = NEW DeckEditorMenu(MENU_DECK_BUILDER, this, Fonts::OPTION_FONT, "Deck Editor", myDeck, stw);
|
||||
@@ -245,8 +245,6 @@ void GameStateDeckViewer::Start()
|
||||
pspIcons[i]->SetHotSpot(16, 16);
|
||||
}
|
||||
|
||||
backQuad = WResourceManager::Instance()->GetQuad("back");
|
||||
|
||||
//init welcome menu
|
||||
updateDecks();
|
||||
|
||||
@@ -449,7 +447,7 @@ void GameStateDeckViewer::Update(float dt)
|
||||
{
|
||||
filterMenu = NEW WGuiFilters("Filter by...", NULL);
|
||||
if (source)
|
||||
SAFE_DELETE(source);
|
||||
SAFE_DELETE(source);
|
||||
source = NEW WSrcDeckViewer(myDeck, myCollection);
|
||||
filterMenu->setSrc(source);
|
||||
if (displayed_deck != myDeck) source->swapSrc();
|
||||
@@ -633,7 +631,7 @@ void GameStateDeckViewer::renderOnScreenBasicInfo()
|
||||
renderer->FillRoundRect(SCREEN_WIDTH - (w + 27), y + 5, w + 10, 15, 5, ARGB(128,0,0,0));
|
||||
|
||||
mFont->DrawString(buffer, SCREEN_WIDTH - 22, y + 15, JGETEXT_RIGHT);
|
||||
if (useFilter != 0) renderer->RenderQuad(mIcons[useFilter - 1], SCREEN_WIDTH - 10, y + 15, 0.0f, 0.5, 0.5);
|
||||
if (useFilter != 0) renderer->RenderQuad(mIcons[useFilter - 1].get(), SCREEN_WIDTH - 10, y + 15, 0.0f, 0.5, 0.5);
|
||||
}
|
||||
|
||||
//returns position of the current card (cusor) in the currently viewed color/filter
|
||||
@@ -743,10 +741,10 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
//LEFT PSP CIRCLE render
|
||||
r->FillCircle(leftPspX, leftPspY, 40, ARGB(128,50,50,50));
|
||||
|
||||
r->RenderQuad(pspIcons[0], leftPspX, leftPspY - 20, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[1], leftPspX, leftPspY + 20, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[2], leftPspX - 20, leftPspY, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[3], leftPspX + 20, leftPspY, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[0].get(), leftPspX, leftPspY - 20, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[1].get(), leftPspX, leftPspY + 20, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[2].get(), leftPspX - 20, leftPspY, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[3].get(), leftPspX + 20, leftPspY, 0, pspIconsSize, pspIconsSize);
|
||||
|
||||
font->DrawString(_("Prev."), leftPspX - 35, leftPspY - 15);
|
||||
font->DrawString(_("Next"), leftPspX + 15, leftPspY - 15);
|
||||
@@ -757,10 +755,10 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
|
||||
//RIGHT PSP CIRCLE render
|
||||
r->FillCircle(rightPspX + (onScreenTransition * 204), rightPspY, 40, ARGB(128,50,50,50));
|
||||
r->RenderQuad(pspIcons[4], rightPspX + 20, rightPspY, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[5], rightPspX, rightPspY - 20, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[6], rightPspX - 20, rightPspY, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[7], rightPspX, rightPspY + 20, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[4].get(), rightPspX + 20, rightPspY, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[5].get(), rightPspX, rightPspY - 20, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[6].get(), rightPspX - 20, rightPspY, 0, pspIconsSize, pspIconsSize);
|
||||
r->RenderQuad(pspIcons[7].get(), rightPspX, rightPspY + 20, 0, pspIconsSize, pspIconsSize);
|
||||
|
||||
font->DrawString(_("Toggle Images"), rightPspX - 35, rightPspY - 40);
|
||||
|
||||
@@ -789,8 +787,8 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
{
|
||||
sprintf(buffer, "%i", value);
|
||||
font->DrawString(buffer, SCREEN_WIDTH - 190 + rightTransition + nb_letters * 13, SCREEN_HEIGHT / 2 + 40);
|
||||
r->RenderQuad(mIcons[j], SCREEN_WIDTH - 197 + rightTransition + nb_letters * 13, SCREEN_HEIGHT / 2 + 46, 0, 0.5,
|
||||
0.5);
|
||||
r->RenderQuad(mIcons[j].get(), SCREEN_WIDTH - 197 + rightTransition + nb_letters * 13, SCREEN_HEIGHT / 2 + 46, 0, 0.5,
|
||||
0.5);
|
||||
if (value > 9)
|
||||
{
|
||||
nb_letters += 3;
|
||||
@@ -863,7 +861,7 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
{
|
||||
sprintf(buffer, "%i", value);
|
||||
font->DrawString(buffer, 38 + nb_letters * 13 + leftTransition, posY + 5);
|
||||
r->RenderQuad(mIcons[j], 30 + nb_letters * 13 + leftTransition, posY + 11, 0, 0.5, 0.5);
|
||||
r->RenderQuad(mIcons[j].get(), 30 + nb_letters * 13 + leftTransition, posY + 11, 0, 0.5, 0.5);
|
||||
if (value > 9)
|
||||
{
|
||||
nb_letters += 3;
|
||||
@@ -976,7 +974,7 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
// Column titles
|
||||
for (int j = 0; j < Constants::MTG_NB_COLORS - 1; j++)
|
||||
{
|
||||
r->RenderQuad(mIcons[j], 52 + j * 15 + leftTransition, posY - 10, 0, 0.5, 0.5);
|
||||
r->RenderQuad(mIcons[j].get(), 52 + j * 15 + leftTransition, posY - 10, 0, 0.5, 0.5);
|
||||
}
|
||||
|
||||
//font->DrawString(_("C"), 30 + leftTransition, posY-16);
|
||||
@@ -1060,7 +1058,7 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
posX = 72;
|
||||
for (int j = 0; j < stw->countLandsPerColor[i] + stw->countBasicLandsPerColor[i]; j++)
|
||||
{
|
||||
r->RenderQuad(mIcons[i], posX + leftTransition, posY + 6, 0, 0.5, 0.5);
|
||||
r->RenderQuad(mIcons[i].get(), posX + leftTransition, posY + 6, 0, 0.5, 0.5);
|
||||
posX += ((j + 1) % 10 == 0) ? 17 : 13;
|
||||
if ((((j + 1) % 30) == 0) && (j < stw->countLandsPerColor[i] + stw->countBasicLandsPerColor[i] - 1))
|
||||
{
|
||||
@@ -1122,7 +1120,7 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
// Column titles
|
||||
for (int j = 0; j < Constants::MTG_NB_COLORS - 1; j++)
|
||||
{
|
||||
r->RenderQuad(mIcons[j], 67 + j * 15 + leftTransition, posY - 10, 0, 0.5, 0.5);
|
||||
r->RenderQuad(mIcons[j].get(), 67 + j * 15 + leftTransition, posY - 10, 0, 0.5, 0.5);
|
||||
}
|
||||
|
||||
font->DrawString(_("C"), 30 + leftTransition, posY - 16);
|
||||
@@ -1234,7 +1232,7 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
posX = 72;
|
||||
for (int j = 0; j < stw->totalCostPerColor[i]; j++)
|
||||
{
|
||||
r->RenderQuad(mIcons[i], posX + leftTransition, posY + 6, 0, 0.5, 0.5);
|
||||
r->RenderQuad(mIcons[i].get(), posX + leftTransition, posY + 6, 0, 0.5, 0.5);
|
||||
posX += ((j + 1) % 10 == 0) ? 17 : 13;
|
||||
if ((((j + 1) % 30) == 0) && (j < stw->totalCostPerColor[i] - 1))
|
||||
{
|
||||
@@ -1306,53 +1304,14 @@ void GameStateDeckViewer::renderCard(int id, float rotation)
|
||||
int alpha = (int) (255 * (scale + 1.0 - max_scale));
|
||||
|
||||
if (!card) return;
|
||||
JQuad * quad = NULL;
|
||||
|
||||
int cacheError = CACHE_ERROR_NONE;
|
||||
int mode = !options[Options::DISABLECARDS].number ? DrawMode::kNormal : DrawMode::kText;
|
||||
|
||||
if (!options[Options::DISABLECARDS].number)
|
||||
{
|
||||
quad = WResourceManager::Instance()->RetrieveCard(card, RETRIEVE_EXISTING);
|
||||
cacheError = WResourceManager::Instance()->RetrieveError();
|
||||
if (!quad && cacheError != CACHE_ERROR_404)
|
||||
{
|
||||
if (last_user_activity > (abs(2 - id) + 1) * NO_USER_ACTIVITY_SHOWCARD_DELAY)
|
||||
quad = WResourceManager::Instance()->RetrieveCard(card);
|
||||
else
|
||||
{
|
||||
quad = backQuad;
|
||||
}
|
||||
}
|
||||
}
|
||||
Pos pos = Pos(x, y, scale * 285 / 250, 0.0, 255);
|
||||
CardGui::DrawCard(card, pos, mode);
|
||||
|
||||
int quadAlpha = alpha;
|
||||
if (!displayed_deck->count(card)) quadAlpha /= 2;
|
||||
if (quad)
|
||||
{
|
||||
if (quad == backQuad)
|
||||
{
|
||||
quad->SetColor(ARGB(255,255,255,255));
|
||||
float _scale = scale * (285 / quad->mHeight);
|
||||
JRenderer::GetInstance()->RenderQuad(quad, x, y, 0.0f, _scale, _scale);
|
||||
}
|
||||
else
|
||||
{
|
||||
Pos pos = Pos(x, y, scale * 285 / 250, 0.0, 255);
|
||||
CardGui::DrawCard(card, pos);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Pos pos = Pos(x, y, scale * 285 / 250, 0.0, 255);
|
||||
CardGui::DrawCard(card, pos, DrawMode::kText);
|
||||
if (!options[Options::DISABLECARDS].number) quad = WResourceManager::Instance()->RetrieveCard(card, CACHE_THUMB);
|
||||
if (quad)
|
||||
{
|
||||
float _scale = 285 * scale / quad->mHeight;
|
||||
quad->SetColor(ARGB(40,255,255,255));
|
||||
JRenderer::GetInstance()->RenderQuad(quad, x, y, 0, _scale, _scale);
|
||||
}
|
||||
}
|
||||
quadAlpha = 255 - quadAlpha;
|
||||
if (quadAlpha > 0)
|
||||
{
|
||||
@@ -1385,9 +1344,8 @@ void GameStateDeckViewer::Render()
|
||||
{
|
||||
|
||||
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
|
||||
JRenderer * r = JRenderer::GetInstance();
|
||||
|
||||
r->ClearScreen(ARGB(0,0,0,0));
|
||||
JRenderer::GetInstance()->ClearScreen(ARGB(0,0,0,0));
|
||||
if (displayed_deck == myDeck && mStage != STAGE_MENU)
|
||||
renderDeckBackground();
|
||||
int order[3] = { 1, 2, 3 };
|
||||
|
||||
@@ -73,8 +73,6 @@ GameStateMenu::GameStateMenu(GameApp* parent) :
|
||||
mGuiController = NULL;
|
||||
subMenuController = NULL;
|
||||
gameTypeMenu = NULL;
|
||||
mSplash = NULL;
|
||||
mBg = NULL;
|
||||
//bgMusic = NULL;
|
||||
timeIndex = 0;
|
||||
angleMultiplier = MIN_ANGLE_MULTIPLIER;
|
||||
@@ -129,8 +127,6 @@ void GameStateMenu::Create()
|
||||
scrollerSet = 0;
|
||||
|
||||
splashTex = NULL;
|
||||
mSplash = NULL;
|
||||
|
||||
}
|
||||
|
||||
void GameStateMenu::Destroy()
|
||||
@@ -428,16 +424,16 @@ void GameStateMenu::ensureMGuiController()
|
||||
{
|
||||
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::MENU_FONT);
|
||||
mFont->SetColor(ARGB(255,255,255,255));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_PLAY, mFont, "Play", 80, 50 + SCREEN_HEIGHT / 2, mIcons[8], mIcons[9],
|
||||
"particle1.psi", WResourceManager::Instance()->GetQuad("particles"), true));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_DECKEDITOR, mFont, "Deck Editor", 160, 50 + SCREEN_HEIGHT / 2, mIcons[2],
|
||||
mIcons[3], "particle2.psi", WResourceManager::Instance()->GetQuad("particles")));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_SHOP, mFont, "Shop", 240, 50 + SCREEN_HEIGHT / 2, mIcons[0], mIcons[1],
|
||||
"particle3.psi", WResourceManager::Instance()->GetQuad("particles")));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_OPTIONS, mFont, "Options", 320, 50 + SCREEN_HEIGHT / 2, mIcons[6], mIcons[7],
|
||||
"particle4.psi", WResourceManager::Instance()->GetQuad("particles")));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_EXIT, mFont, "Exit", 400, 50 + SCREEN_HEIGHT / 2, mIcons[4], mIcons[5],
|
||||
"particle5.psi", WResourceManager::Instance()->GetQuad("particles")));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_PLAY, mFont, "Play", 80, 50 + SCREEN_HEIGHT / 2, mIcons[8].get(), mIcons[9].get(),
|
||||
"particle1.psi", WResourceManager::Instance()->GetQuad("particles").get(), true));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_DECKEDITOR, mFont, "Deck Editor", 160, 50 + SCREEN_HEIGHT / 2, mIcons[2].get(),
|
||||
mIcons[3].get(), "particle2.psi", WResourceManager::Instance()->GetQuad("particles").get()));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_SHOP, mFont, "Shop", 240, 50 + SCREEN_HEIGHT / 2, mIcons[0].get(), mIcons[1].get(),
|
||||
"particle3.psi", WResourceManager::Instance()->GetQuad("particles").get()));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_OPTIONS, mFont, "Options", 320, 50 + SCREEN_HEIGHT / 2, mIcons[6].get(), mIcons[7].get(),
|
||||
"particle4.psi", WResourceManager::Instance()->GetQuad("particles").get()));
|
||||
mGuiController->Add(NEW MenuItem(MENUITEM_EXIT, mFont, "Exit", 400, 50 + SCREEN_HEIGHT / 2, mIcons[4].get(), mIcons[5].get(),
|
||||
"particle5.psi", WResourceManager::Instance()->GetQuad("particles").get()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -499,7 +495,6 @@ void GameStateMenu::Update(float dt)
|
||||
//Release splash texture
|
||||
WResourceManager::Instance()->Release(splashTex);
|
||||
splashTex = NULL;
|
||||
mSplash = NULL;
|
||||
|
||||
//check for deleted collection / first-timer
|
||||
wagic::ifstream file(options.profileFile(PLAYER_COLLECTION).c_str());
|
||||
@@ -644,26 +639,17 @@ void GameStateMenu::Render()
|
||||
}
|
||||
else if ((currentState & MENU_STATE_MAJOR) == MENU_STATE_MAJOR_LOADING_CARDS)
|
||||
{
|
||||
if (!splashTex)
|
||||
string wp = loadRandomWallpaper();
|
||||
if (wp.size())
|
||||
{
|
||||
splashTex = WResourceManager::Instance()->RetrieveTexture("splash.jpg", RETRIEVE_LOCK);
|
||||
mSplash = WResourceManager::Instance()->RetrieveTempQuad("splash.jpg");
|
||||
}
|
||||
if (mSplash)
|
||||
renderer->RenderQuad(mSplash, 0, 0);
|
||||
else
|
||||
{
|
||||
string wp = loadRandomWallpaper();
|
||||
if (wp.size())
|
||||
JTexture * wpTex = WResourceManager::Instance()->RetrieveTexture(wp);
|
||||
if (wpTex)
|
||||
{
|
||||
JTexture * wpTex = WResourceManager::Instance()->RetrieveTexture(wp);
|
||||
if (wpTex)
|
||||
{
|
||||
JQuad * wpQuad = WResourceManager::Instance()->RetrieveTempQuad(wp);
|
||||
renderer->RenderQuad(wpQuad, 0, 0, 0, SCREEN_WIDTH_F / wpQuad->mWidth, SCREEN_HEIGHT_F / wpQuad->mHeight);
|
||||
}
|
||||
JQuadPtr wpQuad = WResourceManager::Instance()->RetrieveTempQuad(wp);
|
||||
renderer->RenderQuad(wpQuad.get(), 0, 0, 0, SCREEN_WIDTH_F / wpQuad->mWidth, SCREEN_HEIGHT_F / wpQuad->mHeight);
|
||||
}
|
||||
}
|
||||
|
||||
char text[512];
|
||||
if (mCurrentSetName[0])
|
||||
{
|
||||
@@ -702,11 +688,11 @@ void GameStateMenu::Render()
|
||||
renderer->FillRoundRect(SCREEN_WIDTH / 2 - 100, SCREEN_HEIGHT, 191, 6, 5, ARGB(100,10,5,0));
|
||||
scroller->Render();
|
||||
|
||||
if (mBg)
|
||||
renderer->RenderQuad(mBg, SCREEN_WIDTH / 2, 50);
|
||||
if (mBg.get())
|
||||
renderer->RenderQuad(mBg.get(), SCREEN_WIDTH / 2, 50);
|
||||
|
||||
JQuad * jq = WResourceManager::Instance()->RetrieveTempQuad("button_shoulder.png");
|
||||
if (jq)
|
||||
JQuadPtr jq = WResourceManager::Instance()->RetrieveTempQuad("button_shoulder.png");
|
||||
if (jq.get())
|
||||
{
|
||||
int alp = 255;
|
||||
if (options.newAward())
|
||||
@@ -719,7 +705,7 @@ void GameStateMenu::Render()
|
||||
;
|
||||
mFont->SetScale(1.0f);
|
||||
mFont->SetScale(50.0f / mFont->GetStringWidth(s.c_str()));
|
||||
renderer->RenderQuad(jq, SCREEN_WIDTH - 64, 2);
|
||||
renderer->RenderQuad(jq.get(), SCREEN_WIDTH - 64, 2);
|
||||
mFont->DrawString(s, SCREEN_WIDTH - 10, 9, JGETEXT_RIGHT);
|
||||
mFont = WResourceManager::Instance()->GetWFont(Fonts::MENU_FONT);
|
||||
mFont->SetScale(olds);
|
||||
|
||||
@@ -55,7 +55,6 @@ GameStateShop::GameStateShop(GameApp* parent) :
|
||||
menu = NULL;
|
||||
for (int i = 0; i < 8; i++)
|
||||
altThumb[i] = NULL;
|
||||
mBack = NULL;
|
||||
boosterDisplay = NULL;
|
||||
taskList = NULL;
|
||||
srcCards = NULL;
|
||||
@@ -143,8 +142,6 @@ void GameStateShop::Start()
|
||||
altThumb[6] = WResourceManager::Instance()->RetrieveTexture("land_thumb.jpg", RETRIEVE_LOCK);
|
||||
altThumb[7] = WResourceManager::Instance()->RetrieveTexture("gold_thumb.jpg", RETRIEVE_LOCK);
|
||||
|
||||
mBack = WResourceManager::Instance()->GetQuad("back");
|
||||
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
std::ostringstream stream;
|
||||
@@ -674,17 +671,17 @@ void GameStateShop::Render()
|
||||
if (mStage == STAGE_FADE_IN)
|
||||
return;
|
||||
|
||||
JQuad * mBg = WResourceManager::Instance()->RetrieveTempQuad("shop.jpg", TEXTURE_SUB_5551);
|
||||
if (mBg)
|
||||
r->RenderQuad(mBg, 0, 0);
|
||||
JQuadPtr mBg = WResourceManager::Instance()->RetrieveTempQuad("shop.jpg", TEXTURE_SUB_5551);
|
||||
if (mBg.get())
|
||||
r->RenderQuad(mBg.get(), 0, 0);
|
||||
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveTempQuad("shop_light.jpg", TEXTURE_SUB_5551);
|
||||
if (quad)
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveTempQuad("shop_light.jpg", TEXTURE_SUB_5551);
|
||||
if (quad.get())
|
||||
{
|
||||
r->EnableTextureFilter(false);
|
||||
r->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE);
|
||||
quad->SetColor(ARGB(lightAlpha,255,255,255));
|
||||
r->RenderQuad(quad, 0, 0);
|
||||
r->RenderQuad(quad.get(), 0, 0);
|
||||
r->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
|
||||
r->EnableTextureFilter(true);
|
||||
}
|
||||
@@ -740,7 +737,7 @@ void GameStateShop::Render()
|
||||
mFont->DrawString(stream.str(), 5, SCREEN_HEIGHT - 14);
|
||||
|
||||
float len = 4 + mFont->GetStringWidth(kOtherCardsString.c_str());
|
||||
r->RenderQuad(pspIcons[6], SCREEN_WIDTH - len - kGamepadIconSize - 10, SCREEN_HEIGHT - 8, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
r->RenderQuad(pspIcons[6].get(), SCREEN_WIDTH - len - kGamepadIconSize - 10, SCREEN_HEIGHT - 8, 0, kGamepadIconSize, kGamepadIconSize);
|
||||
mFont->DrawString(kOtherCardsString, SCREEN_WIDTH - len, SCREEN_HEIGHT - 14);
|
||||
|
||||
mFont->SetColor(ARGB(255,255,255,0));
|
||||
|
||||
@@ -16,17 +16,18 @@ GuiBackground::~GuiBackground()
|
||||
void GuiBackground::Render()
|
||||
{
|
||||
JRenderer* renderer = JRenderer::GetInstance();
|
||||
JQuad * quad = NULL;
|
||||
JQuadPtr quad;
|
||||
GameObserver * go = GameObserver::GetInstance();
|
||||
if (go && go->mRules && go->mRules->bg.size())
|
||||
{
|
||||
quad = WResourceManager::Instance()->RetrieveTempQuad(go->mRules->bg);
|
||||
}
|
||||
if (!quad)
|
||||
if (!quad.get())
|
||||
{
|
||||
quad = WResourceManager::Instance()->RetrieveTempQuad("backdrop.jpg");
|
||||
}
|
||||
if (!quad)
|
||||
return;
|
||||
renderer->RenderQuad(quad, 0, 18);
|
||||
if (quad.get())
|
||||
{
|
||||
renderer->RenderQuad(quad.get(), 0, 18);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -390,7 +390,7 @@ void GuiCombat::Render()
|
||||
if (activeAtk->card->has(Constants::TRAMPLE))
|
||||
{
|
||||
go->opponent()->mAvatar->SetHotSpot(18, 25);
|
||||
enemy_avatar.Render(go->opponent()->mAvatar);
|
||||
enemy_avatar.Render(go->opponent()->mAvatar.get());
|
||||
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
|
||||
mFont->SetColor(ARGB(255, 255, 64, 0));
|
||||
{
|
||||
@@ -402,9 +402,9 @@ void GuiCombat::Render()
|
||||
}
|
||||
if (ok_tex)
|
||||
{
|
||||
JQuad *ok_quad = WResourceManager::Instance()->RetrieveTempQuad("Ok.png");
|
||||
JQuadPtr ok_quad = WResourceManager::Instance()->RetrieveTempQuad("Ok.png");
|
||||
ok_quad->SetHotSpot(28, 22);
|
||||
ok.Render(ok_quad);
|
||||
ok.Render(ok_quad.get());
|
||||
}
|
||||
renderer->DrawLine(0, SCREEN_HEIGHT / 2 + 10, SCREEN_WIDTH, SCREEN_HEIGHT / 2 + 10, ARGB(255, 255, 64, 0));
|
||||
if (FIRST_STRIKE == step)
|
||||
|
||||
@@ -9,11 +9,9 @@ GuiFrame::GuiFrame()
|
||||
wood = WResourceManager::Instance()->RetrieveQuad("wood.png", 0, 0, SCREEN_WIDTH, 28);
|
||||
else
|
||||
{
|
||||
wood = NULL;
|
||||
GameApp::systemError += "Can't load wood texture : " __FILE__ "\n";
|
||||
}
|
||||
|
||||
goldGlow = gold1 = gold2 = NULL;
|
||||
if (WResourceManager::Instance()->GetTexture("gold.png"))
|
||||
{
|
||||
gold1 = WResourceManager::Instance()->RetrieveQuad("gold.png", 0, 0, SCREEN_WIDTH, 6, "gold1");
|
||||
@@ -41,23 +39,23 @@ void GuiFrame::Render()
|
||||
float sized = step / 4;
|
||||
if (sized > SCREEN_WIDTH)
|
||||
sized -= SCREEN_WIDTH;
|
||||
renderer->RenderQuad(wood, 0, 0);
|
||||
if (gold1)
|
||||
renderer->RenderQuad(wood.get(), 0, 0);
|
||||
if (gold1.get())
|
||||
{
|
||||
renderer->RenderQuad(gold1, -sized, 16);
|
||||
renderer->RenderQuad(gold1, -sized + 479, 16);
|
||||
renderer->RenderQuad(gold1.get(), -sized, 16);
|
||||
renderer->RenderQuad(gold1.get(), -sized + 479, 16);
|
||||
|
||||
if (goldGlow)
|
||||
if (goldGlow.get())
|
||||
{
|
||||
goldGlow->SetColor(ARGB((100+(rand()%50)), 255, 255, 255));
|
||||
renderer->RenderQuad(goldGlow, -sized, 9);
|
||||
renderer->RenderQuad(goldGlow, -sized + 480, 9);
|
||||
renderer->RenderQuad(goldGlow.get(), -sized, 9);
|
||||
renderer->RenderQuad(goldGlow.get(), -sized + 480, 9);
|
||||
}
|
||||
|
||||
if (gold2)
|
||||
if (gold2.get())
|
||||
{
|
||||
renderer->RenderQuad(gold2, step / 2, 16);
|
||||
renderer->RenderQuad(gold2, step / 2 - 479, 16);
|
||||
renderer->RenderQuad(gold2.get(), step / 2, 16);
|
||||
renderer->RenderQuad(gold2.get(), step / 2 - 479, 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ GuiHand::GuiHand(MTGHand* hand) :
|
||||
GuiLayer(), hand(hand)
|
||||
{
|
||||
back = WResourceManager::Instance()->RetrieveTempQuad("handback.png");
|
||||
if (back)
|
||||
if (back.get())
|
||||
back->SetTextureRect(1, 0, 100, 250);
|
||||
else
|
||||
GameApp::systemError = "Error loading hand texture : " __FILE__;
|
||||
@@ -68,7 +68,7 @@ GuiHandOpponent::GuiHandOpponent(MTGHand* hand) :
|
||||
|
||||
void GuiHandOpponent::Render()
|
||||
{
|
||||
JQuad * quad = WResourceManager::Instance()->GetQuad("back_thumb");
|
||||
JQuadPtr quad = WResourceManager::Instance()->GetQuad("back_thumb");
|
||||
|
||||
float x = 45;
|
||||
for (vector<CardView*>::iterator it = cards.begin(); it != cards.end(); ++it)
|
||||
@@ -76,7 +76,7 @@ void GuiHandOpponent::Render()
|
||||
(*it)->x = x;
|
||||
(*it)->y = 2;
|
||||
(*it)->zoom = 0.3f;
|
||||
(*it)->Render(quad);
|
||||
(*it)->Render(quad.get());
|
||||
x += 18;
|
||||
}
|
||||
}
|
||||
@@ -207,16 +207,16 @@ void GuiHandSelf::Render()
|
||||
if (OptionHandDirection::HORIZONTAL == options[Options::HANDDIRECTION].number)
|
||||
{
|
||||
back->SetColor(ARGB(255,255,0,0));
|
||||
JRenderer::GetInstance()->RenderQuad(back, backpos.actX, backpos.actY, backpos.actT, backpos.actZ, backpos.actZ);
|
||||
JRenderer::GetInstance()->RenderQuad(back.get(), backpos.actX, backpos.actY, backpos.actT, backpos.actZ, backpos.actZ);
|
||||
back->SetColor(ARGB(255,255,255,255));
|
||||
mFont->DrawString("0", SCREEN_WIDTH - 10, backpos.actY);
|
||||
}
|
||||
else
|
||||
backpos.Render(back);
|
||||
backpos.Render(back.get());
|
||||
return;
|
||||
}
|
||||
|
||||
backpos.Render(back);
|
||||
backpos.Render(back.get());
|
||||
if (OptionClosedHand::VISIBLE == options[Options::CLOSEDHAND].number || state == Open)
|
||||
for (vector<CardView*>::iterator it = cards.begin(); it != cards.end(); ++it)
|
||||
(*it)->Render();
|
||||
|
||||
@@ -11,9 +11,9 @@ ManaIcon::ManaIcon(int color, float x, float y, float destx, float desty) :
|
||||
Pos(x, y, 0.5, 0.0, 255), f(-1), destx(destx), desty(desty), mode(ALIVE), color(color)
|
||||
{
|
||||
hgeParticleSystemInfo * psi = NULL;
|
||||
JQuad * mq = WResourceManager::Instance()->GetQuad("stars");
|
||||
JQuadPtr mq = WResourceManager::Instance()->GetQuad("stars");
|
||||
|
||||
if (!mq)
|
||||
if (!mq.get())
|
||||
{
|
||||
particleSys = NULL;
|
||||
return;
|
||||
@@ -22,22 +22,22 @@ ManaIcon::ManaIcon(int color, float x, float y, float destx, float desty) :
|
||||
switch (color)
|
||||
{
|
||||
case Constants::MTG_COLOR_RED:
|
||||
psi = WResourceManager::Instance()->RetrievePSI("manared.psi", mq);
|
||||
psi = WResourceManager::Instance()->RetrievePSI("manared.psi", mq.get());
|
||||
break;
|
||||
case Constants::MTG_COLOR_BLUE:
|
||||
psi = WResourceManager::Instance()->RetrievePSI("manablue.psi", mq);
|
||||
psi = WResourceManager::Instance()->RetrievePSI("manablue.psi", mq.get());
|
||||
break;
|
||||
case Constants::MTG_COLOR_GREEN:
|
||||
psi = WResourceManager::Instance()->RetrievePSI("managreen.psi", mq);
|
||||
psi = WResourceManager::Instance()->RetrievePSI("managreen.psi", mq.get());
|
||||
break;
|
||||
case Constants::MTG_COLOR_BLACK:
|
||||
psi = WResourceManager::Instance()->RetrievePSI("manablack.psi", mq);
|
||||
psi = WResourceManager::Instance()->RetrievePSI("manablack.psi", mq.get());
|
||||
break;
|
||||
case Constants::MTG_COLOR_WHITE:
|
||||
psi = WResourceManager::Instance()->RetrievePSI("manawhite.psi", mq);
|
||||
psi = WResourceManager::Instance()->RetrievePSI("manawhite.psi", mq.get());
|
||||
break;
|
||||
default:
|
||||
psi = WResourceManager::Instance()->RetrievePSI("mana.psi", mq);
|
||||
psi = WResourceManager::Instance()->RetrievePSI("mana.psi", mq.get());
|
||||
}
|
||||
|
||||
if (!psi)
|
||||
@@ -45,7 +45,7 @@ ManaIcon::ManaIcon(int color, float x, float y, float destx, float desty) :
|
||||
psi = NEW hgeParticleSystemInfo();
|
||||
if (!psi)
|
||||
return;
|
||||
hgeParticleSystemInfo * defaults = WResourceManager::Instance()->RetrievePSI("mana.psi", mq);
|
||||
hgeParticleSystemInfo * defaults = WResourceManager::Instance()->RetrievePSI("mana.psi", mq.get());
|
||||
if (defaults)
|
||||
{
|
||||
memcpy(psi, defaults, sizeof(hgeParticleSystemInfo));
|
||||
@@ -66,7 +66,7 @@ ManaIcon::ManaIcon(int color, float x, float y, float destx, float desty) :
|
||||
psi->fSizeVar = 0.25396827f;
|
||||
psi->fSpinStart = -5.5555553f;
|
||||
psi->fAlphaVar = 0.77777779f;
|
||||
psi->sprite = mq;
|
||||
psi->sprite = mq.get();
|
||||
}
|
||||
|
||||
switch (color)
|
||||
@@ -150,7 +150,7 @@ void ManaIcon::Render()
|
||||
renderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE);
|
||||
particleSys->Render();
|
||||
renderer->SetTexBlend(BLEND_SRC_ALPHA, BLEND_ONE_MINUS_SRC_ALPHA);
|
||||
renderer->RenderQuad(icon, actX, actY, actT, actZ + zoomP1 * sinf(M_PI * zoomP3), actZ + zoomP2 * cosf(M_PI * zoomP4));
|
||||
renderer->RenderQuad(icon.get(), actX, actY, actT, actZ + zoomP1 * sinf(M_PI * zoomP3), actZ + zoomP2 * cosf(M_PI * zoomP4));
|
||||
}
|
||||
void ManaIcon::Update(float dt, float shift)
|
||||
{
|
||||
@@ -269,7 +269,7 @@ void GuiMana::RenderStatic()
|
||||
if (values[i])
|
||||
{
|
||||
offset -= 20;
|
||||
r->RenderQuad(manaIcons[i], xEnd + 15 + offset, y + 5, 0, 0.7f, 0.7f);
|
||||
r->RenderQuad(manaIcons[i].get(), xEnd + 15 + offset, y + 5, 0, 0.7f, 0.7f);
|
||||
}
|
||||
}
|
||||
r->FillRoundRect(x0, y, static_cast<float> (20 * totalColors + 5), 8, 2, ARGB(100,0,0,0));
|
||||
|
||||
@@ -43,8 +43,8 @@ namespace
|
||||
GuiPhaseBar::GuiPhaseBar() :
|
||||
phase(NULL), angle(0.0f)
|
||||
{
|
||||
JQuad * quad = NULL;
|
||||
if ((quad = WResourceManager::Instance()->GetQuad("phasebar")) != NULL)
|
||||
JQuadPtr quad = WResourceManager::Instance()->GetQuad("phasebar");
|
||||
if (quad.get() != NULL)
|
||||
{
|
||||
quad->mHeight = kHeight;
|
||||
quad->mWidth = kWidth;
|
||||
@@ -68,7 +68,7 @@ void GuiPhaseBar::Update(float dt)
|
||||
void GuiPhaseBar::Render()
|
||||
{
|
||||
GameObserver * g = GameObserver::GetInstance();
|
||||
JQuad * quad = WResourceManager::Instance()->GetQuad("phasebar");
|
||||
JQuadPtr quad = WResourceManager::Instance()->GetQuad("phasebar");
|
||||
|
||||
JRenderer::GetInstance()->DrawLine(0, CENTER, SCREEN_WIDTH, CENTER, ARGB(255, 255, 255, 255));
|
||||
|
||||
@@ -79,7 +79,7 @@ void GuiPhaseBar::Render()
|
||||
for (int glyph = 3; glyph < 6; ++glyph)
|
||||
{
|
||||
scale = ICONSCALE * sinf(angle + glyph * M_PI / 6) / 2;
|
||||
DrawGlyph(quad, glyph, yPos, angle, p, scale);
|
||||
DrawGlyph(quad.get(), glyph, yPos, angle, p, scale);
|
||||
yPos += kWidth * scale;
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ void GuiPhaseBar::Render()
|
||||
{
|
||||
scale = ICONSCALE * sinf(angle + glyph * M_PI / 6) / 2;
|
||||
yPos -= kWidth * scale;
|
||||
DrawGlyph(quad, glyph, yPos, angle, p, scale);
|
||||
DrawGlyph(quad.get(), glyph, yPos, angle, p, scale);
|
||||
}
|
||||
|
||||
if (angle > 0)
|
||||
@@ -97,7 +97,7 @@ void GuiPhaseBar::Render()
|
||||
yPos -= kWidth * scale;
|
||||
float xPos = static_cast<float> (p % (kPhases * (int) (kWidth + 1)));
|
||||
quad->SetTextureRect(xPos, kHeight, kWidth, kHeight);
|
||||
JRenderer::GetInstance()->RenderQuad(quad, 0, yPos, 0.0, scale, scale);
|
||||
JRenderer::GetInstance()->RenderQuad(quad.get(), 0, yPos, 0.0, scale, scale);
|
||||
}
|
||||
|
||||
//print phase name
|
||||
|
||||
@@ -57,28 +57,27 @@ void GuiAvatar::Render()
|
||||
float x0 = actX;
|
||||
float y0 = actY;
|
||||
|
||||
JQuad * quad = player->mAvatar;
|
||||
if (quad)
|
||||
if (player->mAvatar.get())
|
||||
{
|
||||
if (corner == BOTTOM_RIGHT)
|
||||
{
|
||||
x0 -= quad->mWidth * actZ;
|
||||
y0 -= quad->mHeight * actZ;
|
||||
x0 -= player->mAvatar->mWidth * actZ;
|
||||
y0 -= player->mAvatar->mHeight * actZ;
|
||||
}
|
||||
switch (corner)
|
||||
{
|
||||
case TOP_LEFT:
|
||||
quad->SetHotSpot(0, 0);
|
||||
player->mAvatar->SetHotSpot(0, 0);
|
||||
break;
|
||||
case BOTTOM_RIGHT:
|
||||
quad->SetHotSpot(35, 50);
|
||||
player->mAvatar->SetHotSpot(35, 50);
|
||||
break;
|
||||
}
|
||||
quad->SetColor(ARGB((int)actA, 255, avatarRed, avatarRed));
|
||||
r->RenderQuad(quad, actX, actY, actT, actZ, actZ);
|
||||
player->mAvatar->SetColor(ARGB((int)actA, 255, avatarRed, avatarRed));
|
||||
r->RenderQuad(player->mAvatar.get(), actX, actY, actT, actZ, actZ);
|
||||
if (mHasFocus)
|
||||
{
|
||||
r->FillRect(x0, x0, quad->mWidth * actZ, quad->mHeight * actZ, ARGB(abs(128 - wave),255,255,255));
|
||||
r->FillRect(x0, x0, player->mAvatar->mWidth * actZ, player->mAvatar->mHeight * actZ, ARGB(abs(128 - wave),255,255,255));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,11 +151,11 @@ void GuiGameZone::toggleDisplay()
|
||||
void GuiGameZone::Render()
|
||||
{
|
||||
//Texture
|
||||
JQuad * quad = WResourceManager::Instance()->GetQuad("back_thumb");
|
||||
JQuadPtr quad = WResourceManager::Instance()->GetQuad("back_thumb");
|
||||
float scale = defaultHeight / quad->mHeight;
|
||||
quad->SetColor(ARGB((int)(actA),255,255,255));
|
||||
|
||||
JRenderer::GetInstance()->RenderQuad(quad, actX, actY, 0.0, scale * actZ, scale * actZ);
|
||||
JRenderer::GetInstance()->RenderQuad(quad.get(), actX, actY, 0.0, scale * actZ, scale * actZ);
|
||||
|
||||
float x0 = actX;
|
||||
if (x0 < SCREEN_WIDTH / 2)
|
||||
|
||||
@@ -642,7 +642,7 @@ int MTGCardInstance::canBlock(MTGCardInstance * opponent)
|
||||
return 1;
|
||||
}
|
||||
|
||||
JQuad * MTGCardInstance::getIcon()
|
||||
JQuadPtr MTGCardInstance::getIcon()
|
||||
{
|
||||
return WResourceManager::Instance()->RetrieveCard(this, CACHE_THUMB);
|
||||
}
|
||||
|
||||
@@ -203,11 +203,11 @@ void OptionProfile::Render()
|
||||
else
|
||||
sprintf(buf, "profiles/%s/avatar.jpg", selections[value].c_str());
|
||||
string filename = buf;
|
||||
JQuad * mAvatar = WResourceManager::Instance()->RetrieveTempQuad(filename, TEXTURE_SUB_EXACT);
|
||||
JQuadPtr avatar = WResourceManager::Instance()->RetrieveTempQuad(filename, TEXTURE_SUB_EXACT);
|
||||
|
||||
if (mAvatar)
|
||||
if (avatar)
|
||||
{
|
||||
renderer->RenderQuad(mAvatar, x, pY);
|
||||
renderer->RenderQuad(avatar.get(), x, pY);
|
||||
pX += 40;
|
||||
}
|
||||
|
||||
@@ -460,7 +460,7 @@ OptionTheme::OptionTheme(OptionThemeStyle * style) :
|
||||
ts = style;
|
||||
}
|
||||
|
||||
JQuad * OptionTheme::getImage()
|
||||
JQuadPtr OptionTheme::getImage()
|
||||
{
|
||||
char buf[512];
|
||||
string val = selections[value];
|
||||
@@ -510,11 +510,11 @@ void OptionTheme::Render()
|
||||
}
|
||||
sprintf(buf, _("Theme: %s").c_str(), selections[value].c_str());
|
||||
|
||||
JQuad * q = getImage();
|
||||
JQuadPtr q = getImage();
|
||||
if (q)
|
||||
{
|
||||
float scale = 128 / q->mHeight;
|
||||
renderer->RenderQuad(q, x, y, 0, scale, scale);
|
||||
renderer->RenderQuad(q.get(), x, y, 0, scale, scale);
|
||||
}
|
||||
|
||||
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::OPTION_FONT);
|
||||
|
||||
@@ -28,7 +28,6 @@ Damageable(20)
|
||||
poisonCount = 0;
|
||||
damageCount = 0;
|
||||
preventable = 0;
|
||||
mAvatar = NULL;
|
||||
mAvatarTex = NULL;
|
||||
type_as_damageable = DAMAGEABLE_PLAYER;
|
||||
playMode = MODE_HUMAN;
|
||||
@@ -51,7 +50,6 @@ Player::~Player()
|
||||
SAFE_DELETE(manaPool);
|
||||
SAFE_DELETE(game);
|
||||
WResourceManager::Instance()->Release(mAvatarTex);
|
||||
mAvatar = NULL;
|
||||
mAvatarTex = NULL;
|
||||
}
|
||||
|
||||
@@ -60,14 +58,11 @@ void Player::loadAvatar(string file)
|
||||
if (mAvatarTex)
|
||||
{
|
||||
WResourceManager::Instance()->Release(mAvatarTex);
|
||||
mAvatar = NULL;
|
||||
mAvatarTex = NULL;
|
||||
}
|
||||
mAvatarTex = WResourceManager::Instance()->RetrieveTexture(file, RETRIEVE_LOCK, TEXTURE_SUB_AVATAR);
|
||||
if (mAvatarTex)
|
||||
mAvatar = WResourceManager::Instance()->RetrieveQuad(file, 0, 0, 35, 50, "playerAvatar", RETRIEVE_NORMAL, TEXTURE_SUB_AVATAR);
|
||||
else
|
||||
mAvatar = NULL;
|
||||
}
|
||||
|
||||
const string Player::getDisplayName() const
|
||||
@@ -92,7 +87,7 @@ int Player::getId()
|
||||
return -1;
|
||||
}
|
||||
|
||||
JQuad * Player::getIcon()
|
||||
JQuadPtr Player::getIcon()
|
||||
{
|
||||
return mAvatar;
|
||||
}
|
||||
|
||||
@@ -19,10 +19,10 @@ namespace
|
||||
const float kSpadeRightBottomOffset = 3;
|
||||
}
|
||||
|
||||
JQuad* SimpleMenu::spadeR = NULL;
|
||||
JQuad* SimpleMenu::spadeL = NULL;
|
||||
JQuad* SimpleMenu::jewel = NULL;
|
||||
JQuad* SimpleMenu::side = NULL;
|
||||
JQuadPtr SimpleMenu::spadeR;
|
||||
JQuadPtr SimpleMenu::spadeL;
|
||||
JQuadPtr SimpleMenu::jewel;
|
||||
JQuadPtr SimpleMenu::side;
|
||||
JTexture* SimpleMenu::spadeRTex = NULL;
|
||||
JTexture* SimpleMenu::spadeLTex = NULL;
|
||||
JTexture* SimpleMenu::jewelTex = NULL;
|
||||
@@ -52,15 +52,15 @@ SimpleMenu::SimpleMenu(int id, JGuiListener* listener, int fontId, float x, floa
|
||||
if (!spadeRTex) spadeRTex = WResourceManager::Instance()->RetrieveTexture("spade_ur.png", RETRIEVE_MANAGE);
|
||||
if (!jewelTex) jewelTex = renderer->CreateTexture(5, 5, TEX_TYPE_USE_VRAM);
|
||||
if (!sideTex) sideTex = WResourceManager::Instance()->RetrieveTexture("menuside.png", RETRIEVE_MANAGE);
|
||||
if (NULL == spadeL) spadeL = WResourceManager::Instance()->RetrieveQuad("spade_ul.png", 0, 0, 0, 0, "spade_ul", RETRIEVE_MANAGE);
|
||||
if (NULL == spadeR) spadeR = WResourceManager::Instance()->RetrieveQuad("spade_ur.png", 0, 0, 0, 0, "spade_ur", RETRIEVE_MANAGE);
|
||||
if (NULL == jewel) jewel = NEW JQuad(jewelTex, 1, 1, 3, 3);
|
||||
if (NULL == side) side = WResourceManager::Instance()->RetrieveQuad("menuside.png", 1, 1, 1, kPoleWidth, "menuside", RETRIEVE_MANAGE);
|
||||
spadeL = WResourceManager::Instance()->RetrieveQuad("spade_ul.png", 0, 0, 0, 0, "spade_ul", RETRIEVE_MANAGE);
|
||||
spadeR = WResourceManager::Instance()->RetrieveQuad("spade_ur.png", 0, 0, 0, 0, "spade_ur", RETRIEVE_MANAGE);
|
||||
jewel.reset(NEW JQuad(jewelTex, 1, 1, 3, 3));
|
||||
side = WResourceManager::Instance()->RetrieveQuad("menuside.png", 1, 1, 1, kPoleWidth, "menuside", RETRIEVE_MANAGE);
|
||||
|
||||
if (NULL == stars) stars = NEW hgeParticleSystem(WResourceManager::Instance()->RetrievePSI("stars.psi", WResourceManager::Instance()->GetQuad("stars")));
|
||||
if (NULL == stars)
|
||||
stars = NEW hgeParticleSystem(WResourceManager::Instance()->RetrievePSI("stars.psi", WResourceManager::Instance()->GetQuad("stars").get()));
|
||||
|
||||
stars->FireAt(mX, mY);
|
||||
|
||||
}
|
||||
|
||||
SimpleMenu::~SimpleMenu()
|
||||
@@ -83,14 +83,14 @@ void SimpleMenu::drawHorzPole(float x, float y, float width)
|
||||
rightXOffset = kSpadeRightBottomOffset;
|
||||
}
|
||||
|
||||
renderer->RenderQuad(side, x, y, 0, width);
|
||||
renderer->RenderQuad(side.get(), x, y, 0, width);
|
||||
spadeR->SetHFlip(true);
|
||||
spadeL->SetHFlip(false);
|
||||
renderer->RenderQuad(spadeR, x - leftXOffset, y - yOffset );
|
||||
renderer->RenderQuad(spadeL, x + width - rightXOffset, y - yOffset);
|
||||
renderer->RenderQuad(spadeR.get(), x - leftXOffset, y - yOffset );
|
||||
renderer->RenderQuad(spadeL.get(), x + width - rightXOffset, y - yOffset);
|
||||
|
||||
renderer->RenderQuad(jewel, x, y - 1);
|
||||
renderer->RenderQuad(jewel, x + width - 1, y - 1);
|
||||
renderer->RenderQuad(jewel.get(), x, y - 1);
|
||||
renderer->RenderQuad(jewel.get(), x + width - 1, y - 1);
|
||||
}
|
||||
|
||||
void SimpleMenu::drawVertPole(float x, float y, float height)
|
||||
@@ -110,14 +110,14 @@ void SimpleMenu::drawVertPole(float x, float y, float height)
|
||||
bottomYOffset = kSpadeRightBottomOffset;
|
||||
}
|
||||
|
||||
renderer->RenderQuad(side, x + kPoleWidth, y, M_PI / 2, height);
|
||||
renderer->RenderQuad(side.get(), x + kPoleWidth, y, M_PI / 2, height);
|
||||
spadeR->SetHFlip(true);
|
||||
spadeL->SetHFlip(false);
|
||||
renderer->RenderQuad(spadeR, x + kPoleWidth + xOffset, y - topYOffset, M_PI / 2);
|
||||
renderer->RenderQuad(spadeL, x + kPoleWidth + xOffset, y + height - bottomYOffset, M_PI / 2);
|
||||
renderer->RenderQuad(spadeR.get(), x + kPoleWidth + xOffset, y - topYOffset, M_PI / 2);
|
||||
renderer->RenderQuad(spadeL.get(), x + kPoleWidth + xOffset, y + height - bottomYOffset, M_PI / 2);
|
||||
|
||||
renderer->RenderQuad(jewel, x - 1, y - 1);
|
||||
renderer->RenderQuad(jewel, x - 1, y + height - 1);
|
||||
renderer->RenderQuad(jewel.get(), x - 1, y - 1);
|
||||
renderer->RenderQuad(jewel.get(), x - 1, y + height - 1);
|
||||
}
|
||||
|
||||
void SimpleMenu::Render()
|
||||
@@ -236,7 +236,7 @@ void SimpleMenu::Close()
|
||||
|
||||
void SimpleMenu::destroy()
|
||||
{
|
||||
SAFE_DELETE(SimpleMenu::jewel);
|
||||
SimpleMenu::jewel.reset();
|
||||
SAFE_DELETE(SimpleMenu::stars);
|
||||
SAFE_DELETE(SimpleMenu::jewelTex);
|
||||
}
|
||||
|
||||
@@ -128,11 +128,11 @@ void SimplePopup::drawCorner(string imageName, bool flipX, bool flipY, float x,
|
||||
{
|
||||
LOG(" Drawing a Corner! ");
|
||||
JRenderer* r = JRenderer::GetInstance();
|
||||
JQuad *horizontalBarImage = WResourceManager::Instance()->RetrieveTempQuad( imageName, TEXTURE_SUB_5551);
|
||||
JQuadPtr horizontalBarImage = WResourceManager::Instance()->RetrieveTempQuad( imageName, TEXTURE_SUB_5551);
|
||||
horizontalBarImage->SetHFlip(flipX);
|
||||
horizontalBarImage->SetVFlip(flipY);
|
||||
|
||||
r->RenderQuad( horizontalBarImage, x, y);
|
||||
r->RenderQuad(horizontalBarImage.get(), x, y);
|
||||
LOG(" Done Drawing a Corner! ");
|
||||
}
|
||||
|
||||
@@ -140,13 +140,13 @@ void SimplePopup::drawHorzPole(string imageName, bool flipX = false, bool flipY
|
||||
{
|
||||
LOG(" Drawing a horizontal border! ");
|
||||
JRenderer* r = JRenderer::GetInstance();
|
||||
JQuad *horizontalBarImage = WResourceManager::Instance()->RetrieveTempQuad( imageName, TEXTURE_SUB_5551);
|
||||
JQuadPtr horizontalBarImage = WResourceManager::Instance()->RetrieveTempQuad( imageName, TEXTURE_SUB_5551);
|
||||
if ( horizontalBarImage != NULL )
|
||||
{
|
||||
horizontalBarImage->SetHFlip(flipX);
|
||||
horizontalBarImage->SetVFlip(flipY);
|
||||
|
||||
r->RenderQuad( horizontalBarImage, x, y, 0, width );
|
||||
r->RenderQuad(horizontalBarImage.get(), x, y, 0, width);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -159,13 +159,13 @@ void SimplePopup::drawVertPole(string imageName, bool flipX = false, bool flipY
|
||||
{
|
||||
LOG(" Drawing a Vertical border! ");
|
||||
JRenderer* r = JRenderer::GetInstance();
|
||||
JQuad *verticalBarImage = WResourceManager::Instance()->RetrieveTempQuad( imageName, TEXTURE_SUB_5551);
|
||||
JQuadPtr verticalBarImage = WResourceManager::Instance()->RetrieveTempQuad( imageName, TEXTURE_SUB_5551);
|
||||
if ( verticalBarImage != NULL )
|
||||
{
|
||||
verticalBarImage->SetHFlip(flipX);
|
||||
verticalBarImage->SetVFlip(flipY);
|
||||
|
||||
r->RenderQuad( verticalBarImage, x, y, 0, 1.0f, height);
|
||||
r->RenderQuad(verticalBarImage.get(), x, y, 0, 1.0f, height);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -193,7 +193,7 @@ StoryImage::StoryImage(string img, float mX, float mY) :
|
||||
}
|
||||
void StoryImage::Render()
|
||||
{
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveTempQuad(img);
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveTempQuad(img);
|
||||
if (quad)
|
||||
{
|
||||
float x = mX;
|
||||
@@ -202,13 +202,13 @@ void StoryImage::Render()
|
||||
x = SCREEN_WIDTH / 2;
|
||||
quad->SetHotSpot(quad->mWidth / 2, 0);
|
||||
}
|
||||
JRenderer::GetInstance()->RenderQuad(quad, x, mY);
|
||||
JRenderer::GetInstance()->RenderQuad(quad.get(), x, mY);
|
||||
}
|
||||
}
|
||||
|
||||
float StoryImage::getHeight()
|
||||
{
|
||||
JQuad * quad = WResourceManager::Instance()->RetrieveQuad(img);
|
||||
JQuadPtr quad = WResourceManager::Instance()->RetrieveQuad(img);
|
||||
if (quad)
|
||||
{
|
||||
return quad->mHeight;
|
||||
|
||||
@@ -112,19 +112,19 @@ const KeyRep& translateKey(LocalKeySym key)
|
||||
KeyRep& k = res->second;
|
||||
switch (key)
|
||||
{
|
||||
case PSP_CTRL_SELECT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)2*32, 32, 64, 32, "PSP_CTRL_SELECT", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_START : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)0*32, 32, 64, 32, "PSP_CTRL_START", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_UP : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)0*32, 0, 32, 32, "PSP_CTRL_UP", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_RIGHT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)3*32, 0, 32, 32, "PSP_CTRL_RIGHT", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_DOWN : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)1*32, 0, 32, 32, "PSP_CTRL_DOWN", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_LEFT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)2*32, 0, 32, 32, "PSP_CTRL_LEFT", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_LTRIGGER : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)6*32, 32, 64, 32, "PSP_CTRL_LTRIGGER", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_RTRIGGER : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)8*32, 32, 64, 32, "PSP_CTRL_RTRIGGER", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_TRIANGLE : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)5*32, 0, 32, 32, "PSP_CTRL_TRIANGLE", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_CIRCLE : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)4*32, 0, 32, 32, "PSP_CTRL_CIRCLE", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_CROSS : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)7*32, 0, 32, 32, "PSP_CTRL_CROSS", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_SQUARE : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)6*32, 0, 32, 32, "PSP_CTRL_SQUARE", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_HOLD : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)4*32, 0, 32, 32, "PSP_CTRL_HOLD", RETRIEVE_NORMAL); break;
|
||||
case PSP_CTRL_SELECT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)2*32, 32, 64, 32, "PSP_CTRL_SELECT", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_START : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)0*32, 32, 64, 32, "PSP_CTRL_START", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_UP : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)0*32, 0, 32, 32, "PSP_CTRL_UP", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_RIGHT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)3*32, 0, 32, 32, "PSP_CTRL_RIGHT", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_DOWN : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)1*32, 0, 32, 32, "PSP_CTRL_DOWN", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_LEFT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)2*32, 0, 32, 32, "PSP_CTRL_LEFT", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_LTRIGGER : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)6*32, 32, 64, 32, "PSP_CTRL_LTRIGGER", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_RTRIGGER : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)8*32, 32, 64, 32, "PSP_CTRL_RTRIGGER", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_TRIANGLE : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)5*32, 0, 32, 32, "PSP_CTRL_TRIANGLE", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_CIRCLE : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)4*32, 0, 32, 32, "PSP_CTRL_CIRCLE", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_CROSS : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)7*32, 0, 32, 32, "PSP_CTRL_CROSS", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_SQUARE : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)6*32, 0, 32, 32, "PSP_CTRL_SQUARE", RETRIEVE_NORMAL).get(); break;
|
||||
case PSP_CTRL_HOLD : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)4*32, 0, 32, 32, "PSP_CTRL_HOLD", RETRIEVE_NORMAL).get(); break;
|
||||
default: /* Unknown key : no icon */ ;
|
||||
}
|
||||
return k;
|
||||
@@ -191,18 +191,18 @@ const KeyRep& translateKey(JButton key) {
|
||||
KeyRep& k = res->second;
|
||||
switch (key)
|
||||
{
|
||||
case JGE_BTN_CTRL : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)2*32, 32, 64, 32, "PSP_CTRL_SELECT", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_MENU : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)0*32, 32, 64, 32, "PSP_CTRL_START", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_UP : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)0*32, 0, 32, 32, "PSP_CTRL_UP", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_RIGHT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)3*32, 0, 32, 32, "PSP_CTRL_RIGHT", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_DOWN : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)1*32, 0, 32, 32, "PSP_CTRL_DOWN", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_LEFT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)2*32, 0, 32, 32, "PSP_CTRL_LEFT", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_PREV : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)6*32, 32, 64, 32, "PSP_CTRL_LTRIGGER", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_NEXT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)8*32, 32, 64, 32, "PSP_CTRL_RTRIGGER", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_CANCEL : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)5*32, 0, 32, 32, "PSP_CTRL_TRIANGLE", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_OK : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)4*32, 0, 32, 32, "PSP_CTRL_CIRCLE", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_SEC : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)7*32, 0, 32, 32, "PSP_CTRL_CROSS", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_PRI : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)6*32, 0, 32, 32, "PSP_CTRL_SQUARE", RETRIEVE_NORMAL); break;
|
||||
case JGE_BTN_CTRL : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)2*32, 32, 64, 32, "PSP_CTRL_SELECT", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_MENU : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)0*32, 32, 64, 32, "PSP_CTRL_START", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_UP : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)0*32, 0, 32, 32, "PSP_CTRL_UP", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_RIGHT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)3*32, 0, 32, 32, "PSP_CTRL_RIGHT", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_DOWN : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)1*32, 0, 32, 32, "PSP_CTRL_DOWN", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_LEFT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)2*32, 0, 32, 32, "PSP_CTRL_LEFT", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_PREV : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)6*32, 32, 64, 32, "PSP_CTRL_LTRIGGER", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_NEXT : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)8*32, 32, 64, 32, "PSP_CTRL_RTRIGGER", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_CANCEL : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)5*32, 0, 32, 32, "PSP_CTRL_TRIANGLE", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_OK : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)4*32, 0, 32, 32, "PSP_CTRL_CIRCLE", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_SEC : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)7*32, 0, 32, 32, "PSP_CTRL_CROSS", RETRIEVE_NORMAL).get(); break;
|
||||
case JGE_BTN_PRI : k.second = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float)6*32, 0, 32, 32, "PSP_CTRL_SQUARE", RETRIEVE_NORMAL).get(); break;
|
||||
default: /* Unknown key : no icon */ ;
|
||||
}
|
||||
return k;
|
||||
|
||||
@@ -77,19 +77,7 @@ WCachedTexture::WCachedTexture()
|
||||
WCachedTexture::~WCachedTexture()
|
||||
{
|
||||
if (texture)
|
||||
SAFE_DELETE(texture);
|
||||
|
||||
if (!trackedQuads.size()) return;
|
||||
|
||||
vector<WTrackedQuad*>::iterator it;
|
||||
WTrackedQuad * tq = NULL;
|
||||
|
||||
for (it = trackedQuads.begin(); it != trackedQuads.end(); it++)
|
||||
{
|
||||
tq = (*it);
|
||||
SAFE_DELETE(tq);
|
||||
}
|
||||
trackedQuads.clear();
|
||||
SAFE_DELETE(texture);
|
||||
}
|
||||
|
||||
JTexture * WCachedTexture::Actual()
|
||||
@@ -99,135 +87,44 @@ JTexture * WCachedTexture::Actual()
|
||||
|
||||
bool WCachedTexture::isLocked()
|
||||
{
|
||||
if (locks != WRES_UNLOCKED) return true;
|
||||
|
||||
for (vector<WTrackedQuad*>::iterator it = trackedQuads.begin(); it != trackedQuads.end(); it++)
|
||||
{
|
||||
if ((*it) && (*it)->isLocked()) return true;
|
||||
//null case
|
||||
//tokens that were using workarounds such as mixes of aslongas with CD checks
|
||||
//and thisforeach would call to cache the tokens image, but since the effect never resolved it was NULL
|
||||
//when it came time to check if it was locked, it would trigger a break point here.
|
||||
}
|
||||
|
||||
return false;
|
||||
return (locks != WRES_UNLOCKED);
|
||||
}
|
||||
|
||||
bool WCachedTexture::ReleaseQuad(JQuad* quad)
|
||||
JQuadPtr WCachedTexture::GetQuad(float offX, float offY, float width, float height, const string& resname)
|
||||
{
|
||||
if (quad == NULL) return false;
|
||||
|
||||
WTrackedQuad * tq = NULL;
|
||||
vector<WTrackedQuad*>::iterator nit;
|
||||
for (vector<WTrackedQuad*>::iterator it = trackedQuads.begin(); it != trackedQuads.end(); it = nit)
|
||||
{
|
||||
nit = it;
|
||||
nit++;
|
||||
if ((*it) && (*it)->quad == quad)
|
||||
{
|
||||
tq = (*it);
|
||||
tq->unlock();
|
||||
|
||||
if (!tq->isLocked())
|
||||
{
|
||||
SAFE_DELETE(tq);
|
||||
trackedQuads.erase(it);
|
||||
}
|
||||
|
||||
return true; //Returns true when found.
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
WTrackedQuad * WCachedTexture::GetTrackedQuad(float offX, float offY, float width, float height, string resname)
|
||||
{
|
||||
if (!texture) return NULL;
|
||||
|
||||
bool allocated = false;
|
||||
WTrackedQuad * tq = NULL;
|
||||
JQuad * quad = NULL;
|
||||
|
||||
vector<WTrackedQuad*>::iterator it;
|
||||
if (!texture) return JQuadPtr();
|
||||
|
||||
if (width == 0.0f || width > static_cast<float> (texture->mWidth)) width = static_cast<float> (texture->mWidth);
|
||||
if (height == 0.0f || height > static_cast<float> (texture->mHeight)) height = static_cast<float> (texture->mHeight);
|
||||
|
||||
for (it = trackedQuads.begin(); it != trackedQuads.end(); it++)
|
||||
{
|
||||
if ((*it) && (*it)->resname == resname)
|
||||
{
|
||||
tq = (*it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
std::map<string, JQuadPtr>::iterator iter = mTrackedQuads.find(resname);
|
||||
if (iter != mTrackedQuads.end())
|
||||
return iter->second;
|
||||
|
||||
if (!tq)
|
||||
{
|
||||
allocated = true;
|
||||
tq = NEW WTrackedQuad(resname);
|
||||
if (!tq) return NULL;
|
||||
}
|
||||
|
||||
quad = tq->quad;
|
||||
|
||||
if (!quad)
|
||||
{
|
||||
quad = NEW JQuad(texture, offX, offY, width, height);
|
||||
/*
|
||||
There's a risk this erases the texture calling the quad creation.... Erwan 2010/03/13
|
||||
if(!quad) {
|
||||
//Probably out of memory. Try again.
|
||||
WResourceManager::Instance()->Cleanup();
|
||||
quad = NEW JQuad(texture,offX,offY,width,height);
|
||||
}
|
||||
*/
|
||||
if (!quad)
|
||||
{
|
||||
if (allocated && tq)
|
||||
SAFE_DELETE(tq);
|
||||
fprintf(stderr, "WCACHEDRESOURCE:GetTrackedQuad - Quad is null\n");
|
||||
return NULL; //Probably a crash.
|
||||
}
|
||||
|
||||
tq->quad = quad;
|
||||
if (allocated) trackedQuads.push_back(tq);
|
||||
return tq;
|
||||
}
|
||||
JQuadPtr quad(NEW JQuad(texture, offX, offY, width, height));
|
||||
|
||||
//Update JQ's values to what we called this with.
|
||||
quad->SetTextureRect(offX, offY, width, height);
|
||||
return tq;
|
||||
mTrackedQuads.insert(std::pair<string, JQuadPtr>(resname, quad));
|
||||
return quad;
|
||||
|
||||
}
|
||||
|
||||
JQuad * WCachedTexture::GetQuad(float offX, float offY, float width, float height, string resname)
|
||||
JQuadPtr WCachedTexture::GetQuad(const string& resname)
|
||||
{
|
||||
WTrackedQuad * tq = GetTrackedQuad(offX, offY, width, height, resname);
|
||||
JQuadPtr result;
|
||||
std::map<string, JQuadPtr>::iterator iter = mTrackedQuads.find(resname);
|
||||
if (iter != mTrackedQuads.end())
|
||||
result = iter->second;
|
||||
|
||||
if (tq) return tq->quad;
|
||||
|
||||
return NULL;
|
||||
return result;
|
||||
}
|
||||
|
||||
JQuad * WCachedTexture::GetQuad(string resname)
|
||||
JQuadPtr WCachedTexture::GetCard(float offX, float offY, float width, float height, const string& resname)
|
||||
{
|
||||
vector<WTrackedQuad*>::iterator it;
|
||||
|
||||
for (it = trackedQuads.begin(); it != trackedQuads.end(); it++)
|
||||
{
|
||||
if ((*it) && (*it)->resname == resname)
|
||||
{
|
||||
return (*it)->quad;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
JQuad * WCachedTexture::GetCard(float offX, float offY, float width, float height, string resname)
|
||||
{
|
||||
JQuad * jq = GetQuad(offX, offY, width, height, resname);
|
||||
if (jq) jq->SetHotSpot(static_cast<float> (jq->mTex->mWidth / 2), static_cast<float> (jq->mTex->mHeight / 2));
|
||||
JQuadPtr jq = GetQuad(offX, offY, width, height, resname);
|
||||
if (jq.get())
|
||||
jq->SetHotSpot(static_cast<float> (jq->mTex->mWidth / 2), static_cast<float> (jq->mTex->mHeight / 2));
|
||||
|
||||
return jq;
|
||||
}
|
||||
@@ -265,46 +162,45 @@ void WCachedTexture::Refresh()
|
||||
|
||||
JRenderer::GetInstance()->TransferTextureToGLContext(*texture);
|
||||
|
||||
for (vector<WTrackedQuad*>::iterator it = trackedQuads.begin(); it != trackedQuads.end(); it++)
|
||||
for (map<string, JQuadPtr>::iterator it = mTrackedQuads.begin(); it != mTrackedQuads.end(); ++it)
|
||||
{
|
||||
if ((*it) && (*it)->quad) (*it)->quad->mTex = texture;
|
||||
if (it->second.get())
|
||||
it->second->mTex = texture;
|
||||
}
|
||||
}
|
||||
|
||||
bool WCachedTexture::Attempt(string filename, int submode, int & error)
|
||||
bool WCachedTexture::Attempt(const string& filename, int submode, int & error)
|
||||
{
|
||||
mFilename = filename;
|
||||
int format = TEXTURE_FORMAT;
|
||||
loadedMode = submode;
|
||||
string realname;
|
||||
string realname = filename;
|
||||
|
||||
//Form correct filename.
|
||||
if (submode & TEXTURE_SUB_EXACT)
|
||||
realname = filename;
|
||||
else if (submode & TEXTURE_SUB_CARD)
|
||||
if (submode & TEXTURE_SUB_CARD)
|
||||
{
|
||||
if (submode & TEXTURE_SUB_THUMB)
|
||||
{
|
||||
for (string::size_type i = 0; i < filename.size(); i++)
|
||||
for (string::size_type i = 0; i < realname.size(); i++)
|
||||
{
|
||||
if (filename[i] == '\\' || filename[i] == '/')
|
||||
if (realname[i] == '\\' || realname[i] == '/')
|
||||
{
|
||||
filename.insert(i + 1, "thumbnails/");
|
||||
realname.insert(i + 1, "thumbnails/");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
realname = WResourceManager::Instance()->cardFile(filename);
|
||||
realname = WResourceManager::Instance()->cardFile(realname);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (submode & TEXTURE_SUB_THUMB) filename.insert(0, "thumbnails/");
|
||||
if (submode & TEXTURE_SUB_THUMB) realname.insert(0, "thumbnails/");
|
||||
|
||||
if (submode & TEXTURE_SUB_AVATAR)
|
||||
realname = WResourceManager::Instance()->avatarFile(filename);
|
||||
realname = WResourceManager::Instance()->avatarFile(realname);
|
||||
else
|
||||
realname = WResourceManager::Instance()->graphicsFile(filename);
|
||||
realname = WResourceManager::Instance()->graphicsFile(realname);
|
||||
}
|
||||
|
||||
//Apply pixel mode
|
||||
@@ -364,7 +260,7 @@ void WCachedSample::Refresh()
|
||||
return;
|
||||
}
|
||||
|
||||
bool WCachedSample::Attempt(string filename, int submode, int & error)
|
||||
bool WCachedSample::Attempt(const string& filename, int submode, int & error)
|
||||
{
|
||||
loadedMode = submode;
|
||||
|
||||
@@ -418,7 +314,7 @@ void WCachedParticles::Refresh()
|
||||
return;
|
||||
}
|
||||
|
||||
bool WCachedParticles::Attempt(string filename, int submode, int & error)
|
||||
bool WCachedParticles::Attempt(const string& filename, int submode, int & error)
|
||||
{
|
||||
|
||||
JFileSystem* fileSys = JFileSystem::GetInstance();
|
||||
@@ -459,26 +355,3 @@ WCachedParticles::~WCachedParticles()
|
||||
{
|
||||
SAFE_DELETE(particles);
|
||||
}
|
||||
|
||||
//WTrackedQuad
|
||||
unsigned long WTrackedQuad::size()
|
||||
{
|
||||
return sizeof(JQuad);
|
||||
}
|
||||
|
||||
bool WTrackedQuad::isGood()
|
||||
{
|
||||
return (quad != NULL);
|
||||
}
|
||||
|
||||
WTrackedQuad::WTrackedQuad(string _resname)
|
||||
{
|
||||
quad = NULL;
|
||||
resname = _resname;
|
||||
}
|
||||
|
||||
WTrackedQuad::~WTrackedQuad()
|
||||
{
|
||||
if (quad)
|
||||
SAFE_DELETE(quad);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ bool WSyncable::prev()
|
||||
}
|
||||
|
||||
//WSrcImage
|
||||
JQuad * WSrcImage::getImage(int offset)
|
||||
JQuadPtr WSrcImage::getImage(int offset)
|
||||
{
|
||||
return WResourceManager::Instance()->RetrieveTempQuad(filename);
|
||||
}
|
||||
@@ -54,7 +54,7 @@ WSrcCards::WSrcCards(float delay)
|
||||
filtersRoot = NULL;
|
||||
}
|
||||
|
||||
JQuad * WSrcCards::getImage(int offset)
|
||||
JQuadPtr WSrcCards::getImage(int offset)
|
||||
{
|
||||
#if defined WIN32 || defined LINUX //Loading delay only on PSP.
|
||||
#else
|
||||
@@ -66,7 +66,7 @@ JQuad * WSrcCards::getImage(int offset)
|
||||
return WResourceManager::Instance()->RetrieveCard(getCard(offset));
|
||||
}
|
||||
|
||||
JQuad * WSrcCards::getThumb(int offset)
|
||||
JQuadPtr WSrcCards::getThumb(int offset)
|
||||
{
|
||||
return WResourceManager::Instance()->RetrieveCard(getCard(offset), RETRIEVE_THUMB);
|
||||
}
|
||||
|
||||
+10
-10
@@ -504,22 +504,22 @@ void WFBFont::DrawString(const char *s, float x, float y, int align, float leftO
|
||||
float scale = 0.05f * cosf(2 * M_PI * ((float) t) / 256.0f);
|
||||
if (scale < 0)
|
||||
{
|
||||
mRenderer->RenderQuad(manaIcons[mana], xx + 3 * sinf(2 * M_PI * ((float) t) / 256.0f), yy + 3 * cosf(2
|
||||
mRenderer->RenderQuad(manaIcons[mana].get(), xx + 3 * sinf(2 * M_PI * ((float) t) / 256.0f), yy + 3 * cosf(2
|
||||
* M_PI * ((float) (t - 35)) / 256.0f), 0, 0.5f * mScale, 0.5f * mScale);
|
||||
mRenderer->RenderQuad(manaIcons[mana2], xx + 3 * sinf(2 * M_PI * ((float) v) / 256.0f), yy + 3 * cosf(2
|
||||
mRenderer->RenderQuad(manaIcons[mana2].get(), xx + 3 * sinf(2 * M_PI * ((float) v) / 256.0f), yy + 3 * cosf(2
|
||||
* M_PI * ((float) (v - 35)) / 256.0f), 0, 0.5f * mScale, 0.5f * mScale);
|
||||
}
|
||||
else
|
||||
{
|
||||
mRenderer->RenderQuad(manaIcons[mana2], xx + 3 * sinf(2 * M_PI * ((float) v) / 256.0f), yy + 3 * cosf(2
|
||||
mRenderer->RenderQuad(manaIcons[mana2].get(), xx + 3 * sinf(2 * M_PI * ((float) v) / 256.0f), yy + 3 * cosf(2
|
||||
* M_PI * ((float) (v - 35)) / 256.0f), 0, 0.5f * mScale, 0.5f * mScale);
|
||||
mRenderer->RenderQuad(manaIcons[mana], xx + 3 * sinf(2 * M_PI * ((float) t) / 256.0f), yy + 3 * cosf(2
|
||||
mRenderer->RenderQuad(manaIcons[mana].get(), xx + 3 * sinf(2 * M_PI * ((float) t) / 256.0f), yy + 3 * cosf(2
|
||||
* M_PI * ((float) (t - 35)) / 256.0f), 0, 0.5f * mScale, 0.5f * mScale);
|
||||
}
|
||||
mana = Constants::MTG_NB_COLORS + 1; // do not draw colorless cost in hybrid mana cost
|
||||
}
|
||||
else
|
||||
mRenderer->RenderQuad(manaIcons[mana], xx, yy, 0, 0.5f * mScale, 0.5f * mScale);
|
||||
mRenderer->RenderQuad(manaIcons[mana].get(), xx, yy, 0, 0.5f * mScale, 0.5f * mScale);
|
||||
mRenderer->BindTexture(mTexture); // manaIcons use different texture, so we need to rebind it.
|
||||
}
|
||||
|
||||
@@ -923,22 +923,22 @@ void WGBKFont::DrawString(const char *s, float x, float y, int align, float left
|
||||
float scale = 0.05f * cosf(2 * M_PI * ((float) t) / 256.0f);
|
||||
if (scale < 0)
|
||||
{
|
||||
mRenderer->RenderQuad(manaIcons[mana], xx + 3 * sinf(2 * M_PI * ((float) t) / 256.0f), yy + 3 * cosf(2
|
||||
mRenderer->RenderQuad(manaIcons[mana].get(), xx + 3 * sinf(2 * M_PI * ((float) t) / 256.0f), yy + 3 * cosf(2
|
||||
* M_PI * ((float) (t - 35)) / 256.0f), 0, 0.5f * mScale, 0.5f * mScale);
|
||||
mRenderer->RenderQuad(manaIcons[mana2], xx + 3 * sinf(2 * M_PI * ((float) v) / 256.0f), yy + 3 * cosf(2
|
||||
mRenderer->RenderQuad(manaIcons[mana2].get(), xx + 3 * sinf(2 * M_PI * ((float) v) / 256.0f), yy + 3 * cosf(2
|
||||
* M_PI * ((float) (v - 35)) / 256.0f), 0, 0.5f * mScale, 0.5f * mScale);
|
||||
}
|
||||
else
|
||||
{
|
||||
mRenderer->RenderQuad(manaIcons[mana2], xx + 3 * sinf(2 * M_PI * ((float) v) / 256.0f), yy + 3 * cosf(2
|
||||
mRenderer->RenderQuad(manaIcons[mana2].get(), xx + 3 * sinf(2 * M_PI * ((float) v) / 256.0f), yy + 3 * cosf(2
|
||||
* M_PI * ((float) (v - 35)) / 256.0f), 0, 0.5f * mScale, 0.5f * mScale);
|
||||
mRenderer->RenderQuad(manaIcons[mana], xx + 3 * sinf(2 * M_PI * ((float) t) / 256.0f), yy + 3 * cosf(2
|
||||
mRenderer->RenderQuad(manaIcons[mana].get(), xx + 3 * sinf(2 * M_PI * ((float) t) / 256.0f), yy + 3 * cosf(2
|
||||
* M_PI * ((float) (t - 35)) / 256.0f), 0, 0.5f * mScale, 0.5f * mScale);
|
||||
}
|
||||
mana = Constants::MTG_NB_COLORS + 1; // donot draw colorless cost in hybrid mana cost
|
||||
}
|
||||
else
|
||||
mRenderer->RenderQuad(manaIcons[mana], xx, yy, 0, 0.5f * mScale, 0.5f * mScale);
|
||||
mRenderer->RenderQuad(manaIcons[mana].get(), xx, yy, 0, 0.5f * mScale, 0.5f * mScale);
|
||||
mRenderer->BindTexture(mTexture); // manaIcons use different texture, so we need to rebind it.
|
||||
}
|
||||
|
||||
|
||||
+27
-26
@@ -38,6 +38,7 @@ PIXEL_TYPE WGuiBase::getColor(int type)
|
||||
}
|
||||
return ARGB(150,50,50,50);
|
||||
}
|
||||
|
||||
/**
|
||||
Renders the backdrop of a WGui item.
|
||||
Meant to be overriden in subclasses that require a unique backdrop.
|
||||
@@ -102,7 +103,6 @@ bool WGuiItem::Leaving(JButton key)
|
||||
|
||||
void WGuiItem::Render()
|
||||
{
|
||||
|
||||
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::OPTION_FONT);
|
||||
DWORD oldcolor = mFont->GetColor();
|
||||
mFont->SetColor(getColor(WGuiColor::TEXT));
|
||||
@@ -1203,10 +1203,10 @@ void WGuiAward::Overlay()
|
||||
float fH = mFont->GetHeight();
|
||||
|
||||
if (fH < 16) fH = 18;
|
||||
JQuad * button = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float) 4 * 32, 0, 32, 32, "", RETRIEVE_NORMAL);
|
||||
JQuadPtr button = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float) 4 * 32, 0, 32, 32, "", RETRIEVE_NORMAL);
|
||||
|
||||
r->FillRoundRect(5, 10, fW + 32, fH + 2, 2, getColor(WGuiColor::BACK));
|
||||
if (button) r->RenderQuad(button, 10, 12, 0, .5, .5);
|
||||
if (button) r->RenderQuad(button.get(), 10, 12, 0, .5, .5);
|
||||
mFont->DrawString(::_(s), 30, 16);
|
||||
}
|
||||
|
||||
@@ -1215,8 +1215,7 @@ void WGuiAward::Overlay()
|
||||
void WGuiAward::Underlay()
|
||||
{
|
||||
char buf[1024];
|
||||
JRenderer * r = JRenderer::GetInstance();
|
||||
JQuad * trophy = NULL;
|
||||
JQuadPtr trophy;
|
||||
|
||||
string n = Options::getName(id);
|
||||
if (n.size())
|
||||
@@ -1230,12 +1229,12 @@ void WGuiAward::Underlay()
|
||||
trophy = WResourceManager::Instance()->RetrieveTempQuad("trophy_set.png"); //TODO FIXME: Should look in set dir too.
|
||||
}
|
||||
|
||||
if (!trophy) //Fallback to basic trophy image.
|
||||
if (!trophy.get()) //Fallback to basic trophy image.
|
||||
trophy = WResourceManager::Instance()->RetrieveTempQuad("trophy.png");
|
||||
|
||||
if (trophy)
|
||||
if (trophy.get())
|
||||
{
|
||||
r->RenderQuad(trophy, 0, SCREEN_HEIGHT - trophy->mHeight);
|
||||
JRenderer::GetInstance()->RenderQuad(trophy.get(), 0, SCREEN_HEIGHT - trophy->mHeight);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1245,7 +1244,6 @@ void WGuiAward::Render()
|
||||
|
||||
if (!goa) return;
|
||||
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::OPTION_FONT);
|
||||
mFont->SetScale(1);
|
||||
mFont->SetColor(getColor(WGuiColor::TEXT));
|
||||
@@ -1256,7 +1254,7 @@ void WGuiAward::Render()
|
||||
float fM = fH / 5; //Font Margin is 20% font height
|
||||
|
||||
myX += fM;
|
||||
renderer->FillRoundRect(x - fM / 2, y - fM, getWidth() - fM, fH - fM, fM, getColor(WGuiColor::BACK_TAB));
|
||||
JRenderer::GetInstance()->FillRoundRect(x - fM / 2, y - fM, getWidth() - fM, fH - fM, fM, getColor(WGuiColor::BACK_TAB));
|
||||
mFont->DrawString(::_(displayValue).c_str(), myX, myY, JGETEXT_LEFT);
|
||||
|
||||
myY += fH + 3 * fM;
|
||||
@@ -1292,7 +1290,7 @@ WGuiAward::~WGuiAward()
|
||||
}
|
||||
bool WGuiAward::Visible()
|
||||
{
|
||||
//WGuiAward is only visible when it's tied to an already acchieved award.
|
||||
//WGuiAward is only visible when it's tied to an already achieved award.
|
||||
GameOptionAward * goa = dynamic_cast<GameOptionAward*> (&options[id]);
|
||||
if (!goa || !goa->number) return false;
|
||||
return true;
|
||||
@@ -1316,11 +1314,11 @@ void WGuiImage::imageScale(float _w, float _h)
|
||||
|
||||
float WGuiImage::getHeight()
|
||||
{
|
||||
JQuad * q = NULL;
|
||||
JQuadPtr q = source->getImage();
|
||||
|
||||
if (imgH == 0)
|
||||
{
|
||||
if (source && (q = source->getImage())) //Intentional assignment.
|
||||
if (source && q.get())
|
||||
return MAX(height,q->mHeight+(2*margin));
|
||||
}
|
||||
|
||||
@@ -1331,15 +1329,14 @@ void WGuiImage::Render()
|
||||
{
|
||||
if (!source) return;
|
||||
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * q = source->getImage();
|
||||
JQuadPtr q = source->getImage();
|
||||
if (q)
|
||||
{
|
||||
float xS = 1, yS = 1;
|
||||
if (imgH != 0 && q->mHeight != 0) yS = imgH / q->mHeight;
|
||||
if (imgW != 0 && q->mWidth != 0) xS = imgW / q->mWidth;
|
||||
|
||||
renderer->RenderQuad(q, x + margin, y + margin, 0, xS, yS);
|
||||
JRenderer::GetInstance()->RenderQuad(q.get(), x + margin, y + margin, 0, xS, yS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1358,7 +1355,7 @@ void WGuiCardImage::Render()
|
||||
|
||||
if (!source || (c = source->getCard(mOffset.getPos())) == NULL)
|
||||
{ //No card, use card back.
|
||||
JQuad * q;
|
||||
JQuadPtr q;
|
||||
if (bThumb)
|
||||
{
|
||||
q = WResourceManager::Instance()->GetQuad("back_thumb");
|
||||
@@ -1371,13 +1368,13 @@ void WGuiCardImage::Render()
|
||||
q = WResourceManager::Instance()->GetQuad("back");
|
||||
float scale = p.actZ * 257.f / q->mHeight;
|
||||
q->SetColor(ARGB(255,255,255,255));
|
||||
renderer->RenderQuad(q, p.x, p.y, 0, scale, scale);
|
||||
renderer->RenderQuad(q.get(), p.x, p.y, 0, scale, scale);
|
||||
}
|
||||
else
|
||||
{ //Have card.
|
||||
if (bThumb)
|
||||
{ //Thumbnail.
|
||||
JQuad * q = NULL;
|
||||
JQuadPtr q;
|
||||
if (!options[Options::DISABLECARDS].number)
|
||||
{
|
||||
q = source->getThumb(mOffset.getPos());
|
||||
@@ -1386,14 +1383,19 @@ void WGuiCardImage::Render()
|
||||
q = source->getImage(mOffset.getPos());
|
||||
#endif
|
||||
}
|
||||
if (!q && (q = CardGui::AlternateThumbQuad(c)) == NULL) return; //TODO Some kind of error image.
|
||||
renderer->RenderQuad(q, p.x, p.y);
|
||||
if (!q.get())
|
||||
{
|
||||
q = CardGui::AlternateThumbQuad(c);
|
||||
if (q.get() == NULL)
|
||||
return; //TODO Some kind of error image.
|
||||
}
|
||||
renderer->RenderQuad(q.get(), p.x, p.y);
|
||||
}
|
||||
else
|
||||
{ //Normal card.
|
||||
JQuad * q = source->getImage(mOffset.getPos());
|
||||
JQuadPtr q = source->getImage(mOffset.getPos());
|
||||
|
||||
int mode = (!q || options[Options::DISABLECARDS].number) ? DrawMode::kText : DrawMode::kNormal;
|
||||
int mode = (!q.get() || options[Options::DISABLECARDS].number) ? DrawMode::kText : DrawMode::kNormal;
|
||||
CardGui::DrawCard(c, p, mode);
|
||||
}
|
||||
}
|
||||
@@ -1413,7 +1415,7 @@ WGuiCardDistort::~WGuiCardDistort()
|
||||
|
||||
void WGuiCardDistort::Render()
|
||||
{
|
||||
JQuad * q = NULL;
|
||||
JQuadPtr q;
|
||||
|
||||
if (distortSrc)
|
||||
{
|
||||
@@ -1455,7 +1457,7 @@ void WGuiCardDistort::Render()
|
||||
if (!q || options[Options::DISABLECARDS].number) q = CardGui::AlternateThumbQuad(c); //TODO alternateX should render to texture.
|
||||
}
|
||||
}
|
||||
if (!q) return;
|
||||
if (!q.get()) return;
|
||||
mesh->SetTexture(q->mTex);
|
||||
float x0, y0, w0, h0;
|
||||
q->GetTextureRect(&x0, &y0, &w0, &h0);
|
||||
@@ -1511,7 +1513,6 @@ WDistort::WDistort(float x1, float y1, float x2, float y2, float x3, float y3, f
|
||||
|
||||
void WGuiListRow::Render()
|
||||
{
|
||||
|
||||
int start = 0, nowPos = 0, vHeight = 0;
|
||||
int nbitems = (int) items.size();
|
||||
|
||||
|
||||
@@ -172,13 +172,6 @@ WResourceManager::WResourceManager()
|
||||
#ifdef DEBUG_CACHE
|
||||
menuCached = 0;
|
||||
#endif
|
||||
mTextureList.clear();
|
||||
mTextureList.reserve(0);
|
||||
mTextureMap.clear();
|
||||
|
||||
mQuadList.clear();
|
||||
mQuadList.reserve(0);
|
||||
mQuadMap.clear();
|
||||
|
||||
psiWCache.Resize(PSI_CACHE_SIZE, 20);
|
||||
sampleWCache.Resize(SAMPLES_CACHE_SIZE, MAX_CACHED_SAMPLES);
|
||||
@@ -192,16 +185,15 @@ WResourceManager::WResourceManager()
|
||||
WResourceManager::~WResourceManager()
|
||||
{
|
||||
LOG("==Destroying WResourceManager==");
|
||||
RemoveAll();
|
||||
RemoveWFonts();
|
||||
|
||||
LOG("==Successfully Destroyed WResourceManager==");
|
||||
}
|
||||
|
||||
JQuad * WResourceManager::RetrieveCard(MTGCard * card, int style, int submode)
|
||||
JQuadPtr WResourceManager::RetrieveCard(MTGCard * card, int style, int submode)
|
||||
{
|
||||
//Cards are never, ever resource managed, so just check cache.
|
||||
if (!card || options[Options::DISABLECARDS].number) return NULL;
|
||||
if (!card || options[Options::DISABLECARDS].number) return JQuadPtr();
|
||||
|
||||
submode = submode | TEXTURE_SUB_CARD;
|
||||
|
||||
@@ -224,14 +216,14 @@ JQuad * WResourceManager::RetrieveCard(MTGCard * card, int style, int submode)
|
||||
// In that case, we "unmiss" it after trying the [id].jpg, in order to give a chance to the [name.jpg]
|
||||
bool canUnmiss = false;
|
||||
{
|
||||
JQuad * tempQuad = RetrieveQuad(filename1, 0, 0, 0, 0, "", RETRIEVE_EXISTING, submode | TEXTURE_SUB_5551, id);
|
||||
JQuadPtr tempQuad = RetrieveQuad(filename1, 0, 0, 0, 0, "", RETRIEVE_EXISTING, submode | TEXTURE_SUB_5551, id);
|
||||
lastError = textureWCache.mError;
|
||||
if (!tempQuad && lastError != CACHE_ERROR_404)
|
||||
{
|
||||
canUnmiss = true;
|
||||
}
|
||||
}
|
||||
JQuad * jq = RetrieveQuad(filename1, 0, 0, 0, 0, "", style, submode | TEXTURE_SUB_5551, id);
|
||||
JQuadPtr jq = RetrieveQuad(filename1, 0, 0, 0, 0, "", style, submode | TEXTURE_SUB_5551, id);
|
||||
if (!jq)
|
||||
{
|
||||
if (canUnmiss)
|
||||
@@ -258,7 +250,7 @@ JQuad * WResourceManager::RetrieveCard(MTGCard * card, int style, int submode)
|
||||
return jq;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return JQuadPtr();
|
||||
}
|
||||
|
||||
int WResourceManager::AddQuadToManaged(const WManagedQuad& inQuad)
|
||||
@@ -288,11 +280,11 @@ int WResourceManager::CreateQuad(const string &quadName, const string &textureNa
|
||||
|
||||
if (jtex)
|
||||
{
|
||||
WTrackedQuad * tq = jtex->GetTrackedQuad(x, y, width, height, quadName);
|
||||
JQuadPtr quad = jtex->GetQuad(x, y, width, height, quadName);
|
||||
|
||||
if (tq)
|
||||
if (quad.get())
|
||||
{
|
||||
tq->deadbolt();
|
||||
jtex->deadbolt();
|
||||
|
||||
WManagedQuad mq;
|
||||
mq.resname = quadName;
|
||||
@@ -305,10 +297,9 @@ int WResourceManager::CreateQuad(const string &quadName, const string &textureNa
|
||||
return id;
|
||||
}
|
||||
|
||||
JQuad* WResourceManager::GetQuad(const string &quadName)
|
||||
JQuadPtr WResourceManager::GetQuad(const string &quadName)
|
||||
{
|
||||
|
||||
JQuad* result = NULL;
|
||||
JQuadPtr result;
|
||||
ManagedQuadMap::const_iterator found = mManagedQuads.find(quadName);
|
||||
if (found != mManagedQuads.end())
|
||||
{
|
||||
@@ -318,16 +309,15 @@ JQuad* WResourceManager::GetQuad(const string &quadName)
|
||||
return result;
|
||||
}
|
||||
|
||||
JQuad * WResourceManager::GetQuad(int id)
|
||||
JQuadPtr WResourceManager::GetQuad(int id)
|
||||
{
|
||||
|
||||
JQuad* result = NULL;
|
||||
JQuadPtr result;
|
||||
if (id < 0 || id >= (int) mManagedQuads.size()) return result;
|
||||
|
||||
IDLookupMap::const_iterator key = mIDLookupMap.find(id);
|
||||
if (key != mIDLookupMap.end())
|
||||
{
|
||||
WCachedTexture * jtex = mManagedQuads[key->second].texture;
|
||||
WCachedTexture* jtex = mManagedQuads[key->second].texture;
|
||||
if (jtex)
|
||||
{
|
||||
result = jtex->GetQuad(key->second);
|
||||
@@ -337,21 +327,19 @@ JQuad * WResourceManager::GetQuad(int id)
|
||||
return result;
|
||||
}
|
||||
|
||||
JQuad * WResourceManager::RetrieveTempQuad(const string& filename, int submode)
|
||||
JQuadPtr WResourceManager::RetrieveTempQuad(const string& filename, int submode)
|
||||
{
|
||||
return RetrieveQuad(filename, 0, 0, 0, 0, "temporary", RETRIEVE_NORMAL, submode);
|
||||
}
|
||||
|
||||
JQuad * WResourceManager::RetrieveQuad(const string& filename, float offX, float offY, float width, float height, string resname,
|
||||
JQuadPtr WResourceManager::RetrieveQuad(const string& filename, float offX, float offY, float width, float height, string resname,
|
||||
int style, int submode, int id)
|
||||
{
|
||||
JQuad * jq = NULL;
|
||||
|
||||
//Lookup managed resources, but only with a real resname.
|
||||
if (resname.size() && (style == RETRIEVE_MANAGE || style == RETRIEVE_RESOURCE))
|
||||
{
|
||||
jq = GetQuad(resname);
|
||||
if (jq || style == RETRIEVE_RESOURCE) return jq;
|
||||
JQuadPtr quad = GetQuad(resname);
|
||||
if (quad.get() || style == RETRIEVE_RESOURCE) return quad;
|
||||
}
|
||||
|
||||
//Aliases.
|
||||
@@ -374,14 +362,15 @@ JQuad * WResourceManager::RetrieveQuad(const string& filename, float offX, float
|
||||
lastError = textureWCache.mError;
|
||||
|
||||
//Somehow, jtex wasn't promoted.
|
||||
if (style == RETRIEVE_MANAGE && jtex && !jtex->isPermanent()) return NULL;
|
||||
if (style == RETRIEVE_MANAGE && jtex && !jtex->isPermanent()) return JQuadPtr();
|
||||
|
||||
//Make this quad, overwriting any similarly resname'd quads.
|
||||
if (jtex)
|
||||
{
|
||||
WTrackedQuad * tq = jtex->GetTrackedQuad(offX, offY, width, height, resname);
|
||||
JQuadPtr quad = jtex->GetQuad(offX, offY, width, height, resname);
|
||||
|
||||
if (!tq) return NULL;
|
||||
if (!quad.get())
|
||||
return quad;
|
||||
|
||||
if (style == RETRIEVE_MANAGE && resname != "")
|
||||
{
|
||||
@@ -392,16 +381,16 @@ JQuad * WResourceManager::RetrieveQuad(const string& filename, float offX, float
|
||||
}
|
||||
|
||||
if (style == RETRIEVE_LOCK)
|
||||
tq->lock();
|
||||
jtex->lock();
|
||||
else if (style == RETRIEVE_UNLOCK)
|
||||
tq->unlock();
|
||||
else if (style == RETRIEVE_MANAGE) tq->deadbolt();
|
||||
jtex->unlock();
|
||||
else if (style == RETRIEVE_MANAGE) jtex->deadbolt();
|
||||
|
||||
return tq->quad;
|
||||
return quad;
|
||||
}
|
||||
|
||||
//Texture doesn't exist, so no quad.
|
||||
return NULL;
|
||||
return JQuadPtr();
|
||||
}
|
||||
|
||||
void WResourceManager::Release(JTexture * tex)
|
||||
@@ -442,16 +431,7 @@ void WResourceManager::ClearUnlocked()
|
||||
sampleWCache.ClearUnlocked();
|
||||
psiWCache.ClearUnlocked();
|
||||
}
|
||||
bool WResourceManager::Cleanup()
|
||||
{
|
||||
int check = 0;
|
||||
|
||||
if (textureWCache.Cleanup()) check++;
|
||||
if (sampleWCache.Cleanup()) check++;
|
||||
if (psiWCache.Cleanup()) check++;
|
||||
|
||||
return (check > 0);
|
||||
}
|
||||
void WResourceManager::Release(JSample * sample)
|
||||
{
|
||||
if (!sample) return;
|
||||
@@ -985,74 +965,6 @@ void WResourceManager::Refresh()
|
||||
textureWCache.Refresh();
|
||||
psiWCache.Refresh();
|
||||
|
||||
map<string, WCachedTexture*>::iterator it;
|
||||
vector<JQuad*>::iterator q;
|
||||
|
||||
//Now do some juggling so that managed resources also reload.
|
||||
map<JTexture *, JTexture *> oldTextures;
|
||||
map<JTexture *, string> newNames;
|
||||
map<JTexture *, JTexture *>::iterator oldIt;
|
||||
vector<JTexture*>::iterator jtex;
|
||||
map<string, int>::iterator mapping;
|
||||
JTexture * newtex;
|
||||
JTexture * oldtex = NULL;
|
||||
|
||||
//Store old mappings.
|
||||
for (mapping = mTextureMap.begin(); mapping != mTextureMap.end(); mapping++)
|
||||
{
|
||||
if (oldTextures[mTextureList[mapping->second]] == NULL)
|
||||
{
|
||||
newtex = JRenderer::GetInstance()->LoadTexture(graphicsFile(mapping->first).c_str(), 0, TEXTURE_FORMAT);
|
||||
oldtex = mTextureList[mapping->second];
|
||||
if (!newtex)
|
||||
newNames[oldtex] = mapping->first;
|
||||
else
|
||||
{
|
||||
newNames[newtex] = mapping->first;
|
||||
}
|
||||
|
||||
oldTextures[oldtex] = newtex;
|
||||
}
|
||||
}
|
||||
|
||||
//Remap quads.
|
||||
for (q = mQuadList.begin(); q != mQuadList.end(); q++)
|
||||
{
|
||||
newtex = oldTextures[(*q)->mTex];
|
||||
if (newtex != NULL) (*q)->mTex = newtex;
|
||||
}
|
||||
|
||||
//Rebuild mTextureList and mapping.
|
||||
mTextureList.clear();
|
||||
mTextureMap.clear();
|
||||
int x = 0;
|
||||
for (oldIt = oldTextures.begin(); oldIt != oldTextures.end(); oldIt++)
|
||||
{
|
||||
|
||||
if (oldIt->second)
|
||||
newtex = oldIt->second;
|
||||
else
|
||||
newtex = oldIt->first;
|
||||
|
||||
mTextureList.push_back(newtex);
|
||||
mTextureMap[newNames[newtex]] = x;
|
||||
x++;
|
||||
}
|
||||
|
||||
//Rebuild mapping.
|
||||
for (mapping = mTextureMap.begin(); mapping != mTextureMap.end(); mapping++)
|
||||
{
|
||||
if (oldTextures[mTextureList[mapping->second]] == NULL) continue;
|
||||
}
|
||||
|
||||
//Delete unused textures.
|
||||
for (oldIt = oldTextures.begin(); oldIt != oldTextures.end(); oldIt++)
|
||||
{
|
||||
if (!oldIt->second || !oldIt->first) continue;
|
||||
|
||||
SAFE_DELETE(oldtex);
|
||||
}
|
||||
|
||||
//Check for card images in theme.
|
||||
bThemedCards = false;
|
||||
if (!options[Options::ACTIVE_THEME].isDefault())
|
||||
@@ -1199,7 +1111,7 @@ cacheItem* WCache<cacheItem, cacheActual>::Retrieve(int id, const string& filena
|
||||
//Unlink the managed resource from the cache.
|
||||
UnlinkCache(tc);
|
||||
|
||||
//Post it in managed WResourceManager::Instance()->
|
||||
//Post it in managed resources.
|
||||
managed[makeID(id, filename, submode)] = tc;
|
||||
tc->deadbolt();
|
||||
}
|
||||
@@ -1221,8 +1133,8 @@ cacheItem* WCache<cacheItem, cacheActual>::Retrieve(int id, const string& filena
|
||||
}
|
||||
|
||||
//Record managed failure. Cache failure is recorded in Get().
|
||||
if ((style == RETRIEVE_MANAGE || style == RETRIEVE_RESOURCE) && mError == CACHE_ERROR_404) managed[makeID(id, filename, submode)]
|
||||
= NULL;
|
||||
if ((style == RETRIEVE_MANAGE || style == RETRIEVE_RESOURCE) && mError == CACHE_ERROR_404)
|
||||
managed[makeID(id, filename, submode)] = NULL;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user