From 8b008a4bda9265aebe1012374ac2c7a60dbb0428 Mon Sep 17 00:00:00 2001 From: "wagic.the.homebrew@gmail.com" Date: Thu, 30 Apr 2009 12:10:09 +0000 Subject: [PATCH] Erwan - boosters in shop 100 cards -> 80 cards - 2 new cards in SHM - Added Ram checking methods for the PSP --- JGE/lib/win/jge.lib | Bin 1725998 -> 1726880 bytes projects/mtg/bin/Res/sets/SHM/_cards.dat | 24 ++++++ projects/mtg/bin/Res/sets/SHM/todo.dat | 24 +----- projects/mtg/include/GameStateShop.h | 2 +- projects/mtg/include/ShopItem.h | 4 +- projects/mtg/include/utils.h | 20 +++++ projects/mtg/src/GameApp.cpp | 16 ++++ projects/mtg/src/GameStateShop.cpp | 2 +- projects/mtg/src/ShopItem.cpp | 28 +++---- projects/mtg/src/utils.cpp | 90 +++++++++++++++++++++++ 10 files changed, 168 insertions(+), 42 deletions(-) diff --git a/JGE/lib/win/jge.lib b/JGE/lib/win/jge.lib index 500f8ab70ae5d895859bb992e4df7a7cae33ff8b..74492c662e520584d9e53114d3d627b7cebd611d 100644 GIT binary patch delta 21700 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 diff --git a/projects/mtg/bin/Res/sets/SHM/_cards.dat b/projects/mtg/bin/Res/sets/SHM/_cards.dat index 72c3a640f..12389aa2a 100644 --- a/projects/mtg/bin/Res/sets/SHM/_cards.dat +++ b/projects/mtg/bin/Res/sets/SHM/_cards.dat @@ -23,6 +23,18 @@ subtype=Elemental Warrior toughness=3 [/card] [card] +text=Ashenmoor Gouger can't block. +abilities=cantblock +id=153981 +name=Ashenmoor Gouger +rarity=U +type=Creature +mana={BR}{BR}{BR} +power=4 +subtype=Elemental Warrior +toughness=4 +[/card] +[card] text=First strike Ballynock Cohort gets +1/+1 as long as you control another white creature. abilities=first strike auto=aslongas(creature[white]|myinplay) 1/1 other @@ -354,6 +366,18 @@ subtype=Scarecrow toughness=1 [/card] [card] +text=Inkfathom Infiltrator can't block and is unblockable. +abilities=unblockable,cantblock +id=154401 +name=Inkfathom Infiltrator +rarity=U +type=Creature +mana={UB}{UB} +power=2 +subtype=Merfolk Rogue +toughness=1 +[/card] +[card] text={T}: Add {U} to your mana pool. auto={T}:Add{U} id=158237 diff --git a/projects/mtg/bin/Res/sets/SHM/todo.dat b/projects/mtg/bin/Res/sets/SHM/todo.dat index 2514ba310..b598a5da0 100644 --- a/projects/mtg/bin/Res/sets/SHM/todo.dat +++ b/projects/mtg/bin/Res/sets/SHM/todo.dat @@ -35,17 +35,7 @@ toughness=1 [/card] -[card] -text=Ashenmoor Gouger can't block. -id=153981 -name=Ashenmoor Gouger -rarity=U -type=Creature -mana={BR}{BR}{BR} -power=4 -subtype=Elemental Warrior -toughness=4 -[/card] + [card] text=Other black creatures you control get +1/+1. Other red creatures you control get +1/+1. Whenever Ashenmoor Liege becomes the target of a spell or ability an opponent controls, that player loses 4 life. id=146065 @@ -804,17 +794,7 @@ power=3 subtype=Giant Warrior toughness=3 [/card] -[card] -text=Inkfathom Infiltrator can't block and is unblockable. -id=154401 -name=Inkfathom Infiltrator -rarity=U -type=Creature -mana={UB}{UB} -power=2 -subtype=Merfolk Rogue -toughness=1 -[/card] + [card] text=Fear {2}{U}{B}: Each unblocked creature becomes 4/1 until end of turn. id=157879 diff --git a/projects/mtg/include/GameStateShop.h b/projects/mtg/include/GameStateShop.h index 5c97d12d6..d3aed8b34 100644 --- a/projects/mtg/include/GameStateShop.h +++ b/projects/mtg/include/GameStateShop.h @@ -12,7 +12,7 @@ #define STAGE_SHOP_MENU 3 #define STAGE_SHOP_SHOP 4 -#define SHOP_BOOSTERS 3 + class GameStateShop: public GameState, public JGuiListener { diff --git a/projects/mtg/include/ShopItem.h b/projects/mtg/include/ShopItem.h index a3c2bb180..47b2028c8 100644 --- a/projects/mtg/include/ShopItem.h +++ b/projects/mtg/include/ShopItem.h @@ -12,6 +12,8 @@ #include using std::string; +#define SHOP_BOOSTERS 3 + class ShopItem:public JGuiObject{ private: bool mHasFocus; @@ -51,7 +53,7 @@ class ShopItems:public JGuiController,public JGuiListener{ MTGAllCards * collection; SimpleMenu * dialog; int showPriceDialog; - int setIds[2];; + int setIds[SHOP_BOOSTERS]; MTGCardInstance * displayCards[100]; CardDisplay * display; void safeDeleteDisplay(); diff --git a/projects/mtg/include/utils.h b/projects/mtg/include/utils.h index fe593472c..e875ee12c 100644 --- a/projects/mtg/include/utils.h +++ b/projects/mtg/include/utils.h @@ -14,6 +14,9 @@ #include #include #include + +#include +#include #endif @@ -38,5 +41,22 @@ int fileExists(const char * filename); void dumpStack(); #endif + +/* RAM simple check functions header */ + +// *** DEFINES *** + +#if defined (WIN32) || defined (LINUX) +#define RAM_BLOCK (100 * 1024 * 1024) +#else +#define RAM_BLOCK (1024 * 1024) +#endif + +// *** FUNCTIONS DECLARATIONS *** + +u32 ramAvailableLineareMax (void); +u32 ramAvailable (void); + + #endif diff --git a/projects/mtg/src/GameApp.cpp b/projects/mtg/src/GameApp.cpp index e0b591878..1c4af85f4 100644 --- a/projects/mtg/src/GameApp.cpp +++ b/projects/mtg/src/GameApp.cpp @@ -143,6 +143,10 @@ void GameApp::Create() mCurrentState = NULL; mNextState = mGameStates[GAME_STATE_MENU]; + + char buf[512]; + sprintf(buf, "size of MTGCardInstance : %i\n" , sizeof(MTGCardInstance)); + OutputDebugString(buf); } @@ -230,6 +234,18 @@ void GameApp::Update() mCurrentState->End(); mCurrentState = mNextState; + + +#if defined (WIN32) || defined (LINUX) +#else + /* + int maxLinear = ramAvailableLineareMax(); + int ram = ramAvailable(); + char buf[512]; + sprintf(buf, "Ram : linear max: %i - total : %i\n",maxLinear, ram); + fprintf(stderr,buf); + */ +#endif mCurrentState->Start(); mNextState = NULL; diff --git a/projects/mtg/src/GameStateShop.cpp b/projects/mtg/src/GameStateShop.cpp index 08e4ae727..dfed66980 100644 --- a/projects/mtg/src/GameStateShop.cpp +++ b/projects/mtg/src/GameStateShop.cpp @@ -43,7 +43,7 @@ void GameStateShop::Start() int sets[500]; int nbsets = 0; for (int i = 0; i < MtgSets::SetsList->nb_items; i++){ - if (mParent->collection->countBySet(i) > 100){ //Only sets with more than 100 cards can get boosters and starters + if (mParent->collection->countBySet(i) > 80){ //Only sets with more than 80 cards can get boosters and starters sets[nbsets] = i; nbsets++; } diff --git a/projects/mtg/src/ShopItem.cpp b/projects/mtg/src/ShopItem.cpp index 9e9fecc50..d377a0b0c 100644 --- a/projects/mtg/src/ShopItem.cpp +++ b/projects/mtg/src/ShopItem.cpp @@ -238,23 +238,17 @@ void ShopItems::ButtonPressed(int controllerId, int controlId){ safeDeleteDisplay(); display = NEW CardDisplay(12,NULL, SCREEN_WIDTH - 200, SCREEN_HEIGHT/2,this,NULL,5); int curNbcards = playerdata->collection->totalCards(); - //if (showPriceDialog == 0){ - // //Starter Deck - // playerdata->collection->addRandomCards(3,setId,Constants::RARITY_R,NULL); - // playerdata->collection->addRandomCards(9, setId,Constants::RARITY_U,NULL); - // playerdata->collection->addRandomCards(48, setId,Constants::RARITY_C,NULL); - //}else{ - //Booster - playerdata->collection->addRandomCards(1, setIds[showPriceDialog],Constants::RARITY_R); - playerdata->collection->addRandomCards(3, setIds[showPriceDialog],Constants::RARITY_U); - playerdata->collection->addRandomCards(11, setIds[showPriceDialog],Constants::RARITY_C); - // } - int newNbCards = playerdata->collection->totalCards();; - for (int i = curNbcards; i < newNbCards ; i++){ - MTGCardInstance * card = NEW MTGCardInstance(playerdata->collection->_(i), NULL); - displayCards[i-curNbcards] = card; - display->AddCard(card); - } + + playerdata->collection->addRandomCards(1, setIds[showPriceDialog],Constants::RARITY_R); + playerdata->collection->addRandomCards(3, setIds[showPriceDialog],Constants::RARITY_U); + playerdata->collection->addRandomCards(11, setIds[showPriceDialog],Constants::RARITY_C); + + int newNbCards = playerdata->collection->totalCards();; + for (int i = curNbcards; i < newNbCards ; i++){ + MTGCardInstance * card = NEW MTGCardInstance(playerdata->collection->_(i), NULL); + displayCards[i-curNbcards] = card; + display->AddCard(card); + } } //Remove(showPriceDialog); showPriceDialog = -1; diff --git a/projects/mtg/src/utils.cpp b/projects/mtg/src/utils.cpp index bdb047750..4a35bfd43 100644 --- a/projects/mtg/src/utils.cpp +++ b/projects/mtg/src/utils.cpp @@ -59,3 +59,93 @@ void dumpStack() free(tab); } #endif + + +/* RAM simple check functions source */ + + +// *** FUNCTIONS *** + +u32 ramAvailableLineareMax (void) +{ + u32 size, sizeblock; + u8 *ram; + + + // Init variables + size = 0; + sizeblock = RAM_BLOCK; + + // Check loop + while (sizeblock) + { + // Increment size + size += sizeblock; + + // Allocate ram + ram = (u8 *) malloc(size); + + // Check allocate + if (!(ram)) + { + // Restore old size + size -= sizeblock; + + // Size block / 2 + sizeblock >>= 1; + } + else + free(ram); + } + + return size; +} + +u32 ramAvailable (void) +{ + u8 **ram, **temp; + u32 size, count, x; + + + // Init variables + ram = NULL; + size = 0; + count = 0; + + // Check loop + for (;;) + { + // Check size entries + if (!(count % 10)) + { + // Allocate more entries if needed + temp = (u8**) realloc(ram,sizeof(u8 *) * (count + 10)); + if (!(temp)) break; + + // Update entries and size (size contains also size of entries) + ram = temp; + size += (sizeof(u8 *) * 10); + } + + // Find max lineare size available + x = ramAvailableLineareMax(); + if (!(x)) break; + + // Allocate ram + ram[count] = (u8 *) malloc(x); + if (!(ram[count])) break; + + // Update variables + size += x; + count++; + } + + // Free ram + if (ram) + { + for (x=0;x