// ==================== ЧАТ ==================== import { state } from '../core/state.js'; import { playSound } from '../audio/sound-engine.js'; const chatMessages = []; const MAX_CHAT_MESSAGES = 20; export function addChatMessage(sender, message) { const time = new Date().toLocaleTimeString('ru-RU', { hour: '2-digit', minute: '2-digit' }); chatMessages.push({ sender, message, time }); if (chatMessages.length > MAX_CHAT_MESSAGES) { chatMessages.shift(); } renderChatMessages(); } export function renderChatMessages() { const chatMessagesEl = document.getElementById('chatMessages'); if (!chatMessagesEl) return; chatMessagesEl.innerHTML = chatMessages.map(m => `
${m.time} ${m.sender}: ${m.message}
` ).join(''); // Прокручиваем вниз chatMessagesEl.scrollTop = chatMessagesEl.scrollHeight; } export function sendChatMessage(message) { if (!message || message.trim() === '') return; if (state.isMultiplayer && state.socket && state.socket.connected) { state.socket.emit('chat_message', { message: message.trim() }); } else { addChatMessage('Вы', message.trim()); } } export function initChat() { document.getElementById('chatToggle').onclick = () => { playSound('click'); state.chatOpen = !state.chatOpen; document.getElementById('chatPanel').style.display = state.chatOpen ? 'block' : 'none'; if (state.chatOpen) { document.getElementById('chatInput').focus(); } }; document.getElementById('chatClose').onclick = () => { playSound('click'); state.chatOpen = false; document.getElementById('chatPanel').style.display = 'none'; }; document.getElementById('chatSend').onclick = () => { const input = document.getElementById('chatInput'); sendChatMessage(input.value); input.value = ''; }; document.getElementById('chatInput').addEventListener('keypress', (e) => { if (e.key === 'Enter') { sendChatMessage(e.target.value); e.target.value = ''; } }); }