let currentVehicles = []; let selectedVehicle = null; let impoundVehicles = []; let selectedImpoundVehicle = null; let impoundPrice = 0; let logoUrl = ""; window.addEventListener('message', function(event) { const data = event.data; if (data.action === 'openGarage') { openGarage(data.garage, data.vehicles, data.logo); } else if (data.action === 'openImpound') { openImpound(data.impound, data.vehicles, data.price, data.logo); } else if (data.action === 'closeMenu') { closeAllMenus(); } }); function openGarage(garageName, vehicles, logo) { document.getElementById('garage-container').style.display = 'block'; document.getElementById('garage-title').textContent = garageName; currentVehicles = vehicles; logoUrl = logo; document.getElementById('logo').src = logo; const logoElement = document.getElementById('logo'); logoElement.style.animation = 'rotate 4s linear infinite, bounce 2s ease-in-out infinite'; selectedVehicle = null; updateVehicleDetails(); const vehicleList = document.getElementById('vehicle-list'); vehicleList.innerHTML = ''; if (vehicles.length === 0) { vehicleList.innerHTML = '
Aucun véhicule disponible
'; } else { vehicles.forEach(vehicle => { const vehicleItem = document.createElement('div'); vehicleItem.classList.add('vehicle-item'); vehicleItem.dataset.plate = vehicle.plate; vehicleItem.innerHTML = `
${vehicle.name}
Plaque: ${vehicle.plate}
`; vehicleItem.addEventListener('click', () => selectVehicle(vehicle.plate)); vehicleList.appendChild(vehicleItem); }); } } function openImpound(impoundName, vehicles, price, logo) { document.getElementById('impound-container').style.display = 'block'; document.getElementById('impound-title').textContent = impoundName; impoundVehicles = vehicles; impoundPrice = price; logoUrl = logo; document.getElementById('impound-logo').src = logo; document.getElementById('impound-price').textContent = `Prix: ${price}€`; const logoElement = document.getElementById('impound-logo'); logoElement.style.animation = 'rotate 4s linear infinite, bounce 2s ease-in-out infinite'; selectedImpoundVehicle = null; updateImpoundVehicleDetails(); const vehicleList = document.getElementById('impound-vehicle-list'); vehicleList.innerHTML = ''; if (vehicles.length === 0) { vehicleList.innerHTML = '
Aucun véhicule en fourrière
'; } else { vehicles.forEach(vehicle => { const vehicleItem = document.createElement('div'); vehicleItem.classList.add('vehicle-item'); vehicleItem.dataset.plate = vehicle.plate; vehicleItem.innerHTML = `
${vehicle.name}
Plaque: ${vehicle.plate}
`; vehicleItem.addEventListener('click', () => selectImpoundVehicle(vehicle.plate)); vehicleList.appendChild(vehicleItem); }); } } function selectVehicle(plate) { const vehicleItems = document.querySelectorAll('#vehicle-list .vehicle-item'); vehicleItems.forEach(item => { if (item.dataset.plate === plate) { item.classList.add('selected'); } else { item.classList.remove('selected'); } }); selectedVehicle = currentVehicles.find(v => v.plate === plate); updateVehicleDetails(); } function selectImpoundVehicle(plate) { const vehicleItems = document.querySelectorAll('#impound-vehicle-list .vehicle-item'); vehicleItems.forEach(item => { if (item.dataset.plate === plate) { item.classList.add('selected'); } else { item.classList.remove('selected'); } }); selectedImpoundVehicle = impoundVehicles.find(v => v.plate === plate); updateImpoundVehicleDetails(); } function updateVehicleDetails() { const vehicleName = document.getElementById('vehicle-name'); const vehicleDetails = document.getElementById('vehicle-details'); const spawnButton = document.getElementById('spawn-vehicle'); if (selectedVehicle) { vehicleName.textContent = selectedVehicle.name; const engineHealthPercent = Math.floor((selectedVehicle.engineHealth / 1000) * 100); const bodyHealthPercent = Math.floor((selectedVehicle.bodyHealth / 1000) * 100); const fuelLevelPercent = Math.floor(selectedVehicle.fuelLevel); const dirtLevelPercent = Math.min(100, Math.floor((selectedVehicle.dirtLevel / 15) * 100)); vehicleDetails.innerHTML = `
Plaque:
${selectedVehicle.plate}
État du moteur:
${engineHealthPercent}%
État de la carrosserie:
${bodyHealthPercent}%
Niveau de carburant:
${fuelLevelPercent}%
Niveau de saleté:
${dirtLevelPercent}%
`; spawnButton.disabled = false; } else { vehicleName.textContent = 'Sélectionnez un véhicule'; vehicleDetails.innerHTML = '
Aucun véhicule sélectionné
'; spawnButton.disabled = true; } } function updateImpoundVehicleDetails() { const vehicleName = document.getElementById('impound-vehicle-name'); const vehicleDetails = document.getElementById('impound-vehicle-details'); const releaseButton = document.getElementById('release-vehicle'); if (selectedImpoundVehicle) { vehicleName.textContent = selectedImpoundVehicle.name; const engineHealthPercent = Math.floor((selectedImpoundVehicle.engineHealth / 1000) * 100); const bodyHealthPercent = Math.floor((selectedImpoundVehicle.bodyHealth / 1000) * 100); const fuelLevelPercent = Math.floor(selectedImpoundVehicle.fuelLevel); const dirtLevelPercent = Math.min(100, Math.floor((selectedImpoundVehicle.dirtLevel / 15) * 100)); vehicleDetails.innerHTML = `
Plaque:
${selectedImpoundVehicle.plate}
État du moteur:
${engineHealthPercent}%
État de la carrosserie:
${bodyHealthPercent}%
Niveau de carburant:
${fuelLevelPercent}%
Niveau de saleté:
${dirtLevelPercent}%
`; releaseButton.disabled = false; } else { vehicleName.textContent = 'Sélectionnez un véhicule'; vehicleDetails.innerHTML = '
Aucun véhicule sélectionné
'; releaseButton.disabled = true; } } function getHealthClass(percent) { if (percent > 75) { return 'good'; } else if (percent > 25) { return 'average'; } else { return 'bad'; } } function getDirtClass(percent) { if (percent < 25) { return 'good'; } else if (percent < 75) { return 'average'; } else { return 'bad'; } } function closeAllMenus() { document.getElementById('garage-container').style.display = 'none'; document.getElementById('impound-container').style.display = 'none'; } function postCallback(name, data) { fetch(`https://${GetParentResourceName()}/${name}`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: JSON.stringify(data) }); } document.addEventListener('DOMContentLoaded', function() { document.getElementById('close-garage').addEventListener('click', function() { postCallback('close', {}); }); document.getElementById('close-impound').addEventListener('click', function() { postCallback('closeImpound', {}); }); document.getElementById('spawn-vehicle').addEventListener('click', function() { if (selectedVehicle) { postCallback('spawnVehicle', { vehicle: selectedVehicle }); } }); document.getElementById('store-vehicle').addEventListener('click', function() { postCallback('storeVehicle', {}); }); document.getElementById('release-vehicle').addEventListener('click', function() { if (selectedImpoundVehicle) { postCallback('releaseVehicle', { vehicle: selectedImpoundVehicle }); } }); }); document.addEventListener('keyup', function(event) { if (event.key === 'Escape') { postCallback('close', {}); } });