now fade out of music when starting game and fade out of music when ending game
This commit is contained in:
parent
c6d4e898a0
commit
14736ddfb7
|
@ -46,6 +46,8 @@ const float PHOTO_MODE_MAXHEIGHT = 500.0;
|
|||
const int CREATE_NEW_TEAM = -100;
|
||||
const int CANCEL_SWITCH_TEAM = -1;
|
||||
|
||||
const int fadeMusicMilliseconds = 3500;
|
||||
|
||||
Game::Game() : ProgramState(NULL) {
|
||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
|
@ -192,6 +194,67 @@ Game::Game(Program *program, const GameSettings *gameSettings,bool masterserverM
|
|||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
}
|
||||
|
||||
void Game::endGame() {
|
||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
Object::setStateCallback(NULL);
|
||||
thisGamePtr = NULL;
|
||||
if(originalDisplayMsgCallback != NULL) {
|
||||
NetworkInterface::setDisplayMessageFunction(originalDisplayMsgCallback);
|
||||
}
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
Logger &logger= Logger::getInstance();
|
||||
Renderer &renderer= Renderer::getInstance();
|
||||
|
||||
logger.loadLoadingScreen("");
|
||||
logger.setState(Lang::getInstance().get("Deleting"));
|
||||
//logger.add("Game", true);
|
||||
logger.add("Game", false);
|
||||
logger.hideProgress();
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
// Cannot Fade because sound files will be deleted below
|
||||
SoundRenderer::getInstance().stopAllSounds(fadeMusicMilliseconds);
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
// deleteValues(aiInterfaces.begin(), aiInterfaces.end());
|
||||
// aiInterfaces.clear();
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
// gui.end(); //selection must be cleared before deleting units
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
// world.end(); //must die before selection because of referencers
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] aiInterfaces.size() = %d\n",__FILE__,__FUNCTION__,__LINE__,aiInterfaces.size());
|
||||
|
||||
// MUST DO THIS LAST!!!! Because objects above have pointers to things like
|
||||
// unit particles and fade them out etc and this end method deletes the original
|
||||
// object pointers.
|
||||
renderer.endGame();
|
||||
|
||||
GameConstants::updateFps = original_updateFps;
|
||||
GameConstants::cameraFps = original_cameraFps;
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
Unit::setGame(NULL);
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] ==== END GAME ==== getCurrentPixelByteCount() = %llu\n",__FILE__,__FUNCTION__,__LINE__,(long long unsigned int)renderer.getCurrentPixelByteCount());
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugWorldSynch).enabled) SystemFlags::OutputDebug(SystemFlags::debugWorldSynch,"==== END GAME ====\n");
|
||||
|
||||
//this->program->reInitGl();
|
||||
//renderer.reinitAll();
|
||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
}
|
||||
|
||||
Game::~Game() {
|
||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
@ -215,6 +278,7 @@ Game::~Game() {
|
|||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
// Cannot Fade because sound files will be deleted below
|
||||
SoundRenderer::getInstance().stopAllSounds();
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
@ -591,7 +655,7 @@ void Game::load(int loadTypes) {
|
|||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] loadTypes = %d, gameSettings = [%s]\n",__FILE__,__FUNCTION__,__LINE__,loadTypes,this->gameSettings.toString().c_str());
|
||||
|
||||
SoundRenderer &soundRenderer= SoundRenderer::getInstance();
|
||||
soundRenderer.stopAllSounds();
|
||||
soundRenderer.stopAllSounds(fadeMusicMilliseconds);
|
||||
|
||||
Config &config = Config::getInstance();
|
||||
Logger &logger= Logger::getInstance();
|
||||
|
@ -894,7 +958,7 @@ void Game::init(bool initForPreviewOnly) {
|
|||
|
||||
//sounds
|
||||
SoundRenderer &soundRenderer= SoundRenderer::getInstance();
|
||||
soundRenderer.stopAllSounds();
|
||||
soundRenderer.stopAllSounds(fadeMusicMilliseconds);
|
||||
soundRenderer= SoundRenderer::getInstance();
|
||||
|
||||
Tileset *tileset= world.getTileset();
|
||||
|
@ -1208,7 +1272,7 @@ void Game::update() {
|
|||
|
||||
//sounds
|
||||
SoundRenderer &soundRenderer= SoundRenderer::getInstance();
|
||||
soundRenderer.stopAllSounds();
|
||||
soundRenderer.stopAllSounds(fadeMusicMilliseconds);
|
||||
soundRenderer= SoundRenderer::getInstance();
|
||||
|
||||
Tileset *tileset= world.getTileset();
|
||||
|
@ -2435,11 +2499,16 @@ Stats Game::quitGame() {
|
|||
void Game::exitGameState(Program *program, Stats &endStats) {
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
ProgramState *newState = new BattleEnd(program, &endStats);
|
||||
Game *game = dynamic_cast<Game *>(program->getState());
|
||||
if(game) {
|
||||
game->endGame();
|
||||
}
|
||||
|
||||
ProgramState *newState = new BattleEnd(program, &endStats, game);
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
program->setState(newState);
|
||||
program->setState(newState, false);
|
||||
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
}
|
||||
|
|
|
@ -218,6 +218,8 @@ public:
|
|||
virtual vector<Texture2D *> processTech(string techName);
|
||||
virtual void consoleAddLine(string line);
|
||||
|
||||
void endGame();
|
||||
|
||||
private:
|
||||
//render
|
||||
void render3d();
|
||||
|
|
|
@ -34,8 +34,10 @@ namespace Glest{ namespace Game{
|
|||
// class BattleEnd
|
||||
// =====================================================
|
||||
|
||||
BattleEnd::BattleEnd(Program *program, const Stats *stats): ProgramState(program) {
|
||||
BattleEnd::BattleEnd(Program *program, const Stats *stats,ProgramState *originState): ProgramState(program) {
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d] stats = %p\n",__FILE__,__FUNCTION__,__LINE__,stats);
|
||||
|
||||
this->originState = originState;
|
||||
if(stats != NULL) {
|
||||
this->stats= *stats;
|
||||
}
|
||||
|
@ -61,6 +63,9 @@ BattleEnd::BattleEnd(Program *program, const Stats *stats): ProgramState(program
|
|||
BattleEnd::~BattleEnd() {
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
delete originState;
|
||||
originState = NULL;
|
||||
|
||||
SoundRenderer::getInstance().playMusic(CoreData::getInstance().getMenuMusic());
|
||||
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
|
|
@ -34,11 +34,12 @@ private:
|
|||
int mouse2d;
|
||||
GraphicMessageBox mainMessageBox;
|
||||
Texture2D *renderToTexture;
|
||||
ProgramState *originState;
|
||||
|
||||
void showMessageBox(const string &text, const string &header, bool toggle);
|
||||
|
||||
public:
|
||||
BattleEnd(Program *program, const Stats *stats);
|
||||
BattleEnd(Program *program, const Stats *stats, ProgramState *originState);
|
||||
~BattleEnd();
|
||||
|
||||
virtual void update();
|
||||
|
|
|
@ -240,14 +240,14 @@ void SoundRenderer::stopAmbient(StrSound *strSound) {
|
|||
|
||||
// ======================= Misc ============================
|
||||
|
||||
void SoundRenderer::stopAllSounds() {
|
||||
void SoundRenderer::stopAllSounds(int64 fadeOff) {
|
||||
if(soundPlayer != NULL) {
|
||||
MutexSafeWrapper safeMutex(NULL,string(__FILE__) + "_" + intToStr(__LINE__));
|
||||
if(runThreadSafe == true) {
|
||||
safeMutex.setMutex(&mutex);
|
||||
}
|
||||
|
||||
soundPlayer->stopAllSounds();
|
||||
soundPlayer->stopAllSounds(fadeOff);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ public:
|
|||
void stopAmbient(StrSound *strSound);
|
||||
|
||||
//misc
|
||||
void stopAllSounds();
|
||||
void stopAllSounds(int64 fadeOff=0);
|
||||
void loadConfig();
|
||||
|
||||
bool wasInitOk() const;
|
||||
|
|
|
@ -117,7 +117,7 @@ public:
|
|||
virtual void play(StaticSound *staticSound);
|
||||
virtual void play(StrSound *strSound, int64 fadeOn=0);
|
||||
virtual void stop(StrSound *strSound, int64 fadeOff=0);
|
||||
virtual void stopAllSounds();
|
||||
virtual void stopAllSounds(int64 fadeOff=0);
|
||||
virtual void updateStreams(); //updates str buffers if needed
|
||||
|
||||
private:
|
||||
|
|
|
@ -100,7 +100,7 @@ public:
|
|||
virtual void play(StaticSound *staticSound);
|
||||
virtual void play(StrSound *strSound, int64 fadeOn=0);
|
||||
virtual void stop(StrSound *strSound, int64 fadeOff=0);
|
||||
virtual void stopAllSounds();
|
||||
virtual void stopAllSounds(int64 fadeOff=0);
|
||||
virtual void updateStreams(); //updates str buffers if needed
|
||||
|
||||
private:
|
||||
|
|
|
@ -54,7 +54,7 @@ public:
|
|||
virtual void play(StaticSound *staticSound)= 0;
|
||||
virtual void play(StrSound *strSound, int64 fadeOn=0)= 0; //delay and fade in miliseconds
|
||||
virtual void stop(StrSound *strSound, int64 fadeOff=0)= 0;
|
||||
virtual void stopAllSounds()= 0;
|
||||
virtual void stopAllSounds(int64 fadeOff=0)= 0;
|
||||
virtual void updateStreams()= 0;
|
||||
virtual bool wasInitOk() const { return initOk; }
|
||||
};
|
||||
|
|
|
@ -427,12 +427,12 @@ void SoundPlayerDs8::stop(StrSound *strSound, int64 fadeOff){
|
|||
}
|
||||
}
|
||||
|
||||
void SoundPlayerDs8::stopAllSounds(){
|
||||
void SoundPlayerDs8::stopAllSounds(int64 fadeOff){
|
||||
if(initOk == false) return;
|
||||
|
||||
for(unsigned int i=0; i<params.strBufferCount; ++i){
|
||||
if(!strSoundBuffers[i].isFree()){
|
||||
strSoundBuffers[i].stop(0);
|
||||
strSoundBuffers[i].stop(fadeOff);
|
||||
strSoundBuffers[i].end();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -505,7 +505,7 @@ void SoundPlayerOpenAL::stop(StrSound* strSound, int64 fadeOff) {
|
|||
}
|
||||
}
|
||||
|
||||
void SoundPlayerOpenAL::stopAllSounds() {
|
||||
void SoundPlayerOpenAL::stopAllSounds(int64 fadeOff) {
|
||||
if(initOk == false) return;
|
||||
|
||||
for(StaticSoundSources::iterator i = staticSources.begin();
|
||||
|
@ -516,7 +516,7 @@ void SoundPlayerOpenAL::stopAllSounds() {
|
|||
for(StreamSoundSources::iterator i = streamSources.begin();
|
||||
i != streamSources.end(); ++i) {
|
||||
StreamSoundSource* source = *i;
|
||||
source->stop();
|
||||
source->stop(fadeOff);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue