Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///////////////////////////////
- // header
- #include "fmod/fmod.hpp"
- //our tracks, ideally you could use an array of strings if you wish
- typedef enum MUSIC
- {
- NOTHING = 0,
- LOOP1A1 = 1,
- LOOP2A1 = 2,
- EVENT1A1 = 3,
- EVENT2A1 = 4,
- EVENT2B1 = 5,
- END = 6,
- HARDCORE_DISCO = 10,
- BURNING_ROME = 11,
- JUST_HESITATION = 12,
- ASDF = 13
- };
- //music class
- class Music
- {
- public:
- Music(void);
- ~Music(void);
- void Initialise();
- void Deinitialise();
- void Update(double &dt);
- void SetMusic(MUSIC music);
- FMOD::Channel * GetChannel(){return channel;}
- MUSIC GetPlaying(){return musicPlaying;}
- private:
- MUSIC musicPlaying;
- FMOD::Channel *channel;
- FMOD::System *system;
- FMOD::Sound *loop1a1;
- FMOD::Sound *loop2a1;
- FMOD::Sound *event1a1;
- FMOD::Sound *event2a1;
- FMOD::Sound *event2b1;
- FMOD::Sound *end;
- FMOD::Sound *hardcore_disco;
- FMOD::Sound *burning_rome;
- FMOD::Sound *just_hesitation;
- FMOD::Sound *asdf;
- double dMusicTimer;
- };
- /////////////////////////////////////
- // cpp section
- Music::Music(void)
- {
- musicPlaying = NOTHING;
- dMusicTimer = 0.0;
- }
- Music::~Music(void)
- {
- }
- //load
- void Music::Initialise()
- {
- FMOD::System_Create(&system);
- system->init(32, FMOD_INIT_NORMAL, 0);
- system->createStream("./music/LOOP1A1.ogg", FMOD_HARDWARE, 0, &loop1a1);
- system->createStream("./music/LOOP2A1.ogg", FMOD_HARDWARE, 0, &loop2a1);
- system->createStream("./music/EVENT1A1.ogg", FMOD_HARDWARE, 0, &event1a1);
- system->createStream("./music/EVENT2A1.ogg", FMOD_HARDWARE, 0, &event2a1);
- system->createStream("./music/EVENT2B1.ogg", FMOD_HARDWARE, 0, &event2b1);
- system->createStream("./music/END.ogg", FMOD_HARDWARE, 0, &end);
- system->createStream("./music/HARDCORE_DISCO.ogg", FMOD_HARDWARE, 0, &hardcore_disco);
- system->createStream("./music/BURNING_ROME.ogg", FMOD_HARDWARE, 0, &burning_rome);
- system->createStream("./music/JUST_HESITATION.ogg", FMOD_HARDWARE, 0, &just_hesitation);
- system->createStream("./music/ASDF.ogg", FMOD_HARDWARE, 0, &asdf);
- }
- //unload everything
- void Music::Deinitialise()
- {
- loop1a1 ->release();
- loop2a1 ->release();
- event1a1 ->release();
- event2a1 ->release();
- event2b1 ->release();
- end ->release();
- hardcore_disco ->release();
- burning_rome ->release();
- just_hesitation ->release();
- asdf ->release();
- system ->close();
- system ->release();
- }
- //called every frame
- void Music::Update(double &dt)
- {
- dMusicTimer -= dt;
- if(dMusicTimer <=0.0)
- {
- channel->stop();
- musicPlaying = NOTHING;
- dMusicTimer = 0.0;
- }
- system->update();
- }
- //use this to set the playing music
- void Music::SetMusic(MUSIC music)
- {
- if(musicPlaying != music)
- {
- channel->stop();
- switch(music)
- {
- case LOOP1A1:
- system->playSound(FMOD_CHANNEL_FREE, loop1a1, false, &channel);
- dMusicTimer = 283.0; break;
- case LOOP2A1:
- system->playSound(FMOD_CHANNEL_FREE, loop2a1, false, &channel);
- dMusicTimer = 187.0; break;
- case EVENT1A1:
- system->playSound(FMOD_CHANNEL_FREE, event1a1, false, &channel);
- dMusicTimer = 195.0; break;
- case EVENT2A1:
- system->playSound(FMOD_CHANNEL_FREE, event2a1, false, &channel);
- dMusicTimer = 189.0; break;
- case EVENT2B1:
- system->playSound(FMOD_CHANNEL_FREE, event2b1, false, &channel);
- dMusicTimer = 215.0; break;
- case END:
- system->playSound(FMOD_CHANNEL_FREE, end, false, &channel);
- dMusicTimer = 242.0; break;
- case HARDCORE_DISCO:
- system->playSound(FMOD_CHANNEL_FREE, hardcore_disco, false, &channel);
- dMusicTimer = 193.0; break;
- case BURNING_ROME:
- system->playSound(FMOD_CHANNEL_FREE, burning_rome, false, &channel);
- dMusicTimer = 174.0; break;
- case JUST_HESITATION:
- system->playSound(FMOD_CHANNEL_FREE, just_hesitation, false, &channel);
- dMusicTimer = 199.0; break;
- case ASDF:
- system->playSound(FMOD_CHANNEL_FREE, asdf, false, &channel);
- dMusicTimer = 128.0; break;
- default:
- break;
- }
- musicPlaying = music;
- }
- else
- {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement