67 lines
2.1 KiB
JavaScript
67 lines
2.1 KiB
JavaScript
// ==================== ЧАТ ====================
|
|
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 =>
|
|
`<div style="margin-bottom:4px;"><span style="color:#aaa;font-size:11px;">${m.time}</span> <strong style="color:${m.sender === 'Система' ? '#f39c12' : '#3498db'};">${m.sender}:</strong> ${m.message}</div>`
|
|
).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 = '';
|
|
}
|
|
});
|
|
} |