// ================================================================ // Command Form Component // ================================================================ window.onCmdTypeChange = function() { const type = document.getElementById('cmd-type').value; document.getElementById('build-options').style.display = type === 'build' ? '' : 'none'; document.getElementById('recruit-options').style.display = type === 'recruit' ? '' : 'none'; document.getElementById('amount-group').style.display = type === 'recruit' ? '' : 'none'; }; window.renderBuildingDropdown = function() { const town = window.getSelectedTown(); if (!town) return; const bSelect = document.getElementById('building-select'); const bLevels = town.buildings || {}; const bData = town.build_data || {}; const currentVal = bSelect.value; bSelect.innerHTML = ''; // Helper to format seconds -> "1h 30m" or "4m 15s" const formatTime = (secs) => { if (!secs) return ''; const h = Math.floor(secs / 3600); const m = Math.floor((secs % 3600) / 60); const s = secs % 60; if (h > 0) return `${h}h ${m}m`; if (m > 0) return `${m}m ${s}s`; return `${s}s`; }; for (const [key, nameGr] of Object.entries(window.BUILDING_NAMES_GR)) { const level = bLevels[key] !== undefined ? bLevels[key] : "?"; const data = bData[key]; let text = `${nameGr} [Επίπεδο ${level}]`; let buildable = true; if (data) { const w = window.fmt(data.wood || 0); const st = window.fmt(data.stone || 0); const i = window.fmt(data.iron || 0); const t = formatTime(data.build_time); buildable = data.buildable; // Only show costs if the prerequisites are fulfilled and it's not max level if (data.dependencies) { text += ` — Ξ:${w} Π:${st} Α:${i} · ⏱ ${t}`; } else { text += ` — (Μη διαθέσιμο)`; } } const option = document.createElement('option'); option.value = key; option.textContent = (!buildable && data?.dependencies) ? `❌ ${text}` : text; if (!buildable) { option.style.color = '#aa5555'; } bSelect.appendChild(option); } if (currentVal && Array.from(bSelect.options).some(o => o.value === currentVal)) { bSelect.value = currentVal; } }; window.renderBuildQueuePreview = function() { const town = window.getSelectedTown(); const el = document.getElementById('build-queue-preview'); if (!town || !town.build_queue || !town.build_queue.length) { el.innerHTML = 'Build queue: empty'; return; } const items = town.build_queue.map(o => `${o.building_type || o.name || JSON.stringify(o)}` ).join(''); el.innerHTML = `