- Cache size is now an option
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-04-19 06:02:29 +00:00
parent 337301e039
commit 33e79e234e
15 changed files with 76 additions and 52 deletions
+3 -3
View File
@@ -401,7 +401,7 @@ int AIPlayer::chooseAttackers(){
int AIPlayer::canFirstStrikeKill(MTGCardInstance * card, MTGCardInstance *ennemy){
if (ennemy->has(Constants::FIRSTSTRIKE) || ennemy->has(Constants::DOUBLESTRIKE)) return 0;
if (!(card->has(Constants::FIRSTSTRIKE) || card->has(Constants::DOUBLESTRIKE))) return 0;
if (!card->power >= ennemy->toughness) return 0;
if (!(card->power >= ennemy->toughness)) return 0;
return 1;
}
@@ -461,8 +461,8 @@ int AIPlayer::chooseBlockers(){
}else{
MTGCardInstance * attacker = card->defenser;
if (opponentsToughness[attacker] <= 0 ||
(card->toughness <= card->defenser->power && opponentForce*2 <life && !canFirstStrikeKill(card,card->defenser)) ||
card->defenser->nbOpponents()>1){
(card->toughness <= attacker->power && opponentForce*2 <life && !canFirstStrikeKill(card,attacker)) ||
attacker->nbOpponents()>1){
g->mLayers->actionLayer()->reactToClick(a,card);
}else{
set = 1;
+9 -2
View File
@@ -10,7 +10,10 @@ int DeckStat::percentVictories(){
}
DeckStats * DeckStats::GetInstance(){
if (!mInstance) mInstance = NEW DeckStats();
if (!mInstance){
mInstance = NEW DeckStats();
}
return mInstance;
}
@@ -19,6 +22,7 @@ void DeckStats::cleanStats(){
for (it = stats.begin(); it != stats.end(); it++){
SAFE_DELETE(it->second);
}
stats.clear();
}
@@ -53,7 +57,10 @@ void DeckStats::load(const char * filename){
int games = atoi(s.c_str());
std::getline(file,s);
int victories = atoi(s.c_str());
stats[deckfile] = NEW DeckStat(games,victories);
map<string,DeckStat *>::iterator it = stats.find(deckfile);
if (it == stats.end()){
stats[deckfile] = NEW DeckStat(games,victories);
}
}
file.close();
}
+14 -3
View File
@@ -21,6 +21,7 @@ JResourceManager* GameApp::CommonRes = NEW JResourceManager();
hgeParticleSystem* GameApp::Particles[] = {NULL,NULL,NULL,NULL,NULL,NULL};
int GameApp::HasMusic = 1;
JMusic * GameApp::music = NULL;
string GameApp::systemError = "";
GameState::GameState(GameApp* parent): mParent(parent)
{
@@ -105,6 +106,10 @@ void GameApp::Create()
CommonRes->LoadJLBFont("graphics/magic",16);
CommonRes->CreateTexture("graphics/phasebar.png");
CommonRes->CreateTexture("graphics/background.png");
CommonRes->CreateTexture("graphics/back.jpg");
//CommonRes->CreateTexture("graphics/interrupt.png");
//CommonRes->CreateQuad("interrupt", "graphics/interrupt.png", 0, 0, 256, 128);
@@ -171,7 +176,7 @@ void GameApp::Destroy()
}
SAFE_DELETE(cache);
SampleCache::DestroyInstance();
delete(DeckStats::GetInstance());
SAFE_DELETE(CommonRes);
@@ -182,7 +187,7 @@ void GameApp::Destroy()
SAFE_DELETE(music);
delete(DeckStats::GetInstance());
SimpleMenu::destroy();
@@ -196,6 +201,7 @@ void GameApp::Destroy()
void GameApp::Update()
{
if (systemError.size()) return;
JGE* mEngine = JGE::GetInstance();
if (mEngine->GetButtonState(PSP_CTRL_START) && mEngine->GetButtonClick(PSP_CTRL_TRIANGLE))
{
@@ -236,7 +242,12 @@ void GameApp::Update()
void GameApp::Render()
{
if (systemError.size()){
fprintf(stderr, systemError.c_str());
JLBFont * mFont= CommonRes->GetJLBFont("graphics/simon");
if (mFont) mFont->DrawString(systemError.c_str(),1,1);
return;
}
if (mCurrentState != NULL)
{
mCurrentState->Render();
+7 -1
View File
@@ -4,6 +4,7 @@
#include "../include/MenuItem.h"
#include "../include/GameOptions.h"
#include "../include/GameApp.h"
#include "../include/MTGCard.h"
static const char* GAME_VERSION = "WTH?! 0.6.0 - by WilLoW";
#define ALPHA_WARNING 0
@@ -72,6 +73,8 @@ GameStateMenu::~GameStateMenu() {}
void GameStateMenu::Create()
{
mDip = NULL;
mReadConf = 0;
mCurrentSetName[0] = 0;
@@ -241,8 +244,10 @@ void GameStateMenu::Update(float dt)
break;
case MENU_STATE_MAJOR_MAINMENU :
if (mGuiController!=NULL){
mGuiController->Update(dt);
mGuiController->Update(dt);
}
break;
case MENU_STATE_MAJOR_SUBMENU :
subMenuController->Update(dt);
@@ -407,6 +412,7 @@ void GameStateMenu::Render()
}
}
}
+1
View File
@@ -31,6 +31,7 @@ void GameStateOptions::Start()
if (GameOptions::GetInstance()->values[OPTIONS_DIFFICULTY_MODE_UNLOCKED].getIntValue()) {
optionsList->Add(NEW OptionItem(OPTIONS_DIFFICULTY, "Difficulty", 3, 1));
}
optionsList->Add(NEW OptionItem(OPTIONS_CACHESIZE, "Cache Size", 60, 5));
JLBFont * mFont = GameApp::CommonRes->GetJLBFont("graphics/f3");
optionsMenu = NEW SimpleMenu(102, this,mFont, 50,170);
optionsMenu->Add(1, "Save & Back to Main Menu");
+27 -22
View File
@@ -26,7 +26,7 @@ MTGGuiPlay::MTGGuiPlay(int id, GameObserver * _game):PlayGuiObjectController(id,
offset = 0;
mPhaseBarTexture = JRenderer::GetInstance()->LoadTexture("graphics/phasebar.png", TEX_TYPE_USE_VRAM);
mPhaseBarTexture = GameApp::CommonRes->GetTexture("graphics/phasebar.png");
for (int i=0; i < 12; i++){
phaseIcons[2*i] = NEW JQuad(mPhaseBarTexture, i*28, 0, 28, 28);
phaseIcons[2*i + 1] = NEW JQuad(mPhaseBarTexture, i*28, 28, 28, 28);
@@ -36,26 +36,34 @@ MTGGuiPlay::MTGGuiPlay(int id, GameObserver * _game):PlayGuiObjectController(id,
mGlitterAlpha = -1;
mFont= GameApp::CommonRes->GetJLBFont("graphics/simon");
mIconsTexture = JRenderer::GetInstance()->LoadTexture("graphics/menuicons.png", TEX_TYPE_USE_VRAM);
//load all the icon images
mIcons[Constants::MTG_COLOR_ARTIFACT] = NEW JQuad(mIconsTexture, 2+6*36, 38, 32, 32);
mIcons[Constants::MTG_COLOR_LAND] = NEW JQuad(mIconsTexture, 2+5*36, 38, 32, 32);
mIcons[Constants::MTG_COLOR_WHITE] = NEW JQuad(mIconsTexture, 2+4*36, 38, 32, 32);
mIcons[Constants::MTG_COLOR_RED] = NEW JQuad(mIconsTexture, 2+3*36, 38, 32, 32);
mIcons[Constants::MTG_COLOR_BLACK] = NEW JQuad(mIconsTexture, 2+2*36, 38, 32, 32);
mIcons[Constants::MTG_COLOR_BLUE] = NEW JQuad(mIconsTexture, 2+1*36, 38, 32, 32);
mIcons[Constants::MTG_COLOR_GREEN] = NEW JQuad(mIconsTexture, 2+0*36, 38, 32, 32);
mIcons[Constants::MTG_COLOR_ARTIFACT] = GameApp::CommonRes->GetQuad("c_artifact");
mIcons[Constants::MTG_COLOR_LAND] = GameApp::CommonRes->GetQuad("c_land");
mIcons[Constants::MTG_COLOR_WHITE] = GameApp::CommonRes->GetQuad("c_white");
mIcons[Constants::MTG_COLOR_RED] = GameApp::CommonRes->GetQuad("c_red");
mIcons[Constants::MTG_COLOR_BLACK] = GameApp::CommonRes->GetQuad("c_black");
mIcons[Constants::MTG_COLOR_BLUE] = GameApp::CommonRes->GetQuad("c_blue");
mIcons[Constants::MTG_COLOR_GREEN] = GameApp::CommonRes->GetQuad("c_green");
for (int i=0; i < 7; i++){
mIcons[i]->SetHotSpot(16,16);
}
mBgTex = JRenderer::GetInstance()->LoadTexture("graphics/background.png", TEX_TYPE_USE_VRAM);
mBg = NEW JQuad(mBgTex, 0, 0, 480, 272);
mBgTex = GameApp::CommonRes->GetTexture("graphics/background.png");
if (mBgTex) mBg = NEW JQuad(mBgTex, 0, 0, 480, 272);
else {
mBg = NULL;
GameApp::systemError = "error Loading Texture mBgTex in MTGGuiPlay intialization";
}
mBgTex2 = JRenderer::GetInstance()->LoadTexture("graphics/back.jpg", TEX_TYPE_USE_VRAM);
mBg2 = NEW JQuad(mBgTex2, 0, 0, 480, 255);
for (int i= 0; i < 4; i++){
alphaBg[i] = 255;
mBgTex2 = GameApp::CommonRes->GetTexture("graphics/back.jpg");
if (mBgTex2){
mBg2 = NEW JQuad(mBgTex2, 0, 0, 480, 255);
for (int i= 0; i < 4; i++){
alphaBg[i] = 255;
}
}else{
mBg2 = NULL;
GameApp::systemError = "error Loading Texture mBgTex2 in MTGGuiPlay intialization";
}
alphaBg[0] = 0;
AddPlayersGuiInfo();
@@ -401,20 +409,17 @@ void MTGGuiPlay::Render(){
MTGGuiPlay::~MTGGuiPlay(){
LOG("==Destroying MTGGuiPlay==");
delete mBg;
delete mBgTex;
for (int i=0; i < 7; i++){
delete mIcons[i];
}
delete mIconsTexture;
//delete mBgTex;
delete mGlitter;
for (int i=0; i < 12; i++){
delete phaseIcons[2*i] ;
delete phaseIcons[2*i + 1];
}
delete mPhaseBarTexture;
//delete mPhaseBarTexture;
SAFE_DELETE(mBg2);
SAFE_DELETE(mBgTex2);
//SAFE_DELETE(mBgTex2);
LOG("==Destroying MTGGuiPlay Successful==");
+5
View File
@@ -128,6 +128,9 @@ ManaCost::~ManaCost(){
for (unsigned int i = 0; i < nbhybrids ; i++){
SAFE_DELETE(hybrids[i]);
}
if (!extraCostsIsCopy) {
SAFE_DELETE(extraCosts);
}
}
void ManaCost::x(){
@@ -141,6 +144,7 @@ void ManaCost::init(){
}
nbhybrids = 0;
extraCosts = NULL;
extraCostsIsCopy = 1;
}
@@ -156,6 +160,7 @@ void ManaCost::copy(ManaCost * _manaCost){
if (_manaCost->extraCosts){
//TODO Deep copy ?
extraCosts = _manaCost->extraCosts;
extraCostsIsCopy = 1;
}
}
+4 -1
View File
@@ -1,5 +1,6 @@
#include "../include/config.h"
#include "../include/TexturesCache.h"
#include "../include/GameOptions.h"
TexturesCache::TexturesCache(){
nb_textures = 0;
@@ -9,6 +10,8 @@ TexturesCache::TexturesCache(){
for (int i=0; i<MAX_CACHE_OBJECTS;i++){
cache[i] = NULL;
}
maxSize = GameOptions::GetInstance()->values[OPTIONS_CACHESIZE].getIntValue() * 100000;
if (!maxSize) maxSize = CACHE_SIZE_PIXELS;
#ifdef WIN32
char buf [4096];
sprintf(buf, " Init TextureCache : %p\n", this);
@@ -61,7 +64,7 @@ void TexturesCache::removeQuad(int id){
}
int TexturesCache::cleanup(){
while (nb_textures >= MAX_CACHE_OBJECTS - 1 || totalsize > CACHE_SIZE_PIXELS){
while (nb_textures >= MAX_CACHE_OBJECTS - 1 || totalsize > maxSize){
int i = getOldestQuad();
if (i == -1) return 0;
removeQuad(i);