Add a multimedia plugin to respond to images/audio/video server commands

This commit is contained in:
Brenden Tuck 2019-08-08 20:30:16 -04:00
parent 4f98ac4596
commit f0651aa04c
2 changed files with 54 additions and 0 deletions

View file

@ -0,0 +1,53 @@
/*
*
* Evennia Webclient multimedia outputs plugin
*
* in evennia python code:
*
* target.msg( image="URL" )
* target.msg( audio="URL" )
* target.msg( video="URL" )
*
*/
let multimedia_plugin = (function () {
//
var image = function (args, kwargs) {
var mwin = $("#messagewindow");
mwin.append("<img src='"+ args[0] +"'/>");
mwin.scrollTop(mwin[0].scrollHeight);
}
var audio = function (args, kwargs) {
// create an HTML5 audio control (only .mp3 is fully compatible with all major browsers)
var mwin = $("#messagewindow");
mwin.append("<audio controls='' autoplay='' style='height:17px;width:175px'>" +
"<source src='"+ args[0] +"'/>" +
"</audio>");
mwin.scrollTop(mwin[0].scrollHeight);
}
var video = function (args, kwargs) {
// create an HTML5 video element (only h264 .mp4 is compatible with all major browsers)
var mwin = $("#messagewindow");
mwin.append("<video controls='' autoplay=''>" +
"<source src='"+ args[0] +"'/>" +
"</video>");
mwin.scrollTop(mwin[0].scrollHeight);
}
//
// Mandatory plugin init function
var init = function () {
Evennia = window.Evennia;
Evennia.emitter.on('image', image); // capture "image" commands
Evennia.emitter.on('audio', audio); // capture "audio" commands
Evennia.emitter.on('video', video); // capture "video" commands
console.log('Multimedia plugin initialized');
}
return {
init: init,
}
})();
plugin_handler.add('multimedia_plugin', multimedia_plugin);

View file

@ -93,6 +93,7 @@ JQuery available.
-->
<script src={% static "webclient/js/plugins/default_in.js" %} language="javascript" type="text/javascript"></script>
<script src={% static "webclient/js/plugins/default_out.js" %} language="javascript" type="text/javascript"></script>
<script src={% static "webclient/js/plugins/multimedia.js" %} language="javascript" type="text/javascript"></script>
{% endblock %}
<script src="https://cdn.rawgit.com/ejci/favico.js/master/favico-0.3.10.min.js" language="javascript" type="text/javascript" charset="utf-8"></script>