Erwan
- fix issue 57 - needs verification when one of the quads is not here /both - target is player/card - ability/spell
This commit is contained in:
@@ -58,6 +58,7 @@ class Interruptible: public PlayGuiObject, public Targetable{
|
|||||||
int typeAsTarget(){return TARGET_STACKACTION;};
|
int typeAsTarget(){return TARGET_STACKACTION;};
|
||||||
Interruptible(bool hasFocus = false):PlayGuiObject(40,x,y,hasFocus){state=NOT_RESOLVED;display=0;source=NULL;};
|
Interruptible(bool hasFocus = false):PlayGuiObject(40,x,y,hasFocus){state=NOT_RESOLVED;display=0;source=NULL;};
|
||||||
virtual const string getDisplayName() const {return "stack object";};
|
virtual const string getDisplayName() const {return "stack object";};
|
||||||
|
void Render(MTGCardInstance * source, JQuad * targetQuad, string alt1, string alt2, string action, bool bigQuad = false);
|
||||||
#if defined (WIN32) || defined (LINUX)
|
#if defined (WIN32) || defined (LINUX)
|
||||||
virtual void Dump();
|
virtual void Dump();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ struct CardGui : public PlayGuiObject {
|
|||||||
CardGui(MTGCardInstance* card, const Pos& ref);
|
CardGui(MTGCardInstance* card, const Pos& ref);
|
||||||
virtual void Render();
|
virtual void Render();
|
||||||
void RenderBig(const Pos&); //Tries to render the Big version of a card picture, backups to text version in case of failure
|
void RenderBig(const Pos&); //Tries to render the Big version of a card picture, backups to text version in case of failure
|
||||||
|
static void RenderBig(MTGCard * card, const Pos& pos);
|
||||||
void alternateRenderBig(const Pos&); //Renders Text Version of a card
|
void alternateRenderBig(const Pos&); //Renders Text Version of a card
|
||||||
virtual void Update(float dt);
|
virtual void Update(float dt);
|
||||||
static void alternateRender(MTGCard * card, const Pos& pos);
|
static void alternateRender(MTGCard * card, const Pos& pos);
|
||||||
|
|||||||
@@ -128,6 +128,8 @@ class MTGCardInstance: public MTGCard, public Damageable {
|
|||||||
void resetAllDamage();
|
void resetAllDamage();
|
||||||
JSample * getSample();
|
JSample * getSample();
|
||||||
|
|
||||||
|
JQuad * getIcon();
|
||||||
|
|
||||||
ostream& toString(ostream&) const;
|
ostream& toString(ostream&) const;
|
||||||
|
|
||||||
static MTGCardInstance AnyCard;
|
static MTGCardInstance AnyCard;
|
||||||
|
|||||||
@@ -50,26 +50,58 @@ ostream& NextGamePhase::toString(ostream& out) const
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Interruptible::Render(MTGCardInstance * source, JQuad * targetQuad, string alt1, string alt2, string action, bool bigQuad){
|
||||||
|
JLBFont * mFont = resources.GetJLBFont(Constants::MAIN_FONT);
|
||||||
|
mFont->SetBase(0);
|
||||||
|
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
||||||
|
mFont->DrawString(_(action).c_str(), x + 30 , y, JGETEXT_LEFT);
|
||||||
|
JRenderer * renderer = JRenderer::GetInstance();
|
||||||
|
JQuad * quad = resources.RetrieveCard(source,CACHE_THUMB);
|
||||||
|
if (quad){
|
||||||
|
quad->SetColor(ARGB(255,255,255,255));
|
||||||
|
float scale = mHeight / quad->mHeight;
|
||||||
|
renderer->RenderQuad(quad, x+10*scale , y+15*scale , 0,scale,scale);
|
||||||
|
}else if (alt1.size()){
|
||||||
|
mFont->DrawString(_(alt1).c_str(),x,y-15);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bigQuad){
|
||||||
|
GameObserver * game = GameObserver::GetInstance();
|
||||||
|
int showMode = game->mLayers->cs->bigMode;
|
||||||
|
Pos pos = Pos(CardGui::BigWidth / 2, CardGui::BigHeight / 2 - 10, 1.0, 0.0, 220);
|
||||||
|
switch(showMode){
|
||||||
|
case BIG_MODE_SHOW:
|
||||||
|
CardGui::RenderBig(source,pos);
|
||||||
|
break;
|
||||||
|
case BIG_MODE_TEXT:
|
||||||
|
CardGui::alternateRender(source, pos);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetQuad){
|
||||||
|
float backupX = targetQuad->mHotSpotX;
|
||||||
|
float backupY = targetQuad->mHotSpotY;
|
||||||
|
targetQuad->SetColor(ARGB(255,255,255,255));
|
||||||
|
targetQuad->SetHotSpot(targetQuad->mWidth / 2, targetQuad->mHeight / 2);
|
||||||
|
float scale = mHeight / targetQuad->mHeight;
|
||||||
|
renderer->RenderQuad(targetQuad, x + 150 , y+15*scale , 0,scale,scale);
|
||||||
|
targetQuad->SetHotSpot(backupX, backupY);
|
||||||
|
}else if (alt2.size()){
|
||||||
|
mFont->DrawString(_(alt2).c_str(),x+120,y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Ability */
|
/* Ability */
|
||||||
int StackAbility::resolve(){
|
int StackAbility::resolve(){
|
||||||
return (ability->resolve());
|
return (ability->resolve());
|
||||||
}
|
}
|
||||||
void StackAbility::Render(){
|
void StackAbility::Render(){
|
||||||
JLBFont * mFont = resources.GetJLBFont(Constants::MAIN_FONT);
|
string action = ability->getMenuText();
|
||||||
mFont->SetBase(0);
|
MTGCardInstance * source = ability->source;
|
||||||
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
string alt1 = source->getName();
|
||||||
char buffer[200];
|
|
||||||
sprintf(buffer, "%s", _(ability->getMenuText()).c_str());
|
|
||||||
mFont->DrawString(buffer, x + 30 , y, JGETEXT_LEFT);
|
|
||||||
JRenderer * renderer = JRenderer::GetInstance();
|
|
||||||
JQuad * quad = resources.RetrieveCard(ability->source,CACHE_THUMB);
|
|
||||||
if (quad){
|
|
||||||
quad->SetColor(ARGB(255,255,255,255));
|
|
||||||
float scale = 30 / quad->mHeight;
|
|
||||||
renderer->RenderQuad(quad, x , y , 0,scale,scale);
|
|
||||||
}else{
|
|
||||||
mFont->DrawString(_(ability->source->getName()).c_str(),x,y-15);
|
|
||||||
}
|
|
||||||
|
|
||||||
Targetable * _target = ability->target;
|
Targetable * _target = ability->target;
|
||||||
if (ability->tc){
|
if (ability->tc){
|
||||||
@@ -80,17 +112,17 @@ void StackAbility::Render(){
|
|||||||
if (_target!= ability->source && (_target->typeAsTarget() == TARGET_CARD || _target->typeAsTarget() == TARGET_PLAYER)){
|
if (_target!= ability->source && (_target->typeAsTarget() == TARGET_CARD || _target->typeAsTarget() == TARGET_PLAYER)){
|
||||||
target = (Damageable *) _target;
|
target = (Damageable *) _target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JQuad * quad = NULL;
|
||||||
|
string alt2 = "";
|
||||||
if (target){
|
if (target){
|
||||||
quad = target->getIcon();
|
quad = target->getIcon();
|
||||||
if (quad){
|
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE) {
|
||||||
quad->SetColor(ARGB(255,255,255,255));
|
alt2 = ((MTGCardInstance *)target)->name;
|
||||||
float scale = 30 / quad->mHeight;
|
|
||||||
renderer->RenderQuad(quad, x + 150 , y , 0,scale,scale);
|
|
||||||
}else{
|
|
||||||
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
|
|
||||||
mFont->DrawString(_(((MTGCardInstance *)target)->name).c_str(),x+120,y);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Interruptible::Render(source,quad,alt1,alt2,action);
|
||||||
}
|
}
|
||||||
StackAbility::StackAbility(int id,MTGAbility * _ability): Interruptible(id),ability(_ability){
|
StackAbility::StackAbility(int id,MTGAbility * _ability): Interruptible(id),ability(_ability){
|
||||||
type=ACTION_ABILITY;
|
type=ACTION_ABILITY;
|
||||||
@@ -202,63 +234,19 @@ MTGCardInstance * Spell::getNextCardTarget(MTGCardInstance * previous){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Spell::Render(){
|
void Spell::Render(){
|
||||||
JLBFont * mFont = resources.GetJLBFont(Constants::MAIN_FONT);
|
string action = source->getName();
|
||||||
mFont->SetBase(0);
|
string alt1 = "";
|
||||||
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
|
||||||
mFont->DrawString(_(source->name).c_str(), x + 30 , y, JGETEXT_LEFT);
|
|
||||||
JRenderer * renderer = JRenderer::GetInstance();
|
|
||||||
JQuad * quad = resources.RetrieveCard(source,CACHE_THUMB);
|
|
||||||
if (quad){
|
|
||||||
quad->SetColor(ARGB(255,255,255,255));
|
|
||||||
float scale = mHeight / quad->mHeight;
|
|
||||||
renderer->RenderQuad(quad, x+10*scale , y+15*scale , 0,scale,scale);
|
|
||||||
}else{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
// WALDORF - added these lines to render a big card as well as the small one
|
|
||||||
// in the interrupt window. A big card will be rendered no matter whether
|
|
||||||
// the user has been using big cards or not. However, I do take into which
|
|
||||||
// kind of big card they like.
|
|
||||||
// The card will be rendered in the same place as the GuiHand
|
|
||||||
// card. It doesn't attempt to hide the GUIHand card, it
|
|
||||||
// just overwrites it.
|
|
||||||
// I stole the render code from RenderBig() in CardGUI.cpp
|
|
||||||
|
|
||||||
quad = resources.RetrieveCard(source);
|
|
||||||
if (quad){
|
|
||||||
quad->SetColor(ARGB(220,255,255,255));
|
|
||||||
float scale = 257.f / quad->mHeight;
|
|
||||||
renderer->RenderQuad(quad, 10+100*scale , 20+145*scale , 0.0f,scale,scale);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MTGCard * mtgcard = source->model;
|
|
||||||
Pos pos = Pos(10 + 90, 20 + 130, 0.9f, 0.0, 255);
|
|
||||||
CardGui::alternateRender(mtgcard, pos);
|
|
||||||
|
|
||||||
quad = resources.RetrieveCard(source,CACHE_THUMB);
|
|
||||||
if (quad){
|
|
||||||
float scale = 250 / quad->mHeight;
|
|
||||||
quad->SetColor(ARGB(40,255,255,255));
|
|
||||||
renderer->RenderQuad(quad, 20+15*scale, 20+20*scale, 0.0f, scale, scale);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WALDORF - end
|
|
||||||
|
|
||||||
|
|
||||||
|
JQuad * quad = NULL;
|
||||||
|
string alt2 = "";
|
||||||
Damageable * target = getNextDamageableTarget();
|
Damageable * target = getNextDamageableTarget();
|
||||||
if (target){
|
if (target){
|
||||||
quad = target->getIcon();
|
quad = target->getIcon();
|
||||||
if (quad){
|
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE) {
|
||||||
quad->SetColor(ARGB(255,255,255,255));
|
alt2 = ((MTGCardInstance *)target)->name;
|
||||||
float scale = 30 / quad->mHeight;
|
|
||||||
renderer->RenderQuad(quad, x + 150 , y , 0,scale,scale);
|
|
||||||
}else{
|
|
||||||
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
|
|
||||||
mFont->DrawString(_(((MTGCardInstance *)target)->name).c_str(),x+120,y);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Interruptible::Render(source,quad,alt1,alt2,action, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
ostream& Spell::toString(ostream& out) const
|
ostream& Spell::toString(ostream& out) const
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ void CardGui::alternateRenderBig(const Pos& pos){
|
|||||||
alternateRender(card,pos);
|
alternateRender(card,pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardGui::RenderBig(const Pos& pos){
|
void CardGui::RenderBig(MTGCard* card, const Pos& pos){
|
||||||
JRenderer * renderer = JRenderer::GetInstance();
|
JRenderer * renderer = JRenderer::GetInstance();
|
||||||
|
|
||||||
JQuad * quad = resources.RetrieveCard(card);
|
JQuad * quad = resources.RetrieveCard(card);
|
||||||
@@ -327,6 +327,10 @@ void CardGui::RenderBig(const Pos& pos){
|
|||||||
alternateRender(card,pos);
|
alternateRender(card,pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CardGui::RenderBig(const Pos& pos){
|
||||||
|
RenderBig(card,pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MTGCardInstance* CardView::getCard() { return card; }
|
MTGCardInstance* CardView::getCard() { return card; }
|
||||||
|
|||||||
@@ -372,6 +372,10 @@ int MTGCardInstance::canBlock(MTGCardInstance * opponent){
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JQuad * MTGCardInstance::getIcon(){
|
||||||
|
return resources.RetrieveCard(this,CACHE_THUMB);
|
||||||
|
}
|
||||||
|
|
||||||
MTGCardInstance * MTGCardInstance::getNextPartner(){
|
MTGCardInstance * MTGCardInstance::getNextPartner(){
|
||||||
MTGInPlay * inplay = controller()->game->inPlay;
|
MTGInPlay * inplay = controller()->game->inPlay;
|
||||||
MTGCardInstance * bandingPartner = inplay->getNextAttacker(banding);
|
MTGCardInstance * bandingPartner = inplay->getNextAttacker(banding);
|
||||||
|
|||||||
Reference in New Issue
Block a user