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; const message = "상대방이 재대결을 수락했습니다."; socket.to(roomId).emit('revengeAccepted', { message }); socket.emit('revengeConfirmed', { message: "재대결 수락이 완료되었습니다."}); 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: "재대결 거절 처리 중 오류가 발생했습니다." }); } }); };