Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Please give credit if you use this code
- //This code allows for music with a non-looping intro to be looped correctly
- //To use, you need to split the song into 2 audio files containing the intro and the loop
- //using
- using Microsoft.Xna.Framework.Audio;
- //before SetDefaults
- public int startMusic;
- public int loopMusic;
- public int loopCountMax = x; //the duration of the introduction in frames
- public int loopCountdown = x+16; //the countdown leading up to the switch from intro to loop - fadeout takes 16 frames
- public bool isLooping = false;
- public bool switchMusic = false; //use this to implement a phase 2 if desired
- public int startMusic2;
- public int loopMusic2;
- public int loopCountMax2 = y;
- public int loopCountdown2 = y+60; //fadeout takes 60 frames
- public bool isLooping2 = false;
- //in SetDefaults
- startMusic = mod.GetSoundSlot(SoundType.Music, "Sounds/Music/Song1Intro");
- loopMusic = mod.GetSoundSlot(SoundType.Music, "Sounds/Music/Song1Loop");
- startMusic2 = mod.GetSoundSlot(SoundType.Music, "Sounds/Music/Song2Intro");
- loopMusic2 = mod.GetSoundSlot(SoundType.Music, "Sounds/Music/Song2Loop");
- music = startMusic;
- //in AI
- if(!switchMusic)
- {
- if(loopCountdown >= loopCountMax)
- {
- for (int m = 1; m < Main.music.Length; m++)
- {
- if (Main.music[m] != null && Main.music[m] != Main.music[startMusic] && Main.music[m].IsPlaying)
- {
- if(Main.musicFade[m] > 0f)
- {
- Main.musicFade[m] -= 0.0625f;
- }
- else if(Main.musicFade[m] <= 0f)
- {
- Main.music[m].Stop(AudioStopOptions.Immediate);
- music = startMusic;
- if(loopCountdown > loopCountMax) loopCountdown = loopCountMax;
- }
- }
- else if (Main.music[m] == Main.music[startMusic]) Main.musicFade[m] = 1f;
- }
- }
- if(loopCountdown == 0 && !isLooping)
- {
- music = loopMusic;
- for (int m = 1; m < Main.music.Length; m++)
- {
- if (Main.music[m] != null && Main.music[m] != Main.music[loopMusic] && Main.music[m].IsPlaying)
- {
- Main.music[m].Stop(AudioStopOptions.Immediate);
- }
- else if (Main.music[m] == Main.music[loopMusic]) Main.musicFade[m] = 1f;
- }
- isLooping = true;
- }
- if(loopCountdown > 0) loopCountdown--;
- }
- else
- {
- if(loopCountdown2 >= loopCountMax2)
- {
- for (int m = 1; m < Main.music.Length; m++)
- {
- if (Main.music[m] != null && Main.music[m] != Main.music[startMusic2] && Main.music[m].IsPlaying)
- {
- if(Main.musicFade[m] > 0f)
- {
- Main.musicFade[m] -= 0.125f;
- // Main.NewText("fading " + Main.musicFade[m], Color.Cyan.R, Color.Cyan.G, Color.Cyan.B);
- }
- else if(Main.musicFade[m] <= 0f)
- {
- Main.music[m].Stop(AudioStopOptions.Immediate);
- music = startMusic2;
- if(loopCountdown2 > loopCountMax2) loopCountdown2 = loopCountMax2;
- // Main.NewText("startmusic2", Color.Cyan.R, Color.Cyan.G, Color.Cyan.B);
- }
- }
- else if (Main.music[m] == Main.music[startMusic2]) Main.musicFade[m] = 1f;
- }
- }
- if(loopCountdown2 == 0 && !isLooping2)
- {
- music = loopMusic2;
- for (int m = 1; m < Main.music.Length; m++)
- {
- if (Main.music[m] != null && Main.music[m] != Main.music[loopMusic2] && Main.music[m].IsPlaying)
- {
- Main.music[m].Stop(AudioStopOptions.Immediate);
- }
- else if (Main.music[m] == Main.music[loopMusic2]) Main.musicFade[m] = 1f;
- }
- isLooping2 = true;
- }
- if(loopCountdown2 > 0) loopCountdown2--;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement