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);
|
||||
};
|
||||
|
||||
class StableDamageStack : public Interruptible {
|
||||
protected:
|
||||
vector<Damage*> damage;
|
||||
|
||||
public:
|
||||
int resolve();
|
||||
void Render();
|
||||
void Add(Damage*);
|
||||
virtual ostream& toString(ostream& out) const;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,6 +23,7 @@ class GuiCombat : public GuiLayer
|
||||
void removeOne(DefenserDamaged* blocker, CombatStep);
|
||||
void autoaffectDamage(AttackerDamaged* attacker, CombatStep);
|
||||
void remaskBlkViews(AttackerDamaged* before, AttackerDamaged* after);
|
||||
void resolve();
|
||||
|
||||
public:
|
||||
GuiCombat(GameObserver* go);
|
||||
|
||||
@@ -48,8 +48,6 @@ void CardGui::Render()
|
||||
renderer->RenderQuad(quad, actX, actY, actT, scale, scale);
|
||||
}
|
||||
else {
|
||||
int color = card->getColor();
|
||||
//MTGCard * mtgcard = card->model;
|
||||
const float scale = actZ;
|
||||
|
||||
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){
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * q;
|
||||
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_RED : q = cache.getQuad("sets/red_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);
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -141,8 +141,8 @@ bool GuiCombat::CheckUserInput(u32 key)
|
||||
switch (step)
|
||||
{
|
||||
case ORDER : go->receiveEvent(NEW WEventCombatStepChange(FIRST_STRIKE)); break;
|
||||
case FIRST_STRIKE : go->receiveEvent(NEW WEventCombatStepChange(DAMAGE)); break;
|
||||
case DAMAGE : cursor_pos = NONE; go->userRequestNextGamePhase(); break;
|
||||
case FIRST_STRIKE : resolve(); go->receiveEvent(NEW WEventCombatStepChange(DAMAGE)); break;
|
||||
case DAMAGE : resolve(); cursor_pos = NONE; go->userRequestNextGamePhase(); break;
|
||||
}
|
||||
break;
|
||||
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)
|
||||
{
|
||||
if (WEventCreatureAttacker* event = dynamic_cast<WEventCreatureAttacker*>(e))
|
||||
@@ -318,7 +332,7 @@ int GuiCombat::receiveEventMinus(WEvent* e)
|
||||
case ORDER:
|
||||
{
|
||||
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)
|
||||
{
|
||||
(*it)->show = (1 < (*it)->blockers.size());
|
||||
@@ -351,9 +365,8 @@ int GuiCombat::receiveEventMinus(WEvent* e)
|
||||
go->receiveEvent(NEW WEventCombatStepChange(DAMAGE));
|
||||
return 1;
|
||||
case DAMAGE: DAMAGE:
|
||||
if (go->currentPlayer->isAI()) { go->userRequestNextGamePhase(); return 1; }
|
||||
if (!go->currentPlayer->displayStack()) { go->userRequestNextGamePhase(); return 1; }
|
||||
step = event->step;
|
||||
cursor_pos = ATK;
|
||||
for (inner_iterator attacker = attackers.begin(); attacker != attackers.end(); ++attacker)
|
||||
autoaffectDamage(*attacker, step);
|
||||
for (inner_iterator it = attackers.begin(); it != attackers.end(); ++it)
|
||||
@@ -366,9 +379,11 @@ int GuiCombat::receiveEventMinus(WEvent* e)
|
||||
active->zoom = 2.7;
|
||||
activeAtk = static_cast<AttackerDamaged*>(active);
|
||||
remaskBlkViews(NULL, static_cast<AttackerDamaged*>(active));
|
||||
cursor_pos = ATK;
|
||||
}
|
||||
else
|
||||
{
|
||||
resolve();
|
||||
if (FIRST_STRIKE == step) go->receiveEvent(NEW WEventCombatStepChange(DAMAGE));
|
||||
else go->userRequestNextGamePhase();
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ void GuiFrame::Render()
|
||||
renderer->RenderQuad(gold1, -sized, 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 + 480, 9);
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ int GuiMana::receiveEventMinus(WEvent* e)
|
||||
if ((event->color == (*it)->color) && (ManaIcon::ALIVE == (*it)->mode)) { (*it)->Wither(); 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)
|
||||
(*it)->Drop(); //TODO: split according to which manapool was emptied...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "../include/GameApp.h"
|
||||
#include "../include/GuiPhaseBar.h"
|
||||
|
||||
/*
|
||||
static int colors[] =
|
||||
{
|
||||
ARGB(255, 255, 255, 255),
|
||||
@@ -17,6 +18,7 @@ static int colors[] =
|
||||
ARGB(255, 255, 255, 255),
|
||||
ARGB(255, 255, 255, 255)
|
||||
};
|
||||
*/
|
||||
|
||||
GuiPhaseBar::GuiPhaseBar() : phase(GameObserver::GetInstance()->phaseRing->getCurrentPhase()), angle(0.0f)
|
||||
{
|
||||
|
||||
@@ -193,7 +193,7 @@ int GuiPlay::receiveEventPlus(WEvent * e)
|
||||
battleField.removeAttacker(event->card);
|
||||
Replace();
|
||||
}
|
||||
else if (WEventCreatureBlocker* event = dynamic_cast<WEventCreatureBlocker*>(e))
|
||||
else if (dynamic_cast<WEventCreatureBlocker*>(e))
|
||||
{
|
||||
Replace();
|
||||
}
|
||||
|
||||
@@ -296,7 +296,6 @@ void ShopItems::Render(){
|
||||
}
|
||||
char credits[512];
|
||||
sprintf(credits,_("credits: %i").c_str(), playerdata->credits);
|
||||
unsigned int len = 4 + mFont->GetStringWidth(credits);
|
||||
mFont->SetColor(ARGB(200,0,0,0));
|
||||
mFont->DrawString(credits, 5, SCREEN_HEIGHT - 13);
|
||||
mFont->SetColor(ARGB(255,255,255,255));
|
||||
|
||||
Reference in New Issue
Block a user