Added HTR18, HT19, AFR and AFC sets, added/fixed old primitives, improved Android dowloader, fixed it lang file, fixed IMA rarities, fixed order index of some old sets, added all features from D&D such as Dungeon Cards and Dice (d20,d10, adn so on).
This commit is contained in:
@@ -39,6 +39,7 @@ GameStateDeckViewer::GameStateDeckViewer(GameApp* parent) :
|
||||
myDeck = NULL;
|
||||
mySideboard = NULL;
|
||||
myCommandZone = NULL;
|
||||
myDungeonZone = NULL;
|
||||
filterMenu = NULL;
|
||||
source = NULL;
|
||||
hudAlpha = 0;
|
||||
@@ -50,7 +51,7 @@ GameStateDeckViewer::GameStateDeckViewer(GameApp* parent) :
|
||||
statsPrevButton = NEW InteractiveButton(NULL, kPrevStatsButtonId, Fonts::MAIN_FONT, "Stats", SCREEN_WIDTH_F - 35, SCREEN_HEIGHT_F - 20, JGE_BTN_PREV);
|
||||
toggleDeckButton = NEW InteractiveButton(NULL, kToggleDeckActionId, Fonts::MAIN_FONT, "View Deck", 10, SCREEN_HEIGHT_F - 20, JGE_BTN_PRI);
|
||||
sellCardButton = NEW InteractiveButton(NULL, kSellCardActionId, Fonts::MAIN_FONT, "Sell Card", (SCREEN_WIDTH_F/ 2) - 125, SCREEN_HEIGHT_F - 20, JGE_BTN_SEC);
|
||||
sb_cmd_Button = NEW InteractiveButton(NULL, kSBActionId, Fonts::MAIN_FONT, "View SB/CMD", (SCREEN_WIDTH_F/ 2) - 35, SCREEN_HEIGHT_F - 20, JGE_BTN_SOUND);
|
||||
sb_cmd_dng_Button = NEW InteractiveButton(NULL, kSBActionId, Fonts::MAIN_FONT, "View SB", (SCREEN_WIDTH_F/ 2) - 35, SCREEN_HEIGHT_F - 20, JGE_BTN_SOUND);
|
||||
filterButton = NEW InteractiveButton(NULL, kFilterButtonId, Fonts::MAIN_FONT, "Filter", (SCREEN_WIDTH_F - 116), SCREEN_HEIGHT_F - 20, JGE_BTN_CTRL);
|
||||
//TODO: Check if that button is available:
|
||||
toggleViewButton = NEW InteractiveButton(NULL, kSwitchViewButton, Fonts::MAIN_FONT, "Grid", (SCREEN_WIDTH_F/ 2) + 50, SCREEN_HEIGHT_F - 20, JGE_BTN_MAX);
|
||||
@@ -65,7 +66,7 @@ GameStateDeckViewer::~GameStateDeckViewer()
|
||||
SAFE_DELETE(bgMusic);
|
||||
SAFE_DELETE(toggleDeckButton);
|
||||
SAFE_DELETE(sellCardButton);
|
||||
SAFE_DELETE(sb_cmd_Button);
|
||||
SAFE_DELETE(sb_cmd_dng_Button);
|
||||
SAFE_DELETE(statsPrevButton);
|
||||
SAFE_DELETE(filterButton);
|
||||
SAFE_DELETE(toggleViewButton);
|
||||
@@ -90,6 +91,11 @@ GameStateDeckViewer::~GameStateDeckViewer()
|
||||
SAFE_DELETE(myCommandZone->parent);
|
||||
SAFE_DELETE(myCommandZone);
|
||||
}
|
||||
if (myDungeonZone)
|
||||
{
|
||||
SAFE_DELETE(myDungeonZone->parent);
|
||||
SAFE_DELETE(myDungeonZone);
|
||||
}
|
||||
if (myCollection)
|
||||
{
|
||||
SAFE_DELETE(myCollection->parent);
|
||||
@@ -125,7 +131,7 @@ void GameStateDeckViewer::updateFilters()
|
||||
|
||||
void GameStateDeckViewer::toggleCollection()
|
||||
{
|
||||
if(mView->deck() == mySideboard || mView->deck() == myCommandZone)
|
||||
if(mView->deck() == mySideboard || mView->deck() == myCommandZone || mView->deck() == myDungeonZone)
|
||||
return;
|
||||
|
||||
if (mView->deck() == myCollection)
|
||||
@@ -142,7 +148,7 @@ void GameStateDeckViewer::toggleCollection()
|
||||
updateFilters();
|
||||
}
|
||||
|
||||
void GameStateDeckViewer::toggleSB_CMD()
|
||||
void GameStateDeckViewer::toggleSB_CMD_DNG()
|
||||
{
|
||||
if(mView->deck() == myDeck)
|
||||
return;
|
||||
@@ -150,17 +156,22 @@ void GameStateDeckViewer::toggleSB_CMD()
|
||||
if (mView->deck() == myCollection)
|
||||
{
|
||||
mView->SetDeck(mySideboard);
|
||||
sb_cmd_Button->setText("View CMD");
|
||||
sb_cmd_dng_Button->setText("View CMD");
|
||||
}
|
||||
else if (mView->deck() == mySideboard)
|
||||
{
|
||||
mView->SetDeck(myCommandZone);
|
||||
sb_cmd_Button->setText("View Coll.");
|
||||
sb_cmd_dng_Button->setText("View DNG");
|
||||
}
|
||||
else if (mView->deck() == myCommandZone)
|
||||
{
|
||||
mView->SetDeck(myDungeonZone);
|
||||
sb_cmd_dng_Button->setText("View Coll.");
|
||||
}
|
||||
else
|
||||
{
|
||||
mView->SetDeck(myCollection);
|
||||
sb_cmd_Button->setText("View SB/CMD");
|
||||
sb_cmd_dng_Button->setText("View SB");
|
||||
}
|
||||
//source->swapSrc();
|
||||
//updateFilters();
|
||||
@@ -210,6 +221,7 @@ void GameStateDeckViewer::Start()
|
||||
myDeck = NULL;
|
||||
mySideboard = NULL;
|
||||
myCommandZone = NULL;
|
||||
myDungeonZone = NULL;
|
||||
mStage = STAGE_WELCOME;
|
||||
|
||||
last_user_activity = NO_USER_ACTIVITY_HELP_DELAY + 1;
|
||||
@@ -282,6 +294,11 @@ void GameStateDeckViewer::End()
|
||||
SAFE_DELETE(myCommandZone->parent);
|
||||
SAFE_DELETE(myCommandZone);
|
||||
}
|
||||
if (myDungeonZone)
|
||||
{
|
||||
SAFE_DELETE(myDungeonZone->parent);
|
||||
SAFE_DELETE(myDungeonZone);
|
||||
}
|
||||
SAFE_DELETE(pricelist);
|
||||
SAFE_DELETE(playerdata);
|
||||
SAFE_DELETE(filterMenu);
|
||||
@@ -354,6 +371,28 @@ void GameStateDeckViewer::CMDaddRemove(MTGCard * card)
|
||||
mView->reloadIndexes();
|
||||
}
|
||||
|
||||
void GameStateDeckViewer::DNGaddRemove(MTGCard * card)
|
||||
{
|
||||
if (!card) return;
|
||||
if ((card->getRarity() != Constants::RARITY_T) || (card->getId() < 1)) return;
|
||||
if (mView->deck()->Remove(card, 1, (mView->deck() == myDungeonZone)))
|
||||
{
|
||||
if (mView->deck() == myCollection)
|
||||
{
|
||||
myDungeonZone->Add(card);
|
||||
myDungeonZone->Sort(WSrcCards::SORT_ALPHA);
|
||||
}
|
||||
else
|
||||
{
|
||||
myCollection->Add(card);
|
||||
}
|
||||
}
|
||||
myCollection->validate();
|
||||
myDungeonZone->validate();
|
||||
mStatsWrapper->needUpdate = true;
|
||||
mView->reloadIndexes();
|
||||
}
|
||||
|
||||
void GameStateDeckViewer::choiceAddRemove(MTGCard * card)
|
||||
{
|
||||
if (!card) return;
|
||||
@@ -366,19 +405,37 @@ void GameStateDeckViewer::choiceAddRemove(MTGCard * card)
|
||||
if (mView->deck() == myCollection)
|
||||
{
|
||||
sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards");
|
||||
sbMenu->Add(SBMENU_ADD_NORMAL, "Add to Deck");
|
||||
sbMenu->Add(SBMENU_ADD_SB, "Add to Sideboard");
|
||||
if(card->data->hasType("Legendary") && (card->data->hasType("Creature") || card->data->basicAbilities[Constants::CANBECOMMANDER]))
|
||||
sbMenu->Add(SBMENU_ADD_CMD, "Choose as Commander");
|
||||
if(!card->data->hasType("Dungeon")){
|
||||
sbMenu->Add(SBMENU_ADD_NORMAL, "Add to Deck");
|
||||
sbMenu->Add(SBMENU_ADD_SB, "Add to Sideboard");
|
||||
if(card->data->hasType("Legendary") && (card->data->hasType("Creature") || card->data->basicAbilities[Constants::CANBECOMMANDER]))
|
||||
sbMenu->Add(SBMENU_ADD_CMD, "Choose as Commander");
|
||||
} else
|
||||
sbMenu->Add(SBMENU_ADD_DNG, "Add to Dungeons");
|
||||
sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel");
|
||||
}
|
||||
else
|
||||
else if (mView->deck() == myCommandZone)
|
||||
{
|
||||
sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards");
|
||||
sbMenu->Add(SBMENU_ADD_CMD, "Remove as Commander");
|
||||
sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel");
|
||||
}
|
||||
else if (mView->deck() == mySideboard)
|
||||
{
|
||||
sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards");
|
||||
sbMenu->Add(SBMENU_ADD_SB, "Remove from Sideboard");
|
||||
sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel");
|
||||
}
|
||||
else if (mView->deck() == myDungeonZone)
|
||||
{
|
||||
sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards");
|
||||
sbMenu->Add(SBMENU_ADD_DNG, "Remove from Dungeons");
|
||||
sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel");
|
||||
}
|
||||
else if (mView->deck() == myDeck)
|
||||
{
|
||||
sbMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), SBMENU_CHOICE, this, Fonts::MAIN_FONT, menuXOffset, menuYOffset, "Add/Remove Cards");
|
||||
sbMenu->Add(SBMENU_ADD_NORMAL, "Remove Card");
|
||||
//sbMenu->Add(SBMENU_ADD_SB, "Add to Sideboard");
|
||||
if(card->data->hasType("Legendary") && (card->data->hasType("Creature") || card->data->basicAbilities[Constants::CANBECOMMANDER]))
|
||||
sbMenu->Add(SBMENU_ADD_CMD, "Choose as Commander");
|
||||
sbMenu->Add(SBMENU_ADD_CANCEL, "Cancel");
|
||||
}
|
||||
}
|
||||
@@ -425,6 +482,26 @@ void GameStateDeckViewer::insertCommandZone()
|
||||
}
|
||||
}
|
||||
|
||||
void GameStateDeckViewer::insertDungeonZone()
|
||||
{
|
||||
if(myDungeonZone->getCount())
|
||||
{
|
||||
vector<string> newDNG;
|
||||
for (int i = 0; i < myDungeonZone->Size(true); i++)
|
||||
{
|
||||
MTGCard * current = myDungeonZone->getCard(i, true);
|
||||
int howmanyinDeck = myDungeonZone->count(current);
|
||||
for (int i = 0; i < howmanyinDeck; i++)
|
||||
{
|
||||
stringstream cid;
|
||||
cid << current->getMTGId();
|
||||
newDNG.push_back(cid.str());
|
||||
}
|
||||
}
|
||||
myDeck->parent->replaceDNG(newDNG);
|
||||
}
|
||||
}
|
||||
|
||||
void GameStateDeckViewer::saveDeck()
|
||||
{
|
||||
//update the corresponding meta data object
|
||||
@@ -436,6 +513,8 @@ void GameStateDeckViewer::saveDeck()
|
||||
insertSideBoard();
|
||||
//insert commanders to mydeck parents
|
||||
insertCommandZone();
|
||||
//insert dungeons to mydeck parents
|
||||
insertDungeonZone();
|
||||
//save deck
|
||||
myDeck->save();
|
||||
playerdata->save();
|
||||
@@ -491,7 +570,7 @@ bool GameStateDeckViewer::userPressedButton()
|
||||
{
|
||||
return ((toggleDeckButton->ButtonPressed())
|
||||
|| (sellCardButton->ButtonPressed())
|
||||
|| (sb_cmd_Button->ButtonPressed())
|
||||
|| (sb_cmd_dng_Button->ButtonPressed())
|
||||
|| (statsPrevButton->ButtonPressed())
|
||||
|| (filterButton->ButtonPressed())
|
||||
|| (toggleViewButton->ButtonPressed())
|
||||
@@ -506,7 +585,7 @@ void GameStateDeckViewer::setButtonState(bool state)
|
||||
{
|
||||
toggleDeckButton->setIsSelectionValid(state);
|
||||
sellCardButton->setIsSelectionValid(state);
|
||||
sb_cmd_Button->setIsSelectionValid(state);
|
||||
sb_cmd_dng_Button->setIsSelectionValid(state);
|
||||
statsPrevButton->setIsSelectionValid(state);
|
||||
filterButton->setIsSelectionValid(state);
|
||||
toggleViewButton->setIsSelectionValid(state);
|
||||
@@ -518,12 +597,12 @@ void GameStateDeckViewer::setButtonState(bool state)
|
||||
|
||||
void GameStateDeckViewer::RenderButtons()
|
||||
{
|
||||
if(mView->deck() != mySideboard && mView->deck() != myCommandZone)
|
||||
if(mView->deck() != mySideboard && mView->deck() != myCommandZone && mView->deck() != myDungeonZone)
|
||||
toggleDeckButton->Render();
|
||||
sellCardButton->Render();
|
||||
if(mView->deck() != myDeck)
|
||||
sb_cmd_Button->Render();
|
||||
if(mView->deck() != mySideboard && mView->deck() != myCommandZone)
|
||||
sb_cmd_dng_Button->Render();
|
||||
if(mView->deck() != mySideboard && mView->deck() != myCommandZone && mView->deck() != myDungeonZone)
|
||||
filterButton->Render();
|
||||
statsPrevButton->Render();
|
||||
toggleViewButton->Render();
|
||||
@@ -631,7 +710,7 @@ void GameStateDeckViewer::Update(float dt)
|
||||
if (last_user_activity > 0.2)
|
||||
{
|
||||
last_user_activity = 0;
|
||||
toggleSB_CMD();
|
||||
toggleSB_CMD_DNG();
|
||||
}
|
||||
break;
|
||||
case JGE_BTN_PRI:
|
||||
@@ -685,9 +764,9 @@ void GameStateDeckViewer::Update(float dt)
|
||||
break;
|
||||
|
||||
case JGE_BTN_MENU:
|
||||
if(mView->deck() == mySideboard || mView->deck() == myCommandZone)
|
||||
if(mView->deck() == mySideboard || mView->deck() == myCommandZone || mView->deck() == myDungeonZone)
|
||||
{
|
||||
toggleSB_CMD();
|
||||
toggleSB_CMD_DNG();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -696,7 +775,7 @@ void GameStateDeckViewer::Update(float dt)
|
||||
}
|
||||
break;
|
||||
case JGE_BTN_CTRL:
|
||||
if (mView->deck() == mySideboard || mView->deck() == myCommandZone)
|
||||
if (mView->deck() == mySideboard || mView->deck() == myCommandZone || mView->deck() == myDungeonZone)
|
||||
break;//SB is for viewing add or remove only
|
||||
else if(!mView->ButtonPressed(JGE_BTN_CTRL))
|
||||
{
|
||||
@@ -985,7 +1064,8 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
int value = myDeck->getCount(WSrcDeck::UNFILTERED_COPIES);
|
||||
int sb_value = mySideboard->getCount(WSrcDeck::UNFILTERED_COPIES);
|
||||
int cmd_value = myCommandZone->getCount(WSrcDeck::UNFILTERED_COPIES);
|
||||
sprintf(buffer, _("Your Deck: %i cards.\nSideboard: %i cards.\nCommanders: %i cards").c_str(), value, sb_value,cmd_value);
|
||||
int dng_value = myDungeonZone->getCount(WSrcDeck::UNFILTERED_COPIES);
|
||||
sprintf(buffer, _("Your Deck: %i cards.\nSideboard: %i cards.\nCommanders: %i cards.\nDungeons: %i cards").c_str(), value, sb_value,cmd_value,dng_value);
|
||||
font->DrawString(buffer, SCREEN_WIDTH - 200 + rightTransition, SCREEN_HEIGHT / 2 + 15);
|
||||
|
||||
for (int j = 0; j < Constants::NB_Colors; j++)
|
||||
@@ -1625,6 +1705,12 @@ int GameStateDeckViewer::loadDeck(int deckid)
|
||||
SAFE_DELETE(myCommandZone->parent);
|
||||
SAFE_DELETE(myCommandZone);
|
||||
}
|
||||
//dng
|
||||
if (myDungeonZone)
|
||||
{
|
||||
SAFE_DELETE(myDungeonZone->parent);
|
||||
SAFE_DELETE(myDungeonZone);
|
||||
}
|
||||
//temp deck for sb?
|
||||
MTGDeck * sbtempDeck = NEW MTGDeck(MTGCollection());
|
||||
if(myDeck->parent)
|
||||
@@ -1707,10 +1793,52 @@ int GameStateDeckViewer::loadDeck(int deckid)
|
||||
myCollection->validate();
|
||||
}
|
||||
//endcmd
|
||||
//temp deck for dng?
|
||||
MTGDeck * dngtempDeck = NEW MTGDeck(MTGCollection());
|
||||
if(myDeck->parent)
|
||||
{//add cards from commanders lists
|
||||
if(myDeck->parent->DungeonZone.size())
|
||||
{
|
||||
for(unsigned int j = 0; j < myDeck->parent->DungeonZone.size(); j++)
|
||||
{
|
||||
string cardID = myDeck->parent->DungeonZone[j];
|
||||
dngtempDeck->add(atoi(cardID.c_str()));
|
||||
}
|
||||
}
|
||||
}
|
||||
myDungeonZone = NEW DeckDataWrapper(dngtempDeck);
|
||||
for (int i = 0; i < myDungeonZone->Size(true); i++)
|
||||
{
|
||||
MTGCard * current = myDungeonZone->getCard(i, true);
|
||||
int howmanyinDeck = myDungeonZone->count(current);
|
||||
for (int i = myCollection->count(current); i < howmanyinDeck; i++)
|
||||
{
|
||||
cPure = false;
|
||||
if (cheatmode)
|
||||
{ //Are we cheating?
|
||||
playerdata->collection->add(current); //Yup, add it to collection permanently.
|
||||
myCollection->Add(current);
|
||||
}
|
||||
else
|
||||
{
|
||||
myDungeonZone->Remove(current,howmanyinDeck-i); //Nope. Remove it from sb.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
myCollection->Remove(current, myDungeonZone->count(current));
|
||||
}
|
||||
if (!cPure)
|
||||
{
|
||||
myDungeonZone->validate();
|
||||
myCollection->validate();
|
||||
}
|
||||
//enddng
|
||||
|
||||
myDeck->Sort(WSrcCards::SORT_ALPHA);
|
||||
mySideboard->Sort(WSrcCards::SORT_ALPHA);
|
||||
myCommandZone->Sort(WSrcCards::SORT_ALPHA);
|
||||
myDungeonZone->Sort(WSrcCards::SORT_ALPHA);
|
||||
SAFE_DELETE(filterMenu);
|
||||
rebuildFilters();
|
||||
mView->reloadIndexes();
|
||||
@@ -1877,6 +2005,14 @@ void GameStateDeckViewer::ButtonPressed(int controllerId, int controlId)
|
||||
sbMenu->Close();
|
||||
break;
|
||||
}
|
||||
case SBMENU_ADD_DNG:
|
||||
{
|
||||
MTGCard * card = mView->getActiveCard();
|
||||
if (card)
|
||||
DNGaddRemove(card);
|
||||
sbMenu->Close();
|
||||
break;
|
||||
}
|
||||
case SBMENU_ADD_CANCEL:
|
||||
sbMenu->Close();
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user