138 lines
5.5 KiB
JavaScript

const { logger } = require('../../utils/logger');
module.exports = function(io, socket, gameState) {
// 플레이어 움직임 처리
socket.on('doPlayer', function(moveData) {
try {
const roomId = moveData.roomId;
const position = moveData.position;
socket.to(roomId).emit('doOpponent', { position: position });
logger.debug(`플레이어 ${socket.id}의 움직임, 위치: ${position}, 방: ${roomId}`);
} catch (err) {
logger.error(`플레이어 움직임 처리 중 오류: ${err}`);
socket.emit('error', { message: "움직임 처리 중 오류가 발생했습니다." });
}
});
// 항복 요청
socket.on('requestSurrender', function(data) {
try {
const roomId = data.roomId;
const message = "상대방이 항복했습니다.";
socket.to(roomId).emit('doSurrender', { message });
socket.emit('surrenderConfirmed', { message: "항복 요청이 전송되었습니다." });
logger.info(`항복 요청: 플레이어 ${socket.id}, 방 ${roomId}`);
} catch (err) {
logger.error(`항복 처리 중 오류: ${err}`);
socket.emit('error', { message: "항복 처리 중 오류가 발생했습니다." });
}
});
// 무승부 신청 보내기
socket.on('requestDraw', function(data) {
try {
const roomId = data.roomId;
const message = "상대방이 무승부 요청을 보냈습니다.";
socket.to(roomId).emit('receiveDrawRequest', { message });
socket.emit('drawRequestSent', { message: "무승부 요청이 전송되었습니다." });
logger.info(`무승부 요청: 플레이어 ${socket.id}, 방 ${roomId}`);
} catch (err) {
logger.error(`무승부 요청 처리 중 오류: ${err}`);
socket.emit('error', { message: "무승부 요청 처리 중 오류가 발생했습니다." });
}
});
// 무승부 수락
socket.on('acceptDraw', function(data) {
try {
const roomId = data.roomId;
const message = "상대방이 무승부를 수락했습니다.";
socket.to(roomId).emit('drawAccepted', { message });
socket.emit('drawConfirmed', { message: "무승부 수락이 완료되었습니다." });
logger.info(`무승부 수락: 플레이어 ${socket.id}, 방 ${roomId}`);
} catch (err) {
logger.error(`무승부 수락 처리 중 오류: ${err}`);
socket.emit('error', { message: "무승부 수락 처리 중 오류가 발생했습니다." });
}
});
// 무승부 거절
socket.on('rejectDraw', function(data) {
try {
const roomId = data.roomId;
const message = "상대방이 무승부를 거절했습니다.";
socket.to(roomId).emit('drawRejected', { message });
socket.emit('drawRejectionConfirmed', { message: "무승부 거절이 완료되었습니다." });
logger.info(`무승부 거절: 플레이어 ${socket.id}, 방 ${roomId}`);
} catch(err) {
logger.error(`무승부 거절 처리 중 오류: ${err}`);
socket.emit('error', { message: "무승부 거절 처리 중 오류가 발생했습니다." });
}
});
// 재대결 신청
socket.on('requestRevenge', function(data) {
try {
const roomId = data.roomId;
const message = "상대방이 재대결을 신청했습니다.";
socket.to(roomId).emit('receiveRevengeRequest', { message });
socket.emit('revengeRequestSent', { message: "재대결 신청이 전송되었습니다." });
logger.info(`재대결 요청: 플레이어 ${socket.id}, 방 ${roomId}`);
} catch (err) {
logger.error(`재대결 신청 처리 중 오류: ${err}`);
socket.emit('error', { message: "재대결 신청 처리 중 오류가 발생했습니다." });
}
});
// 재대결 수락
socket.on('acceptRevenge', function(data) {
try {
const roomId = data.roomId;
let isBlack = data.isBlack;
const message = "상대방이 재대결을 수락했습니다.";
socket.to(roomId).emit('revengeAccepted', {
message,
isBlack: isBlack,
});
socket.emit('revengeConfirmed', {
message: "재대결 수락이 완료되었습니다.",
isBlack: !isBlack,
});
logger.info(`재대결 수락: 플레이어 ${socket.id}, 방 ${roomId}`);
} catch (err) {
logger.error(`재대결 수락 처리 중 오류: ${err}`);
socket.emit('error', { message: "재대결 수락 처리 중 오류가 발생했습니다." });
}
});
// 재대결 거절
socket.on('rejectRevenge', function(data) {
try {
const roomId = data.roomId;
const message = "상대방이 재대결을 거절했습니다.";
socket.to(roomId).emit('revengeRejected', { message });
socket.emit('revengeRejectionConfirmed', {message: "재대결 거절이 완료되었습니다."});
logger.info(`재대결 거절: 플레이어 ${socket.id}, 방 ${roomId}`);
} catch (err) {
logger.error(`재대결 거절 처리 중 오류: ${err}`);
socket.emit('error', { message: "재대결 거절 처리 중 오류가 발생했습니다." });
}
});
};