Path: blob/master/SonicMania/Objects/Global/Music.h
338 views
#ifndef OBJ_MUSIC_H1#define OBJ_MUSIC_H23#include "Game.h"45typedef enum {6TRACK_NONE = -1,7TRACK_STAGE = 0,8TRACK_INVINCIBLE = 1,9TRACK_SNEAKERS = 2,10TRACK_MINIBOSS = 3,11TRACK_HBHBOSS = 4,12TRACK_EGGMAN1 = 5,13TRACK_EGGMAN2 = 6,14TRACK_ACTCLEAR = 7,15TRACK_DROWNING = 8,16TRACK_GAMEOVER = 9,17TRACK_SUPER = 10,18#if MANIA_USE_PLUS19TRACK_HBHMISCHIEF = 11,20TRACK_SOUNDTEST = 12,21#else22TRACK_SOUNDTEST = 11,23TRACK_HBHMISCHIEF = 12,24#endif25TRACK_1UP = 13,2627// Aliases/Reused slots28TRACK_METALSONIC = TRACK_EGGMAN1,29TRACK_RUBYPRESENCE = TRACK_EGGMAN1,30TRACK_BUDDYBEAT = TRACK_EGGMAN2,31TRACK_ERZBOSS = TRACK_SUPER,32} MusicTracks;3334typedef enum {35TRACK_PRIORITY_NONE = 0,36TRACK_PRIORITY_ANY = 10,37TRACK_PRIORITY_POWERUP = 100,38TRACK_PRIORITY_SUPER = 1000,39TRACK_PRIORITY_DROWN = 10000,40TRACK_PRIORITY_1UP = 100000,41} TrackPriorityValues;4243// Object Class44struct ObjectMusic {45RSDK_OBJECT46char trackNames[16][32];47uint32 trackLoops[16];48int32 trackStartPos;49int32 channelID;50int32 activeTrack;51#if MANIA_USE_PLUS52int32 nextTrack;53int32 restartTrackID;54#else55int32 prevTrack;56int32 queuedTrack;57int32 nextTrack;58bool32 playingRegularTrack;59bool32 playingDrownTrack;60bool32 playing1UPTrack;61#endif62uint16 aniFrames;63};6465// Entity Class66struct EntityMusic {67RSDK_ENTITY68StateMachine(state);69String trackFile;70String soundTestTitle;71int32 trackID;72uint32 trackLoop;73bool32 playOnLoad;74bool32 restartTrack;75int32 timer;76int32 trackPriority;77int32 trackStartPos;78float volume;79float fadeSpeed;80Animator animator;81};8283// Object Struct84extern ObjectMusic *Music;8586// Standard Entity Events87void Music_Update(void);88void Music_LateUpdate(void);89void Music_StaticUpdate(void);90void Music_Draw(void);91void Music_Create(void *data);92void Music_StageLoad(void);93#if GAME_INCLUDE_EDITOR94void Music_EditorDraw(void);95void Music_EditorLoad(void);96#endif97void Music_Serialize(void);9899// Extra Entity Functions100101// Adds a new music track102void Music_SetMusicTrack(const char *path, uint8 track, uint32 loopPoint);103// stops the currently playing music stream104void Music_Stop(void);105// pauses the currently playing music stream106void Music_Pause(void);107// resumes the currently playing music stream108void Music_Resume(void);109// checks if there is music currently playing110bool32 Music_IsPlaying(void);111112// Plays a jingle113void Music_PlayJingle(uint8 trackID);114// Plays a track, doesn't use the music stack at all115void Music_PlayTrack(uint8 trackID);116// Play a track using the info from a music entity117void Music_PlayTrackPtr(EntityMusic *entity);118119#if MANIA_USE_PLUS120void Music_PlayAutoMusicQueuedTrack(uint8 trackID);121void Music_HandleMusicStack_Powerups(EntityMusic *entity);122bool32 Music_CheckMusicStack_Active(void);123void Music_GetNextTrackStartPos(EntityMusic *entity);124#endif125void Music_JingleFadeOut(uint8 trackID, bool32 transitionFade);126#if MANIA_USE_PLUS127void Music_FinishJingle(EntityMusic *entity);128void Music_ClearMusicStack(void);129#endif130void Music_TransitionTrack(uint8 trackID, float fadeSpeed);131void Music_FadeOut(float fadeSpeed);132133void Music_State_PlayOnLoad(void);134#if MANIA_USE_PLUS135void Music_State_Jingle(void);136void Music_State_JingleFade(void);137#endif138void Music_State_FadeTrackIn(void);139void Music_State_StopOnFade(void);140void Music_State_PlayOnFade(void);141#if !MANIA_USE_PLUS142void Music_State_1UPJingle(void);143#endif144145#endif //! OBJ_MUSIC_H146147148