/* Project Starshatter 4.5 Destroyer Studios LLC Copyright © 1997-2004. All Rights Reserved. SUBSYSTEM: Stars.exe FILE: MusicDirector.h AUTHOR: John DiCamillo OVERVIEW ======== Music Director class to manage selection, setup, and playback of background music tracks for both menu and game modes */ #ifndef MusicDirector_h #define MusicDirector_h #include "Types.h" #include "List.h" #include "Text.h" // +-------------------------------------------------------------------+ class MusicTrack; // +-------------------------------------------------------------------+ class MusicDirector { public: enum MODES { NONE, // menu modes: MENU, INTRO, BRIEFING, DEBRIEFING, PROMOTION, VICTORY, DEFEAT, CREDITS, // in game modes: FLIGHT, COMBAT, LAUNCH, RECOVERY, // special modes: SHUTDOWN }; enum TRANSITIONS { CUT, FADE_OUT, FADE_IN, FADE_BOTH, CROSS_FADE }; MusicDirector(); ~MusicDirector(); // Operations: void ExecFrame(); void ScanTracks(); int CheckMode(int mode); int GetMode() const { return mode; } static void Initialize(); static void Close(); static MusicDirector* GetInstance(); static void SetMode(int mode); static const char* GetModeName(int mode); static bool IsNoMusic(); protected: void StartThread(); void StopThread(); void GetNextTrack(int index); void ShuffleTracks(); int mode; int transition; MusicTrack* track; MusicTrack* next_track; List menu_tracks; List intro_tracks; List brief_tracks; List debrief_tracks; List promote_tracks; List flight_tracks; List combat_tracks; List launch_tracks; List recovery_tracks; List victory_tracks; List defeat_tracks; List credit_tracks; bool no_music; HANDLE hproc; ThreadSync sync; }; #endif MusicDirector_h