Files
esx_core/html/js/app.js
T
2018-09-01 17:43:35 +02:00

113 lines
2.0 KiB
JavaScript

(() => {
ESX = {};
ESX.HUDElements = [];
ESX.setHUDDisplay = function(opacity){
$('#hud').css('opacity', opacity);
}
ESX.insertHUDElement = function(name, index, priority, html, data){
ESX.HUDElements.push({
name : name,
index : index,
priority : priority,
html : html,
data : data
})
ESX.HUDElements.sort((a,b) => {
return a.index - b.index || b.priority - a.priority;
})
}
ESX.updateHUDElement = function(name, data){
for(let i=0; i<ESX.HUDElements.length; i++)
if(ESX.HUDElements[i].name == name)
ESX.HUDElements[i].data = data;
ESX.refreshHUD();
}
ESX.deleteHUDElement = function(name){
for(let i=0; i<ESX.HUDElements.length; i++)
if(ESX.HUDElements[i].name == name)
ESX.HUDElements.splice(i, 1);
ESX.refreshHUD();
}
ESX.refreshHUD = function(){
$('#hud').html('');
for(let i=0; i<ESX.HUDElements.length; i++){
let html = Mustache.render(ESX.HUDElements[i].html, ESX.HUDElements[i].data);
$('#hud').append(html);
}
}
ESX.inventoryNotification = function(add, item, count){
let notif = '';
if(add)
notif += '+';
else
notif += '-';
notif += count + ' ' + item.label;
let elem = $('<div>' + notif + '</div>');
$('#inventory_notifications').append(elem);
$(elem).delay(3000).fadeOut(1000, function(){
elem.remove();
})
}
window.onData = (data) => {
switch(data.action){
case 'setHUDDisplay' : {
ESX.setHUDDisplay(data.opacity);
break;
}
case 'insertHUDElement' : {
ESX.insertHUDElement(data.name, data.index, data.priority, data.html, data.data);
break;
}
case 'updateHUDElement' : {
ESX.updateHUDElement(data.name, data.data);
break;
}
case 'deleteHUDElement' : {
ESX.deleteHUDElement(data.name);
break;
}
case 'inventoryNotification' : {
ESX.inventoryNotification(data.add, data.item, data.count)
}
}
}
window.onload = function(e){
window.addEventListener('message', (event) => {
onData(event.data)
});
}
})()