Erwan
- cache system for Deck Meta Data. let's improve it as needs arise
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
OBJS = objs/ActionElement.o objs/ActionLayer.o objs/ActionStack.o objs/AIMomirPlayer.o objs/AIPlayer.o objs/AIStats.o objs/Blocker.o objs/CardGui.o objs/CardDescriptor.o objs/CardDisplay.o objs/CardEffect.o objs/CardPrimitive.o objs/CardSelector.o objs/ConstraintResolver.o objs/Counters.o objs/Credits.o objs/Damage.o objs/DamagerDamaged.o objs/DeckDataWrapper.o objs/DeckStats.o objs/DuelLayers.o objs/Effects.o objs/ExtraCost.o objs/GameApp.o objs/GameLauncher.o objs/GameObserver.o objs/GameOptions.o objs/GameState.o objs/GameStateAwards.o objs/GameStateDeckViewer.o objs/GameStateDuel.o objs/GameStateMenu.o objs/GameStateOptions.o objs/GameStateShop.o objs/GuiAvatars.o objs/GuiBackground.o objs/GuiCardsController.o objs/GuiCombat.o objs/GuiFrame.o objs/GuiHand.o objs/GuiLayers.o objs/GuiMana.o objs/GuiPhaseBar.o objs/GuiPlay.o objs/GuiStatic.o objs/Logger.o objs/ManaCost.o objs/ManaCostHybrid.o objs/MenuItem.o objs/MTGAbility.o objs/MTGCardInstance.o objs/MTGCard.o objs/MTGDeck.o objs/MTGDefinitions.o objs/MTGGamePhase.o objs/MTGGameZones.o objs/MTGRules.o objs/OptionItem.o objs/PhaseRing.o objs/Player.o objs/PlayerData.o objs/PlayGuiObjectController.o objs/PlayGuiObject.o objs/Pos.o objs/PriceList.o objs/ReplacementEffects.o objs/Rules.o objs/ShopItem.o objs/SimpleMenu.o objs/SimpleMenuItem.o objs/SimplePad.o objs/Subtypes.o objs/TargetChooser.o objs/TargetsList.o objs/TextScroller.o objs/Token.o objs/Translate.o objs/Trash.o objs/utils.o objs/WEvent.o objs/WResourceManager.o objs/WCachedResource.o objs/Tasks.o
|
||||
OBJS = objs/ActionElement.o objs/ActionLayer.o objs/ActionStack.o objs/AIMomirPlayer.o objs/AIPlayer.o objs/AIStats.o objs/Blocker.o objs/CardGui.o objs/CardDescriptor.o objs/CardDisplay.o objs/CardEffect.o objs/CardPrimitive.o objs/CardSelector.o objs/ConstraintResolver.o objs/Counters.o objs/Credits.o objs/Damage.o objs/DamagerDamaged.o objs/DeckDataWrapper.o objs/DeckMetaData.o objs/DeckStats.o objs/DuelLayers.o objs/Effects.o objs/ExtraCost.o objs/GameApp.o objs/GameLauncher.o objs/GameObserver.o objs/GameOptions.o objs/GameState.o objs/GameStateAwards.o objs/GameStateDeckViewer.o objs/GameStateDuel.o objs/GameStateMenu.o objs/GameStateOptions.o objs/GameStateShop.o objs/GuiAvatars.o objs/GuiBackground.o objs/GuiCardsController.o objs/GuiCombat.o objs/GuiFrame.o objs/GuiHand.o objs/GuiLayers.o objs/GuiMana.o objs/GuiPhaseBar.o objs/GuiPlay.o objs/GuiStatic.o objs/Logger.o objs/ManaCost.o objs/ManaCostHybrid.o objs/MenuItem.o objs/MTGAbility.o objs/MTGCardInstance.o objs/MTGCard.o objs/MTGDeck.o objs/MTGDefinitions.o objs/MTGGamePhase.o objs/MTGGameZones.o objs/MTGRules.o objs/OptionItem.o objs/PhaseRing.o objs/Player.o objs/PlayerData.o objs/PlayGuiObjectController.o objs/PlayGuiObject.o objs/Pos.o objs/PriceList.o objs/ReplacementEffects.o objs/Rules.o objs/ShopItem.o objs/SimpleMenu.o objs/SimpleMenuItem.o objs/SimplePad.o objs/Subtypes.o objs/TargetChooser.o objs/TargetsList.o objs/TextScroller.o objs/Token.o objs/Translate.o objs/Trash.o objs/utils.o objs/WEvent.o objs/WResourceManager.o objs/WCachedResource.o objs/Tasks.o
|
||||
DEPS = $(patsubst objs/%.o, deps/%.d, $(OBJS))
|
||||
|
||||
RESULT = $(shell psp-config --psp-prefix 2> Makefile.cache)
|
||||
|
||||
27
projects/mtg/include/DeckMetaData.h
Normal file
27
projects/mtg/include/DeckMetaData.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef _DECKMETADATA_H_
|
||||
#define _DECKMETADATA_H_
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
using namespace std;
|
||||
|
||||
class DeckMetaData {
|
||||
public:
|
||||
DeckMetaData(string filename);
|
||||
void load(string filename);
|
||||
string desc;
|
||||
string name;
|
||||
};
|
||||
|
||||
class DeckMetaDataList {
|
||||
public:
|
||||
void invalidate(string filename);
|
||||
DeckMetaData * get(string filename);
|
||||
~DeckMetaDataList();
|
||||
static DeckMetaDataList * decksMetaData;
|
||||
private:
|
||||
map<string,DeckMetaData *>values;
|
||||
};
|
||||
|
||||
#endif
|
||||
45
projects/mtg/src/DeckMetaData.cpp
Normal file
45
projects/mtg/src/DeckMetaData.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#include "../include/DeckMetaData.h"
|
||||
#include "../include/MTGDeck.h"
|
||||
#include "../include/config.h"
|
||||
//Possible improvements:
|
||||
//Merge this with DeckStats
|
||||
//Have this class handle all the Meta Data rather than relying on MTGDeck. Then MTGDeck would have a MetaData object...
|
||||
|
||||
|
||||
DeckMetaDataList * DeckMetaDataList::decksMetaData = NEW DeckMetaDataList();
|
||||
|
||||
DeckMetaData::DeckMetaData(string filename){
|
||||
load(filename);
|
||||
}
|
||||
void DeckMetaData::load(string filename){
|
||||
MTGDeck * mtgd = NEW MTGDeck(filename.c_str(),NULL,1);
|
||||
name = mtgd->meta_name;
|
||||
desc = mtgd->meta_desc;
|
||||
delete(mtgd);
|
||||
}
|
||||
|
||||
DeckMetaDataList::~DeckMetaDataList(){
|
||||
for(map<string,DeckMetaData *>::iterator it = values.begin(); it != values.end(); ++it){
|
||||
SAFE_DELETE(it->second);
|
||||
}
|
||||
values.clear();
|
||||
}
|
||||
|
||||
void DeckMetaDataList::invalidate(string filename){
|
||||
map<string,DeckMetaData *>::iterator it = values.find(filename);
|
||||
if (it !=values.end()){
|
||||
SAFE_DELETE(it->second);
|
||||
values.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
DeckMetaData * DeckMetaDataList::get(string filename){
|
||||
map<string,DeckMetaData *>::iterator it = values.find(filename);
|
||||
if (it ==values.end()){
|
||||
if (fileExists(filename.c_str())) {
|
||||
values[filename] = NEW DeckMetaData(filename);
|
||||
}
|
||||
}
|
||||
|
||||
return values[filename]; //this creates a NULL entry if the file does not exist
|
||||
}
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "../include/GameStateShop.h"
|
||||
#include "../include/GameStateAwards.h"
|
||||
#include "../include/DeckStats.h"
|
||||
#include "../include/DeckMetaData.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
hgeParticleSystem* GameApp::Particles[] = {NULL,NULL,NULL,NULL,NULL,NULL};
|
||||
@@ -222,6 +223,7 @@ void GameApp::Destroy()
|
||||
delete(DeckStats::GetInstance());
|
||||
|
||||
SAFE_DELETE(Subtypes::subtypesList);
|
||||
SAFE_DELETE(DeckMetaDataList::decksMetaData);
|
||||
|
||||
SAFE_DELETE(music);
|
||||
Translator::EndInstance();
|
||||
|
||||
@@ -4,9 +4,11 @@
|
||||
#include "../include/Player.h"
|
||||
#include "../include/SimpleMenu.h"
|
||||
#include "../include/DeckStats.h"
|
||||
#include "../include/DeckMetaData.h"
|
||||
|
||||
|
||||
int GameState::fillDeckMenu(SimpleMenu * _menu, string path, string smallDeckPrefix, Player * statsPlayer){
|
||||
DeckMetaDataList * metas = DeckMetaDataList::decksMetaData;
|
||||
int found = 1;
|
||||
int nbDecks = 0;
|
||||
_menu->autoTranslate = false;
|
||||
@@ -16,8 +18,7 @@ int GameState::fillDeckMenu(SimpleMenu * _menu, string path, string smallDeckPre
|
||||
char smallDeckName[512];
|
||||
char deckDesc[512];
|
||||
sprintf(buffer, "%s/deck%i.txt",path.c_str(),nbDecks+1);
|
||||
if(fileExists(buffer)){
|
||||
MTGDeck * mtgd = NEW MTGDeck(buffer,NULL,1);
|
||||
if(DeckMetaData * meta = metas->get(buffer)){
|
||||
found = 1;
|
||||
nbDecks++;
|
||||
sprintf(smallDeckName, "%s_deck%i",smallDeckPrefix.c_str(),nbDecks);
|
||||
@@ -34,13 +35,12 @@ int GameState::fillDeckMenu(SimpleMenu * _menu, string path, string smallDeckPre
|
||||
}else{
|
||||
difficulty = "(easy)";
|
||||
}
|
||||
sprintf(deckDesc, "%s %s",mtgd->meta_name.c_str(), _(difficulty).c_str());
|
||||
sprintf(deckDesc, "%s %s",meta->name.c_str(), _(difficulty).c_str());
|
||||
}else{
|
||||
sprintf(deckDesc, "%s",mtgd->meta_name.c_str());
|
||||
sprintf(deckDesc, "%s",meta->name.c_str());
|
||||
}
|
||||
deckDesc[16] = 0;
|
||||
_menu->Add(nbDecks,deckDesc,mtgd->meta_desc);
|
||||
delete mtgd;
|
||||
_menu->Add(nbDecks,deckDesc,meta->desc);
|
||||
}
|
||||
}
|
||||
return nbDecks;
|
||||
|
||||
@@ -331,7 +331,6 @@ void GameStateDuel::Update(float dt)
|
||||
}
|
||||
//end of music code
|
||||
}
|
||||
// mParent->effect->UpdateSmall(dt);
|
||||
game->Update(dt);
|
||||
if (game->gameOver){
|
||||
credits->compute(game->players[0],game->players[1], mParent);
|
||||
@@ -357,17 +356,14 @@ void GameStateDuel::Update(float dt)
|
||||
}
|
||||
break;
|
||||
case DUEL_STATE_MENU:
|
||||
// mParent->effect->UpdateSmall(dt);
|
||||
menu->Update(dt);
|
||||
break;
|
||||
case DUEL_STATE_CANCEL:
|
||||
// mParent->effect->UpdateSmall(dt);
|
||||
menu->Update(dt);
|
||||
if (menu->closed)
|
||||
mGamePhase = DUEL_STATE_PLAY;
|
||||
break;
|
||||
case DUEL_STATE_BACK_TO_MAIN_MENU:
|
||||
// mParent->effect->UpdateSmall(dt);
|
||||
menu->Update(dt);
|
||||
if (menu->closed) {
|
||||
PlayerData * playerdata = NEW PlayerData(mParent->collection);
|
||||
@@ -388,7 +384,6 @@ void GameStateDuel::Update(float dt)
|
||||
void GameStateDuel::Render()
|
||||
{
|
||||
JLBFont * mFont = resources.GetJLBFont(Constants::MAIN_FONT);
|
||||
//Erase
|
||||
LOG("Start Render\n");
|
||||
JRenderer::GetInstance()->ClearScreen(ARGB(0,0,0,0));
|
||||
|
||||
|
||||
@@ -386,6 +386,10 @@
|
||||
RelativePath=".\src\DeckDataWrapper.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\DeckMetaData.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\DeckStats.cpp"
|
||||
>
|
||||
@@ -801,6 +805,10 @@
|
||||
RelativePath=".\include\DeckDataWrapper.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\include\DeckMetaData.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\include\DeckStats.h"
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user