// ==================== РЫНОК ПРЕДЛОЖЕНИЙ ==================== import { state } from '../core/state.js'; import { playSound } from '../audio/sound-engine.js'; let marketPanel, marketClose, marketContent; export function initMarket() { marketPanel = document.getElementById('marketPanel'); marketClose = document.getElementById('marketClose'); marketContent = document.getElementById('marketContent'); if (!marketPanel) return; if (marketClose) marketClose.addEventListener('click', () => closeMarket()); document.addEventListener('toggleMarket', () => toggleMarket()); } export function toggleMarket() { if (!marketPanel) return; if (marketPanel.style.display === 'none' || !marketPanel.style.display) { openMarket(); } else { closeMarket(); } } export function closeMarket() { if (marketPanel) marketPanel.style.display = 'none'; } function openMarket() { if (marketPanel) { marketPanel.style.display = 'block'; renderMarket(); } } function renderMarket() { if (!marketContent) return; if (!state.socket) { marketContent.innerHTML = '

Подключение к серверу...

'; return; } state.socket.emit('market_list', {}, (orders) => { if (!orders || !orders.length) { marketContent.innerHTML = '

Предложений пока нет

'; const btn = document.getElementById('createOrderBtn'); if (btn) btn.addEventListener('click', showCreateOrder); return; } let html = '
'; html += orders.map(o => '
' + (o.offer_item||'') + ' x' + (o.offer_qty||1) + ' ⇄ ' + (o.want_item||'') + ' x' + (o.want_qty||1) + '
' + (o.seller || 'Аноним') + '
').join(''); marketContent.innerHTML = html; const btn = document.getElementById('createOrderBtn'); if (btn) btn.addEventListener('click', showCreateOrder); }); } function showCreateOrder() { if (!marketContent) return; const invKeys = Object.keys(state.inv || {}); const invOpts = invKeys.filter(k => (state.inv[k]||0) > 0).map(k => '').join(''); marketContent.innerHTML = '

Выставить предмет

'; const cancelBtn = document.getElementById('cancelOrder'); if (cancelBtn) cancelBtn.addEventListener('click', () => renderMarket()); const submitBtn = document.getElementById('submitOrder'); if (submitBtn) submitBtn.addEventListener('click', () => { const offerItem = document.getElementById('offerItem'); const wantItem = document.getElementById('wantItem'); if (!offerItem || !wantItem) return; const offer = offerItem.value; const want = wantItem.value.trim(); if (!offer || !want) { alert('Выберите предмет и укажите что хотите получить'); return; } if (state.socket) { state.socket.emit('market_create', { offer_item: offer, offer_qty: 1, want_item: want, want_qty: 1 }); playSound('click'); setTimeout(renderMarket, 500); } }); }