Skip to content

Instantly share code, notes, and snippets.

@douglasZwick
Created April 10, 2011 02:56
Show Gist options
  • Select an option

  • Save douglasZwick/912000 to your computer and use it in GitHub Desktop.

Select an option

Save douglasZwick/912000 to your computer and use it in GitHub Desktop.
W. T. Fuck
soundManager.url = 'resources/soundmanager/swf/';
soundManager.useHTML5Audio = true;
soundManager.useFlashBlock = false;
var TitleWrapper = function()
{
var delay = null,
frameNumber = 0,
afterFirstLoop = false,
started = false,
introMusicAudio = null,
loopMusicAudio = null,
cursor1Audio = null,
cursor2Audio = null,
selectionAudio = null,
self = this;
this.setup = function()
{
var imageCount = 160; // One for each image in the animation, plus each mute button state
var audioCount = 5; // One for the intro and one for the loop of the song
var onImageLoaded = function() // This function is called every time an image's onload
{ // event occurs
console.log("Image loaded: ", this, imageCount);
imageCount--;
var sixteenths = Math.floor(((160 - imageCount) * 16) / 160);
if (sixteenths < 10)
{
document.getElementById("videoprogress").src = "resources/progress/video0" + sixteenths + ".png";
} else
{
document.getElementById("videoprogress").src = "resources/progress/video" + sixteenths + ".png";
}
if (!imageCount && !audioCount && !started)
{
started = true;
beginAnimation();
}
}
var onAudioLoaded = function() // This function is called every time an audio's onload
{ // event occurs
console.log("Audio loaded: ", this, audioCount);
audioCount--;
var sixteenths = Math.floor(((5 - audioCount) * 16) / 5);
if (sixteenths < 10)
{
document.getElementById("audioprogress").src = "resources/progress/audio0" + sixteenths + ".png";
} else
{
document.getElementById("audioprogress").src = "resources/progress/audio" + sixteenths + ".png";
}
if (!imageCount && !audioCount && !started)
{
started = true;
beginAnimation();
}
}
var beginAnimation = function()
{
document.getElementById("mainbody").className = "titlebody";
document.getElementById("vprogdiv").style.display = "none";
document.getElementById("aprogdiv").style.display = "none";
// if (localStorage["isMuted"] == "true")
if (window.localStorage.isMuted == "true")
{
onMute();
}
document.getElementById("mutebutton").style.display = "block";
document.getElementById("animation").src = "resources/animation/000.png";
self.displayCurrentFrame();
}
var onAudioFailed = function() // This function is called when something non-vital fails to load (i.e.
{ // sound) -- assetCount is still decremented
console.log("Audio failed: ", this, audioCount);
audioCount--;
if (!imageCount && !audioCount && !started)
{
started = true;
beginAnimation(); // The animation can still play without audio, just in case of whatever
}
}
for(var i = 0; i <= 153; i++) // Creates 154 new Image objects for the purpose of pre-loading their srcs
{
var imageTemp = new Image();
if (i < 10)
{
imageTemp.src = "resources/animation/00" + i + ".png";
} else
if (i < 100)
{
imageTemp.src = "resources/animation/0" + i + ".png";
} else
{
imageTemp.src = "resources/animation/" + i + ".png";
}
imageTemp.addEventListener("load", onImageLoaded, true);
}
var muteImage = new Image();
muteImage.src = "resources/mute.png";
muteImage.addEventListener("load", onImageLoaded, true);
var muteOverImage = new Image();
muteOverImage.src = "resources/mutehover.png";
muteOverImage.addEventListener("load", onImageLoaded, true);
var muteDownImage = new Image();
muteDownImage.src = "resources/muteactive.png";
muteDownImage.addEventListener("load", onImageLoaded, true);
var unmuteImage = new Image();
unmuteImage.src = "resources/unmute.png";
unmuteImage.addEventListener("load", onImageLoaded, true);
var unmuteOverImage = new Image();
unmuteOverImage.src = "resources/unmutehover.png";
unmuteOverImage.addEventListener("load", onImageLoaded, true);
var unmuteDownImage = new Image();
unmuteDownImage.src = "resources/unmuteactive.png";
unmuteDownImage.addEventListener("load", onImageLoaded, true);
soundManager.onready(function()
{
introMusicAudio = soundManager.createSound(
{
id: 'intro',
url: 'resources/audio/titlethemeintro.mp3',
onload: function()
{
soundManager._writeDebug("*** *** *** Intro audio loaded *** *** ***");
onAudioLoaded();
},
onfinish: function()
{
soundManager._writeDebug("Intro finished. Playing loop....");
soundManager.play('loop');
},
autoLoad: true
});
loopMusicAudio = soundManager.createSound(
{
id: 'loop',
url: 'resources/audio/titlethemeloop.mp3',
onload: function()
{
soundManager._writeDebug("*** *** *** Loop audio loaded *** *** ***");
onAudioLoaded();
},
onfinish: function()
{
soundManager._writeDebug("Loop finished. Replaying loop....");
this.play();
},
autoLoad: true
});
cursor1Audio = soundManager.createSound(
{
id: 'cursor1',
url: 'resources/audio/cursor1.wav',
onload: function()
{
soundManager._writeDebug("*** *** *** Cursor 1 audio loaded *** *** ***");
onAudioLoaded();
},
autoLoad: true
});
cursor2Audio = soundManager.createSound(
{
id: 'cursor2',
url: 'resources/audio/cursor2.wav',
onload: function()
{
soundManager._writeDebug("*** *** *** Cursor 2 audio loaded *** *** ***");
onAudioLoaded();
},
autoLoad: true
});
selectionAudio = soundManager.createSound(
{
id: 'selection',
url: 'resources/audio/selection.wav',
onload: function()
{
soundManager._writeDebug("*** *** *** Selection audio loaded *** *** ***");
onAudioLoaded();
},
autoLoad: true
});
});
soundManager.ontimeout(function()
{
console.log("Sound Manager 2 failed to start properly. REASON: snrnp");
onAssetFailed();
onAssetFailed();
onAssetFailed();
onAssetFailed();
onAssetFailed();
});
}
this.displayCurrentFrame = function()
{
if(frameNumber == 0)
{
delay = 2000;
} else
if(frameNumber == 4 || frameNumber == 8 || frameNumber == 12 ||
frameNumber == 13 || frameNumber == 44 || frameNumber == 110)
{ // Certain frames have strategically-timed delays. Others are simply
delay = 4000; // animation transitions and so have only a brief delay
} else
if(frameNumber == 124 || frameNumber == 137 || frameNumber == 150)
{
delay = 6000;
} else
if(frameNumber == 0 || frameNumber == 114 || frameNumber == 115 ||
frameNumber == 128 || frameNumber == 141)
{
delay = 2000;
} else
if(frameNumber == 119 || frameNumber == 120 || frameNumber == 121 ||
frameNumber == 122 || frameNumber == 123 || frameNumber == 132 ||
frameNumber == 133 || frameNumber == 134 || frameNumber == 135 ||
frameNumber == 136 || frameNumber == 145 || frameNumber == 146 ||
frameNumber == 147 || frameNumber == 148 || frameNumber == 149)
{
delay = 1000;
} else
if(frameNumber == 1 || frameNumber == 2 || frameNumber == 3 ||
frameNumber == 5 || frameNumber == 6 || frameNumber == 7 ||
frameNumber == 9 || frameNumber == 10 || frameNumber == 11 ||
frameNumber == 111 || frameNumber == 112 || frameNumber == 113 ||
frameNumber == 116 || frameNumber == 117 || frameNumber == 118 ||
frameNumber == 125 || frameNumber == 126 || frameNumber == 127 ||
frameNumber == 129 || frameNumber == 130 || frameNumber == 131 ||
frameNumber == 138 || frameNumber == 139 || frameNumber == 140 ||
frameNumber == 142 || frameNumber == 143 || frameNumber == 144 ||
frameNumber == 151 || frameNumber == 152 || frameNumber == 153)
{
delay = 100;
} else
{
delay = 17;
}
if(frameNumber == 9 && !afterFirstLoop) // titlethemeintro.mp3 begins on the ninth frame of the animation,
{ // but only the first time through the loop
soundManager.play('intro');
afterFirstLoop = true;
$('#animation').addClass('clickable');
document.getElementById("animation").onclick = function()
{
soundManager.pause('intro');
soundManager.pause('loop');
soundManager.play('selection');
document.getElementById("mainbody").className = "blankbody";
window.setTimeout(function() { window.location = "stageselect/index.html"; }, 500);
}
}
var timer = window.setTimeout(function() { self.displayCurrentFrame(); }, delay); // Here's where the delay
// actually begins
if(frameNumber < 10) // The newly-incremented frame number becomes the filename of
{ // the src for the next frame (with leading zeroes as appropriate)
document.getElementById("animation").src = "resources/animation/00" + frameNumber + ".png";
} else
if(frameNumber < 100)
{
document.getElementById("animation").src = "resources/animation/0" + frameNumber + ".png";
} else
{
document.getElementById("animation").src = "resources/animation/" + frameNumber + ".png";
}
if(frameNumber != 153) // If the animation isn't on the last frame, then it increments.
{
frameNumber++;
} else // Otherwise, it loops back to frame eight.
{
frameNumber = 8;
}
}
var onMute = function()
{
introMusicAudio.toggleMute();
loopMusicAudio.toggleMute();
cursor1Audio.toggleMute();
cursor2Audio.toggleMute();
selectionAudio.toggleMute();
$('#mutebutton').toggleClass('muted');
soundManager.play('cursor2');
if ($('#mutebutton').hasClass('muted'))
{
// localStorage["isMuted"] = "true";
window.localStorage.isMuted = "true";
} else
{
// localStorage["isMuted"] = "false";
window.localStorage.isMuted = "false";
}
}
document.getElementById("mutebutton").onclick = onMute;
document.getElementById("mutebutton").onmouseover = function() { soundManager.play('cursor1'); };
this.setup();
}
window.onload = function()
{
window.titlewrapper = new TitleWrapper();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment