package com.weem.epicinventor.utility; public class GameMusicFade extends Thread { private float fadeStartGain; private float fadeEndGain; private float fadeCurrentGain; private float fadeTime; private float fadeTimeOffset; private GameSong gameSong; private boolean isFading; private boolean stop; private static long RATE = 100L; public GameMusicFade(GameSong gs, float fs, float fe, float ft, float fto) { gameSong = gs; stop = false; setFade(fs, fe, ft, fto); start(); } protected void setFade(float fs, float fe, float ft, float fto) { fadeCurrentGain = fadeStartGain = fs; fadeEndGain = fe; fadeTime = ft; fadeTimeOffset = fto; } public boolean isFading() { return isFading; } public void fadeStop() { stop = true; } public void run() { try { Thread.sleep((int) (fadeTimeOffset*1000.0f)); isFading = true; if(fadeEndGain < fadeStartGain) { gameSong.startFadeOut(); } int maxLoops = (int)(fadeTime*(1000.0f/(float)RATE)); for(int i = 0; i < maxLoops; i++) { if(!stop) { gameSong.setVolume(fadeCurrentGain); fadeCurrentGain += (fadeEndGain - fadeStartGain) / (float)maxLoops; Thread.sleep(RATE); } } if(!stop) { gameSong.setVolume(fadeEndGain); } isFading = false; if(fadeEndGain < fadeStartGain) { gameSong.endFadeOut(); } } catch (Exception e) { EIError.debugMsg(e.getMessage()); } } }