- Yeshua's patch for ingame music
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-11-29 05:52:12 +00:00
parent b275b6f758
commit ec553ddfb8
2 changed files with 55 additions and 11 deletions
+13
View File
@@ -31,7 +31,20 @@ class GameStateDuel: public GameState, public JGuiListener
SimpleMenu * opponentMenu; SimpleMenu * opponentMenu;
SimpleMenu * menu; SimpleMenu * menu;
bool premadeDeck; bool premadeDeck;
int OpponentsDeckid;
string musictrack;
bool MusicExist(string FileName){
string filepath = RESPATH;
filepath = filepath + "/" + resources.musicFile(FileName);
std::ifstream file(filepath.c_str());
if (file) {
file.close();
return true;
}
else
return false;
}
void loadPlayer(int playerId, int decknb = 0, int isAI = 0); void loadPlayer(int playerId, int decknb = 0, int isAI = 0);
void loadPlayerMomir(int playerId, int isAI); void loadPlayerMomir(int playerId, int isAI);
void loadPlayerRandom(int playerId, int isAI, int mode); void loadPlayerRandom(int playerId, int isAI, int mode);
+36 -5
View File
@@ -67,7 +67,12 @@ void GameStateDuel::Start()
{ {
JRenderer * renderer = JRenderer::GetInstance(); JRenderer * renderer = JRenderer::GetInstance();
renderer->EnableVSync(true); renderer->EnableVSync(true);
OpponentsDeckid=0;
//stop menu music
if (GameApp::music){
JSoundSystem::GetInstance()->StopMusic(GameApp::music);
SAFE_DELETE(GameApp::music);
}
#ifdef TESTSUITE #ifdef TESTSUITE
SAFE_DELETE(testSuite); SAFE_DELETE(testSuite);
@@ -100,6 +105,7 @@ void GameStateDuel::Start()
fillDeckMenu(deckmenu,RESPATH"/player/premade"); fillDeckMenu(deckmenu,RESPATH"/player/premade");
} }
//mGamePhase = DUEL_STATE_ERROR_NO_DECK; //mGamePhase = DUEL_STATE_ERROR_NO_DECK;
} }
void GameStateDuel::loadPlayerRandom(int playerId, int isAI, int mode){ void GameStateDuel::loadPlayerRandom(int playerId, int isAI, int mode){
@@ -219,6 +225,11 @@ void GameStateDuel::End()
OutputDebugString("Ending GamestateDuel\n"); OutputDebugString("Ending GamestateDuel\n");
#endif #endif
SAFE_DELETE(deckmenu); SAFE_DELETE(deckmenu);
//stop game music
if (GameApp::music){
JSoundSystem::GetInstance()->StopMusic(GameApp::music);
SAFE_DELETE(GameApp::music);
}
JRenderer::GetInstance()->EnableVSync(false); JRenderer::GetInstance()->EnableVSync(false);
if (mPlayers[0] && mPlayers[1]) mPlayers[0]->End(); if (mPlayers[0] && mPlayers[1]) mPlayers[0]->End();
GameObserver::EndInstance(); GameObserver::EndInstance();
@@ -327,11 +338,30 @@ void GameStateDuel::Update(float dt)
} }
break; break;
case DUEL_STATE_PLAY: case DUEL_STATE_PLAY:
//Stop the music before starting the game //start of in game music code
if (GameApp::music){ musictrack = "";
JSoundSystem::GetInstance()->StopMusic(GameApp::music); //check opponent id and choose the music track based on it
SAFE_DELETE(GameApp::music); if(OpponentsDeckid) {
char temp[4096];
sprintf(temp,"ai_baka_music%i.mp3",OpponentsDeckid);
musictrack.assign(temp);
} }
else if(mParent->gameType == GAME_TYPE_CLASSIC)
musictrack = "ai_baka_music.mp3";
else if(mParent->gameType == GAME_TYPE_MOMIR)
musictrack = "ai_baka_music_momir.mp3";
else if(mParent->gameType == GAME_TYPE_RANDOM1 || mParent->gameType == GAME_TYPE_RANDOM2)
musictrack = "ai_baka_music_random.mp3";
if(!MusicExist(musictrack))
musictrack = "ai_baka_music.mp3";
//play the music
if (GameApp::HasMusic && !GameApp::music && options[Options::MUSICVOLUME].number > 0 && MusicExist(musictrack)){
GameApp::music = resources.ssLoadMusic(musictrack.c_str());
JSoundSystem::GetInstance()->PlayMusic(GameApp::music, true);
}
//end of music code
if (!game){ if (!game){
GameObserver::Init(mPlayers, 2); GameObserver::Init(mPlayers, 2);
game = GameObserver::GetInstance(); game = GameObserver::GetInstance();
@@ -480,6 +510,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId)
break; break;
default: default:
loadPlayer(1,controlId,1); loadPlayer(1,controlId,1);
OpponentsDeckid=controlId;
opponentMenu->Close(); opponentMenu->Close();
mGamePhase = DUEL_STATE_CHOOSE_DECK2_TO_PLAY; mGamePhase = DUEL_STATE_CHOOSE_DECK2_TO_PLAY;
break; break;