J :
* Fix PSP compilation errors * This does not magically make it work
This commit is contained in:
@@ -52,6 +52,17 @@ class DamageStack :public GuiLayer, public Interruptible{
|
|||||||
DamageStack(GameObserver* game);
|
DamageStack(GameObserver* game);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class StableDamageStack : public Interruptible {
|
||||||
|
protected:
|
||||||
|
vector<Damage*> damage;
|
||||||
|
|
||||||
|
public:
|
||||||
|
int resolve();
|
||||||
|
void Render();
|
||||||
|
void Add(Damage*);
|
||||||
|
virtual ostream& toString(ostream& out) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class GuiCombat : public GuiLayer
|
|||||||
void removeOne(DefenserDamaged* blocker, CombatStep);
|
void removeOne(DefenserDamaged* blocker, CombatStep);
|
||||||
void autoaffectDamage(AttackerDamaged* attacker, CombatStep);
|
void autoaffectDamage(AttackerDamaged* attacker, CombatStep);
|
||||||
void remaskBlkViews(AttackerDamaged* before, AttackerDamaged* after);
|
void remaskBlkViews(AttackerDamaged* before, AttackerDamaged* after);
|
||||||
|
void resolve();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GuiCombat(GameObserver* go);
|
GuiCombat(GameObserver* go);
|
||||||
|
|||||||
@@ -48,8 +48,6 @@ void CardGui::Render()
|
|||||||
renderer->RenderQuad(quad, actX, actY, actT, scale, scale);
|
renderer->RenderQuad(quad, actX, actY, actT, scale, scale);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int color = card->getColor();
|
|
||||||
//MTGCard * mtgcard = card->model;
|
|
||||||
const float scale = actZ;
|
const float scale = actZ;
|
||||||
|
|
||||||
renderer->RenderQuad(GameApp::CommonRes->GetQuad("shadow"), actX + (scale-1)*15, actY + (scale-1)*15, actT, 28*scale, 40*scale);
|
renderer->RenderQuad(GameApp::CommonRes->GetQuad("shadow"), actX + (scale-1)*15, actY + (scale-1)*15, actT, 28*scale, 40*scale);
|
||||||
@@ -95,11 +93,10 @@ void CardGui::Render()
|
|||||||
}
|
}
|
||||||
|
|
||||||
JQuad * CardGui::alternateThumbQuad(MTGCard * card){
|
JQuad * CardGui::alternateThumbQuad(MTGCard * card){
|
||||||
JRenderer * renderer = JRenderer::GetInstance();
|
|
||||||
JQuad * q;
|
JQuad * q;
|
||||||
switch(card->getColor())
|
switch(card->getColor())
|
||||||
{
|
{
|
||||||
case Constants::MTG_COLOR_GREEN: q = cache.getQuad("sets/green_thumb.jpg");break;
|
case Constants::MTG_COLOR_GREEN: q = cache.getQuad("sets/green_thumb.jpg");break;
|
||||||
case Constants::MTG_COLOR_BLUE : q = cache.getQuad("sets/blue_thumb.jpg");break;
|
case Constants::MTG_COLOR_BLUE : q = cache.getQuad("sets/blue_thumb.jpg");break;
|
||||||
case Constants::MTG_COLOR_RED : q = cache.getQuad("sets/red_thumb.jpg");break;
|
case Constants::MTG_COLOR_RED : q = cache.getQuad("sets/red_thumb.jpg");break;
|
||||||
case Constants::MTG_COLOR_BLACK: q = cache.getQuad("sets/black_thumb.jpg");break;
|
case Constants::MTG_COLOR_BLACK: q = cache.getQuad("sets/black_thumb.jpg");break;
|
||||||
|
|||||||
@@ -130,3 +130,33 @@ ostream& DamageStack::toString(ostream& out) const
|
|||||||
{
|
{
|
||||||
return (out << "DamageStack ::: currentState : " << currentState);
|
return (out << "DamageStack ::: currentState : " << currentState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int StableDamageStack::resolve()
|
||||||
|
{
|
||||||
|
for (vector<Damage*>::iterator it = damage.begin(); it != damage.end(); ++it)
|
||||||
|
if ((*it)->state == NOT_RESOLVED) (*it)->resolve();
|
||||||
|
for (vector<Damage*>::iterator it = damage.begin(); it != damage.end(); ++it)
|
||||||
|
if ((*it)->state == RESOLVED_OK) (*it)->target->afterDamage();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StableDamageStack::Render(){
|
||||||
|
int currenty = y;
|
||||||
|
for (vector<Damage*>::iterator it = damage.begin(); it != damage.end(); ++it)
|
||||||
|
{
|
||||||
|
if ((*it)->state == NOT_RESOLVED){
|
||||||
|
(*it)->x = x;
|
||||||
|
(*it)->y = currenty;
|
||||||
|
currenty += (*it)->mHeight;
|
||||||
|
(*it)->Render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StableDamageStack::Add(Damage* d) { damage.push_back(d); }
|
||||||
|
|
||||||
|
ostream& StableDamageStack::toString(ostream& out) const
|
||||||
|
{
|
||||||
|
return (out << "StableDamageStack ::: size : " << damage.size());
|
||||||
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ void DamagerDamaged::addDamage(int damage, DamagerDamaged* source){
|
|||||||
if (0 >= i->damage) damages.erase(i);
|
if (0 >= i->damage) damages.erase(i);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (0 < damage) damages.push_back(Damage(source->card, this->card,damage));
|
if (0 < damage) damages.push_back(Damage(source->card, card, damage));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -141,8 +141,8 @@ bool GuiCombat::CheckUserInput(u32 key)
|
|||||||
switch (step)
|
switch (step)
|
||||||
{
|
{
|
||||||
case ORDER : go->receiveEvent(NEW WEventCombatStepChange(FIRST_STRIKE)); break;
|
case ORDER : go->receiveEvent(NEW WEventCombatStepChange(FIRST_STRIKE)); break;
|
||||||
case FIRST_STRIKE : go->receiveEvent(NEW WEventCombatStepChange(DAMAGE)); break;
|
case FIRST_STRIKE : resolve(); go->receiveEvent(NEW WEventCombatStepChange(DAMAGE)); break;
|
||||||
case DAMAGE : cursor_pos = NONE; go->userRequestNextGamePhase(); break;
|
case DAMAGE : resolve(); cursor_pos = NONE; go->userRequestNextGamePhase(); break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PSP_CTRL_TRIANGLE:
|
case PSP_CTRL_TRIANGLE:
|
||||||
@@ -240,6 +240,20 @@ void GuiCombat::Render()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GuiCombat::resolve()
|
||||||
|
{
|
||||||
|
StableDamageStack stack;
|
||||||
|
for (inner_iterator it = attackers.begin(); it != attackers.end(); ++it)
|
||||||
|
{
|
||||||
|
for (vector<DefenserDamaged*>::iterator q = (*it)->blockers.begin(); q != (*it)->blockers.end(); ++q)
|
||||||
|
for (vector<Damage>::iterator d = (*q)->damages.begin(); d != (*q)->damages.end(); ++d)
|
||||||
|
stack.Add(&(*d));
|
||||||
|
for (vector<Damage>::iterator d = (*it)->damages.begin(); d != (*it)->damages.end(); ++d)
|
||||||
|
stack.Add(&(*d));
|
||||||
|
}
|
||||||
|
stack.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
int GuiCombat::receiveEventPlus(WEvent* e)
|
int GuiCombat::receiveEventPlus(WEvent* e)
|
||||||
{
|
{
|
||||||
if (WEventCreatureAttacker* event = dynamic_cast<WEventCreatureAttacker*>(e))
|
if (WEventCreatureAttacker* event = dynamic_cast<WEventCreatureAttacker*>(e))
|
||||||
@@ -318,7 +332,7 @@ int GuiCombat::receiveEventMinus(WEvent* e)
|
|||||||
case ORDER:
|
case ORDER:
|
||||||
{
|
{
|
||||||
if (ORDER == step) return 0; // Why do I take this twice ? >.>
|
if (ORDER == step) return 0; // Why do I take this twice ? >.>
|
||||||
if (go->currentPlayer->isAI()) { go->receiveEvent(NEW WEventCombatStepChange(FIRST_STRIKE)); return 1; }
|
if (!go->currentPlayer->displayStack()) { go->receiveEvent(NEW WEventCombatStepChange(FIRST_STRIKE)); return 1; }
|
||||||
for (inner_iterator it = attackers.begin(); it != attackers.end(); ++it)
|
for (inner_iterator it = attackers.begin(); it != attackers.end(); ++it)
|
||||||
{
|
{
|
||||||
(*it)->show = (1 < (*it)->blockers.size());
|
(*it)->show = (1 < (*it)->blockers.size());
|
||||||
@@ -351,9 +365,8 @@ int GuiCombat::receiveEventMinus(WEvent* e)
|
|||||||
go->receiveEvent(NEW WEventCombatStepChange(DAMAGE));
|
go->receiveEvent(NEW WEventCombatStepChange(DAMAGE));
|
||||||
return 1;
|
return 1;
|
||||||
case DAMAGE: DAMAGE:
|
case DAMAGE: DAMAGE:
|
||||||
if (go->currentPlayer->isAI()) { go->userRequestNextGamePhase(); return 1; }
|
if (!go->currentPlayer->displayStack()) { go->userRequestNextGamePhase(); return 1; }
|
||||||
step = event->step;
|
step = event->step;
|
||||||
cursor_pos = ATK;
|
|
||||||
for (inner_iterator attacker = attackers.begin(); attacker != attackers.end(); ++attacker)
|
for (inner_iterator attacker = attackers.begin(); attacker != attackers.end(); ++attacker)
|
||||||
autoaffectDamage(*attacker, step);
|
autoaffectDamage(*attacker, step);
|
||||||
for (inner_iterator it = attackers.begin(); it != attackers.end(); ++it)
|
for (inner_iterator it = attackers.begin(); it != attackers.end(); ++it)
|
||||||
@@ -366,9 +379,11 @@ int GuiCombat::receiveEventMinus(WEvent* e)
|
|||||||
active->zoom = 2.7;
|
active->zoom = 2.7;
|
||||||
activeAtk = static_cast<AttackerDamaged*>(active);
|
activeAtk = static_cast<AttackerDamaged*>(active);
|
||||||
remaskBlkViews(NULL, static_cast<AttackerDamaged*>(active));
|
remaskBlkViews(NULL, static_cast<AttackerDamaged*>(active));
|
||||||
|
cursor_pos = ATK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
resolve();
|
||||||
if (FIRST_STRIKE == step) go->receiveEvent(NEW WEventCombatStepChange(DAMAGE));
|
if (FIRST_STRIKE == step) go->receiveEvent(NEW WEventCombatStepChange(DAMAGE));
|
||||||
else go->userRequestNextGamePhase();
|
else go->userRequestNextGamePhase();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ void GuiFrame::Render()
|
|||||||
renderer->RenderQuad(gold1, -sized, 16);
|
renderer->RenderQuad(gold1, -sized, 16);
|
||||||
renderer->RenderQuad(gold1, -sized + 479, 16);
|
renderer->RenderQuad(gold1, -sized + 479, 16);
|
||||||
|
|
||||||
goldGlow->SetColor(ARGB(100+(rand()%50), 255, 255, 255));
|
goldGlow->SetColor(ARGB((100+(rand()%50)), 255, 255, 255));
|
||||||
renderer->RenderQuad(goldGlow, -sized, 9);
|
renderer->RenderQuad(goldGlow, -sized, 9);
|
||||||
renderer->RenderQuad(goldGlow, -sized + 480, 9);
|
renderer->RenderQuad(goldGlow, -sized + 480, 9);
|
||||||
|
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ int GuiMana::receiveEventMinus(WEvent* e)
|
|||||||
if ((event->color == (*it)->color) && (ManaIcon::ALIVE == (*it)->mode)) { (*it)->Wither(); return 1; }
|
if ((event->color == (*it)->color) && (ManaIcon::ALIVE == (*it)->mode)) { (*it)->Wither(); return 1; }
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (WEventEmptyManaPool *event = dynamic_cast<WEventEmptyManaPool*>(e))
|
else if (dynamic_cast<WEventEmptyManaPool*>(e))
|
||||||
{
|
{
|
||||||
for (vector<ManaIcon*>::iterator it = manas.begin(); it != manas.end(); ++it)
|
for (vector<ManaIcon*>::iterator it = manas.begin(); it != manas.end(); ++it)
|
||||||
(*it)->Drop(); //TODO: split according to which manapool was emptied...
|
(*it)->Drop(); //TODO: split according to which manapool was emptied...
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "../include/GameApp.h"
|
#include "../include/GameApp.h"
|
||||||
#include "../include/GuiPhaseBar.h"
|
#include "../include/GuiPhaseBar.h"
|
||||||
|
|
||||||
|
/*
|
||||||
static int colors[] =
|
static int colors[] =
|
||||||
{
|
{
|
||||||
ARGB(255, 255, 255, 255),
|
ARGB(255, 255, 255, 255),
|
||||||
@@ -17,6 +18,7 @@ static int colors[] =
|
|||||||
ARGB(255, 255, 255, 255),
|
ARGB(255, 255, 255, 255),
|
||||||
ARGB(255, 255, 255, 255)
|
ARGB(255, 255, 255, 255)
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
GuiPhaseBar::GuiPhaseBar() : phase(GameObserver::GetInstance()->phaseRing->getCurrentPhase()), angle(0.0f)
|
GuiPhaseBar::GuiPhaseBar() : phase(GameObserver::GetInstance()->phaseRing->getCurrentPhase()), angle(0.0f)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ int GuiPlay::receiveEventPlus(WEvent * e)
|
|||||||
battleField.removeAttacker(event->card);
|
battleField.removeAttacker(event->card);
|
||||||
Replace();
|
Replace();
|
||||||
}
|
}
|
||||||
else if (WEventCreatureBlocker* event = dynamic_cast<WEventCreatureBlocker*>(e))
|
else if (dynamic_cast<WEventCreatureBlocker*>(e))
|
||||||
{
|
{
|
||||||
Replace();
|
Replace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -296,7 +296,6 @@ void ShopItems::Render(){
|
|||||||
}
|
}
|
||||||
char credits[512];
|
char credits[512];
|
||||||
sprintf(credits,_("credits: %i").c_str(), playerdata->credits);
|
sprintf(credits,_("credits: %i").c_str(), playerdata->credits);
|
||||||
unsigned int len = 4 + mFont->GetStringWidth(credits);
|
|
||||||
mFont->SetColor(ARGB(200,0,0,0));
|
mFont->SetColor(ARGB(200,0,0,0));
|
||||||
mFont->DrawString(credits, 5, SCREEN_HEIGHT - 13);
|
mFont->DrawString(credits, 5, SCREEN_HEIGHT - 13);
|
||||||
mFont->SetColor(ARGB(255,255,255,255));
|
mFont->SetColor(ARGB(255,255,255,255));
|
||||||
|
|||||||
Reference in New Issue
Block a user