- fixed sfx issues on the psp
- removed a few debug strings
This commit is contained in:
wagic.the.homebrew
2008-11-26 14:29:43 +00:00
parent 9b04331415
commit b9e2980952
7 changed files with 193 additions and 217 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
0 30
100 100
0 0
0 0
+4
View File
@@ -90,3 +90,7 @@
109 109
153441 153441
19 19
1318
499
146746
509
+8 -5
View File
@@ -480,6 +480,7 @@ other solutions need to be provided for abilities that add mana (ex: mana flare)
class AManaProducer: public MTGAbility{ class AManaProducer: public MTGAbility{
protected: protected:
static int currentlyTapping;
ManaCost * cost; ManaCost * cost;
ManaCost * output; ManaCost * output;
string menutext; string menutext;
@@ -533,9 +534,10 @@ class AManaProducer: public MTGAbility{
if (mParticleSys && animation == 1.f) mParticleSys->Fire(); if (mParticleSys && animation == 1.f) mParticleSys->Fire();
animation -= 4 *dt; animation -= 4 *dt;
if (animation < 0){ if (animation < 0){
animation = 0; animation = 0;
controller->getManaPool()->add(output); currentlyTapping--;
if (mParticleSys) mParticleSys->Stop(); controller->getManaPool()->add(output);
if (mParticleSys) mParticleSys->Stop();
} }
} }
@@ -563,6 +565,7 @@ class AManaProducer: public MTGAbility{
int reactToClick(MTGCardInstance * _card){ int reactToClick(MTGCardInstance * _card){
if (!isReactingToClick( _card)) return 0; if (!isReactingToClick( _card)) return 0;
source->tapped = 1; source->tapped = 1;
currentlyTapping++;
if (cost) GameObserver::GetInstance()->currentlyActing()->getManaPool()->pay(cost); if (cost) GameObserver::GetInstance()->currentlyActing()->getManaPool()->pay(cost);
animation = 1.f; animation = 1.f;
CardGui * cardg = game->mLayers->playLayer()->getByCard(source); CardGui * cardg = game->mLayers->playLayer()->getByCard(source);
@@ -572,7 +575,7 @@ class AManaProducer: public MTGAbility{
} }
controller = source->controller(); controller = source->controller();
if (GameOptions::GetInstance()->values[OPTIONS_SFXVOLUME] > 0){ if (GameOptions::GetInstance()->values[OPTIONS_SFXVOLUME] > 0 && currentlyTapping < 3){
JSample * sample = SampleCache::GetInstance()->getSample("sound/sfx/mana.wav"); JSample * sample = SampleCache::GetInstance()->getSample("sound/sfx/mana.wav");
if (sample) JSoundSystem::GetInstance()->PlaySample(sample); if (sample) JSoundSystem::GetInstance()->PlaySample(sample);
} }
@@ -630,7 +633,7 @@ class AManaProducer: public MTGAbility{
} }
}; };
int AManaProducer::currentlyTapping = 0;
/* Lifelink Ability */ /* Lifelink Ability */
class ALifeLink:public MTGAbility{ class ALifeLink:public MTGAbility{
+12 -1
View File
@@ -58,14 +58,25 @@ class TexturesCache{
}; };
class SampleCached{
public:
int lastTime;
JSample * sample;
SampleCached(int _lastTime, JSample * _sample):lastTime(_lastTime),sample(_sample){};
~SampleCached(){delete sample;};
};
class SampleCache{ class SampleCache{
protected: protected:
map<string, JSample *> cache; int lastTime;
map<string, SampleCached *> cache;
static SampleCache * mInstance; static SampleCache * mInstance;
void cleanCache(); void cleanCache();
void cleanOldest();
~SampleCache(); ~SampleCache();
public: public:
static SampleCache * GetInstance(); static SampleCache * GetInstance();
SampleCache(){lastTime = 0;};
JSample * getSample(string filename); JSample * getSample(string filename);
}; };
+5 -48
View File
@@ -55,34 +55,22 @@ void AIPlayer::tapLandsForMana(ManaCost * potentialMana, ManaCost * cost){
MTGCardInstance * card = NULL; MTGCardInstance * card = NULL;
while((card = cd.nextmatch(game->inPlay, card))){ while((card = cd.nextmatch(game->inPlay, card))){
#if defined (WIN32) || defined (LINUX)
OutputDebugString("Found mana card\n");
#endif
int doTap = 1; int doTap = 1;
for (int i=MTG_NB_COLORS-1; i>= 0; i--){ for (int i=MTG_NB_COLORS-1; i>= 0; i--){
if (diff->getCost(i) && card->hasSubtype(MTG_LAND_TEXTS[i]) ){ if (diff->getCost(i) && card->hasSubtype(MTG_LAND_TEXTS[i]) ){
#if defined (WIN32) || defined (LINUX) diff->remove(i,1);
OutputDebugString("Not Gonna Tap\n"); doTap = 0;
#endif break;
diff->remove(i,1);
doTap = 0;
break;
} }
} }
if (doTap){ if (doTap){
gameObs->cardClick(card); gameObs->cardClick(card);
#if defined (WIN32) || defined (LINUX)
OutputDebugString("Tapped\n");
#endif
} }
} }
delete(diff); delete(diff);
#if defined (WIN32) || defined (LINUX)
OutputDebugString("ok land tapped");
#endif
} }
//TODO a better function that does not take into account only basic lands //TODO a better function that does not take into account only basic lands
ManaCost * AIPlayer::getPotentialMana(){ ManaCost * AIPlayer::getPotentialMana(){
@@ -95,24 +83,12 @@ ManaCost * AIPlayer::getPotentialMana(){
while((card = cd.nextmatch(game->inPlay, card))){ while((card = cd.nextmatch(game->inPlay, card))){
if (card->hasSubtype("plains")){ if (card->hasSubtype("plains")){
#if defined (WIN32) || defined (LINUX)
OutputDebugString("Found Potential plain\n");
#endif
potentialMana->add(MTG_COLOR_WHITE,1); potentialMana->add(MTG_COLOR_WHITE,1);
}else if(card->hasSubtype("swamp")){ }else if(card->hasSubtype("swamp")){
#if defined (WIN32) || defined (LINUX)
OutputDebugString("Found Potential swamp\n");
#endif
potentialMana->add(MTG_COLOR_BLACK,1); potentialMana->add(MTG_COLOR_BLACK,1);
}else if(card->hasSubtype("forest")){ }else if(card->hasSubtype("forest")){
#if defined (WIN32) || defined (LINUX)
OutputDebugString("Found Potential forestn\n");
#endif
potentialMana->add(MTG_COLOR_GREEN,1); potentialMana->add(MTG_COLOR_GREEN,1);
}else if(card->hasSubtype("mountain")){ }else if(card->hasSubtype("mountain")){
#if defined (WIN32) || defined (LINUX)
OutputDebugString("Found Potential Mountain\n");
#endif
potentialMana->add(MTG_COLOR_RED,1); potentialMana->add(MTG_COLOR_RED,1);
}else if(card->hasSubtype("island")){ }else if(card->hasSubtype("island")){
potentialMana->add(MTG_COLOR_BLUE,1); potentialMana->add(MTG_COLOR_BLUE,1);
@@ -504,21 +480,7 @@ int AIPlayerBaka::Act(float dt){
return 0; return 0;
} }
initTimer(); initTimer();
#if defined (WIN32) || defined (LINUX)
OutputDebugString("==========\nNew Act CALL\n================\n");
#endif
#if defined (WIN32) || defined (LINUX)
OutputDebugString("==========\nCombat Damages ?\n================\n");
#endif
if (combatDamages()) return 0; if (combatDamages()) return 0;
#if defined (WIN32) || defined (LINUX)
OutputDebugString("==========\nChoose Target ?\n================\n");
#endif
if (chooseTarget()) return 0; if (chooseTarget()) return 0;
@@ -552,12 +514,6 @@ int AIPlayerBaka::Act(float dt){
//No mana, try to get some //No mana, try to get some
getPotentialMana(); getPotentialMana();
#if defined (WIN32) || defined (LINUX)
char buffe[4096];
sprintf(buffe,"potentail mana %i\n",potentialMana->getConvertedCost() );
OutputDebugString(buffe);
#endif
if (potentialMana->getConvertedCost() > 0){ if (potentialMana->getConvertedCost() > 0){
@@ -570,6 +526,7 @@ int AIPlayerBaka::Act(float dt){
if (!nextCardToPlay) nextCardToPlay = FindCardToPlay(potentialMana, "sorcery"); if (!nextCardToPlay) nextCardToPlay = FindCardToPlay(potentialMana, "sorcery");
if (nextCardToPlay){ if (nextCardToPlay){
#if defined (WIN32) || defined (LINUX) #if defined (WIN32) || defined (LINUX)
char buffe[4096];
sprintf(buffe, "Putting Card Into Play: %s", nextCardToPlay->getName()); sprintf(buffe, "Putting Card Into Play: %s", nextCardToPlay->getName());
OutputDebugString(buffe); OutputDebugString(buffe);
#endif #endif
-17
View File
@@ -33,28 +33,16 @@ MTGCardInstance * CardDescriptor::match_or(MTGCardInstance * card){
} }
MTGCardInstance * CardDescriptor::match_and(MTGCardInstance * card){ MTGCardInstance * CardDescriptor::match_and(MTGCardInstance * card){
#ifdef WIN32
OutputDebugString("Match AND\n");
#endif
MTGCardInstance * match = card; MTGCardInstance * match = card;
for (int i = 0; i< nb_types; i++){ for (int i = 0; i< nb_types; i++){
if (!card->hasSubtype(types[i])){ if (!card->hasSubtype(types[i])){
#ifdef WIN32
OutputDebugString(card->name.c_str());
OutputDebugString("Subtype No Match\n");
#endif
match = NULL; match = NULL;
} }
} }
for (int i = 0; i< MTG_NB_COLORS; i++){ for (int i = 0; i< MTG_NB_COLORS; i++){
if ((colors[i] == 1 && !card->hasColor(i))||(colors[i] == -1 && card->hasColor(i))){ if ((colors[i] == 1 && !card->hasColor(i))||(colors[i] == -1 && card->hasColor(i))){
match = NULL; match = NULL;
#ifdef WIN32
OutputDebugString(card->name.c_str());
OutputDebugString("Color No Match\n");
#endif
} }
} }
return match; return match;
@@ -116,11 +104,6 @@ MTGCardInstance * CardDescriptor::nextmatch(MTGGameZone * zone, MTGCardInstance
if (NULL == previous) found = 1; if (NULL == previous) found = 1;
for(int i=0; i < zone->nb_cards; i++){ for(int i=0; i < zone->nb_cards; i++){
if(found && match(zone->cards[i])){ if(found && match(zone->cards[i])){
#if defined (WIN32) || defined (LINUX)
char buf[4096];
sprintf(buf,"Card Descriptor MATCH!: %s \n" ,(zone->cards[i])->getName());
OutputDebugString(buf);
#endif
return zone->cards[i]; return zone->cards[i];
} }
if (zone->cards[i] == previous){ if (zone->cards[i] == previous){
+22 -4
View File
@@ -126,22 +126,40 @@ SampleCache * SampleCache::GetInstance(){
} }
JSample * SampleCache::getSample(string filename){ JSample * SampleCache::getSample(string filename){
map<string,JSample *>::iterator it = cache.find(filename); map<string,SampleCached *>::iterator it = cache.find(filename);
if (it == cache.end()){ if (it == cache.end()){
if (cache.size() >10) cleanCache(); //Poor man's limit if (cache.size() >10) cleanOldest(); //Poor man's limit
JSample * sample = JSoundSystem::GetInstance()->LoadSample(filename.c_str()); JSample * sample = JSoundSystem::GetInstance()->LoadSample(filename.c_str());
if (!sample && fileExists(filename.c_str())){ //Out of Ram ?? if (!sample && fileExists(filename.c_str())){ //Out of Ram ??
cleanCache(); cleanCache();
sample = JSoundSystem::GetInstance()->LoadSample(filename.c_str()); sample = JSoundSystem::GetInstance()->LoadSample(filename.c_str());
} }
lastTime++;
cache[filename] = NEW SampleCached(lastTime, sample);
return sample; return sample;
}else{ }else{
return (it->second); return (it->second->sample);
}
}
void SampleCache::cleanOldest(){
int smallest = lastTime;
map<string,SampleCached *>::iterator found = cache.end();
map<string,SampleCached *>::iterator it;
for (it = cache.begin(); it != cache.end(); it++){
if(it->second->lastTime <= smallest){
smallest = it->second->lastTime;
found = it;
}
}
if (found != cache.end()){
delete (found->second);
cache.erase(found);
} }
} }
void SampleCache::cleanCache(){ void SampleCache::cleanCache(){
map<string,JSample *>::iterator it; map<string,SampleCached *>::iterator it;
for (it = cache.begin(); it != cache.end(); it++){ for (it = cache.begin(); it != cache.end(); it++){
delete(it->second); delete(it->second);
} }