19162c3688
Some of the plugins are not yet supported. If you're feeling brave you can build from source using ant.
66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
var allSounds = Packages.net.canarymod.api.world.effects.SoundEffect.Type.values(),
|
|
cmSoundEffect = Packages.net.canarymod.api.world.effects.SoundEffect,
|
|
foreach = require('utils').foreach,
|
|
i = 0,
|
|
len = allSounds.length,
|
|
sound,
|
|
soundName;
|
|
|
|
function playSound(sound, locationOrHasLocation, volume, pitch ) {
|
|
var location = null;
|
|
if (!locationOrHasLocation)
|
|
return;
|
|
if (locationOrHasLocation.world){
|
|
location = locationOrHasLocation;
|
|
} else {
|
|
locationOrHasLocation = locationOrHasLocation.location;
|
|
if (locationOrHasLocation && locationOrHasLocation.world ){
|
|
location = locationOrHasLocation;
|
|
}
|
|
}
|
|
if (!location){
|
|
console.warn('sounds.play() needs a location');
|
|
return;
|
|
}
|
|
if (typeof volume == 'undefined')
|
|
volume = 1;
|
|
if (typeof pitch == 'undefined')
|
|
pitch = 1;
|
|
var soundEffect = new cmSoundEffect(sound, location.x, location.y, location.z, volume, pitch);
|
|
location.world.playSound(soundEffect);
|
|
}
|
|
|
|
for ( ; i < len; i++ ) {
|
|
sound = allSounds[i];
|
|
soundName = '' + sound.name();
|
|
var methodName = soundName.toLowerCase().replace(/_(.)/g,function(a,b){ return b.toUpperCase();});
|
|
exports[methodName] = (function(sound){
|
|
return function()
|
|
{
|
|
switch (arguments.length) {
|
|
case 3:
|
|
playSound(sound, arguments[0], arguments[1], arguments[2]);
|
|
break;
|
|
case 2:
|
|
// TODO: possible combinations:
|
|
// location, volume,
|
|
// volume pitch
|
|
playSound(sound, arguments[0],arguments[1]);
|
|
break;
|
|
case 1:
|
|
playSound(sound, arguments[0]);
|
|
break;
|
|
case 0:
|
|
// play the sound at full vol, medium pitch for all players
|
|
//
|
|
foreach( server.playerList, function(player) {
|
|
playSound(sound, player, 1, 0);
|
|
});
|
|
default:
|
|
}
|
|
};
|
|
})(sound);
|
|
}
|
|
|
|
exports.play = playSound;
|