mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-11-18 00:49:42 +01:00
195 lines
5.2 KiB
ActionScript
195 lines
5.2 KiB
ActionScript
|
package {
|
|||
|
import flash.display.*;
|
|||
|
import flash.media.*;
|
|||
|
import flash.events.*;
|
|||
|
|
|||
|
public class musicclass extends Sprite {
|
|||
|
//For Music stuff
|
|||
|
public function play(t:int):void {
|
|||
|
if (currentsong !=t) {
|
|||
|
if (currentsong != -1) {
|
|||
|
//Stop the old song first
|
|||
|
musicchannel.stop();
|
|||
|
if (currentsong != 0) {
|
|||
|
musicchannel.removeEventListener(Event.SOUND_COMPLETE, loopmusic);
|
|||
|
}
|
|||
|
}
|
|||
|
if (t != -1) {
|
|||
|
musicfade = 0;
|
|||
|
currentsong = t;
|
|||
|
if (currentsong == 0 || currentsong == 7) {
|
|||
|
//Level Complete theme, no fade in or repeat
|
|||
|
musicchannel = musicchan[currentsong].play(0);
|
|||
|
musicchannel.soundTransform = new SoundTransform(1.0);
|
|||
|
}else {
|
|||
|
musicfadein = 90;
|
|||
|
musicchannel = musicchan[currentsong].play(0);
|
|||
|
musicchannel.soundTransform = new SoundTransform(0);
|
|||
|
musicchannel.addEventListener(Event.SOUND_COMPLETE, loopmusic);
|
|||
|
}
|
|||
|
}else {
|
|||
|
currentsong = -1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function loopmusic(e:Event):void {
|
|||
|
musicchannel.removeEventListener(Event.SOUND_COMPLETE, loopmusic);
|
|||
|
if(currentsong>-1){
|
|||
|
musicchannel = musicchan[currentsong].play();
|
|||
|
musicchannel.addEventListener(Event.SOUND_COMPLETE, loopmusic);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function stopmusic(e:Event):void {
|
|||
|
musicchannel.removeEventListener(Event.SOUND_COMPLETE, stopmusic);
|
|||
|
musicchannel.stop();
|
|||
|
currentsong = -1;
|
|||
|
}
|
|||
|
|
|||
|
public function haltdasmusik():void {
|
|||
|
musicchannel.removeEventListener(Event.SOUND_COMPLETE, stopmusic);
|
|||
|
musicchannel.stop();
|
|||
|
resumesong = currentsong;
|
|||
|
currentsong = -1;
|
|||
|
}
|
|||
|
|
|||
|
public function silencedasmusik():void {
|
|||
|
if(currentsong>-1){
|
|||
|
musicchannel.soundTransform = new SoundTransform(0);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function fadeout():void {
|
|||
|
if(currentsong>-1){
|
|||
|
if (musicfade == 0) {
|
|||
|
musicchannel.removeEventListener(Event.SOUND_COMPLETE, stopmusic);
|
|||
|
musicfade = 61;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function processmusicfade():void {
|
|||
|
musicfade--;
|
|||
|
if (musicfade > 0) {
|
|||
|
musicchannel.soundTransform = new SoundTransform(musicfade / 60);
|
|||
|
}else {
|
|||
|
musicchannel.stop();
|
|||
|
currentsong = -1;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function processmusicfadein():void {
|
|||
|
musicfadein--;
|
|||
|
if (musicfadein > 0) {
|
|||
|
musicchannel.soundTransform = new SoundTransform((90-musicfadein) / 90 );
|
|||
|
}else {
|
|||
|
musicchannel.soundTransform = new SoundTransform(1.0);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public function processmusic():void {
|
|||
|
if (musicfade > 0) processmusicfade();
|
|||
|
if (musicfadein > 0) processmusicfadein();
|
|||
|
|
|||
|
if (nicefade == 1 && currentsong==-1) {
|
|||
|
play(nicechange);
|
|||
|
nicechange = -1; nicefade = 0;
|
|||
|
}
|
|||
|
|
|||
|
musicstopother--;
|
|||
|
if (musicstopother == 1) {
|
|||
|
musicstopother = 0;
|
|||
|
if (currentmusicchan == 0) musicchannel2.stop();
|
|||
|
if (currentmusicchan == 1) musicchannel.stop();
|
|||
|
}
|
|||
|
if (musicstopother < 0) musicstopother = 0;
|
|||
|
|
|||
|
musicchancur--;
|
|||
|
if (musicchancur <= 0 && currentsong > -1 && musicchanlen > 0) {
|
|||
|
musicchancur = musicchanlen;
|
|||
|
if (currentmusicchan == 0) {
|
|||
|
musicchannel2 = musicchan[currentsong].play();
|
|||
|
musicstopother = 3;
|
|||
|
currentmusicchan = 1;
|
|||
|
}else {
|
|||
|
musicchannel = musicchan[currentsong].play();
|
|||
|
musicstopother = 3;
|
|||
|
currentmusicchan = 0;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function niceplay(t:int):void {
|
|||
|
//important: do nothing if the correct song is playing!
|
|||
|
if(currentsong!=t){
|
|||
|
if(currentsong!=-1) fadeout();
|
|||
|
nicefade = 1;
|
|||
|
nicechange = t;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function musicroom(x:int, y:int):int {
|
|||
|
return x + (y * 20);
|
|||
|
}
|
|||
|
|
|||
|
public function changemusicarea(x:int, y:int):void {
|
|||
|
switch(musicroom(x, y)) {
|
|||
|
case musicroom(11, 4):
|
|||
|
niceplay(2);
|
|||
|
break;
|
|||
|
|
|||
|
case musicroom(2, 4):
|
|||
|
case musicroom(7, 15):
|
|||
|
niceplay(3);
|
|||
|
break;
|
|||
|
|
|||
|
case musicroom(18, 1):
|
|||
|
case musicroom(15, 0):
|
|||
|
niceplay(12);
|
|||
|
break;
|
|||
|
|
|||
|
case musicroom(0, 0):
|
|||
|
case musicroom(0, 16):
|
|||
|
case musicroom(2, 11):
|
|||
|
case musicroom(7, 9):
|
|||
|
case musicroom(8, 11):
|
|||
|
case musicroom(13, 2):
|
|||
|
case musicroom(17, 12):
|
|||
|
case musicroom(14, 19):
|
|||
|
case musicroom(17, 17):
|
|||
|
niceplay(4);
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
niceplay(1);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public var musicchan:Array = new Array();
|
|||
|
public var musicchannel:SoundChannel, musicchannel2:SoundChannel;
|
|||
|
public var currentmusicchan:int, musicchanlen:int, musicchancur:int, musicstopother:int, resumesong:int;
|
|||
|
public var currentsong:int, musicfade:int, musicfadein:int;
|
|||
|
|
|||
|
public var nicefade:int, nicechange:int;
|
|||
|
|
|||
|
//Play a sound effect! There are 16 channels, which iterate
|
|||
|
public function initefchannels():void {
|
|||
|
for (var i:int = 0; i < 16; i++) efchannel.push(new SoundChannel);
|
|||
|
}
|
|||
|
|
|||
|
public function playef(t:int, offset:int=0):void {
|
|||
|
efchannel[currentefchan] = efchan[t].play(offset);
|
|||
|
currentefchan++;
|
|||
|
if (currentefchan > 15) currentefchan -= 16;
|
|||
|
}
|
|||
|
|
|||
|
public var currentefchan:int;
|
|||
|
public var efchannel:Array = new Array();
|
|||
|
public var efchan:Array = new Array();
|
|||
|
public var numplays:int;
|
|||
|
}
|
|||
|
}
|