- 방 생성 로직 개선 방 생성시 급수를 전달 받아서 비슷한 급수 유저와 매칭 시도함 - 항복 기능 추가 항복 메세지 요청시 상대 플레이어에게 메세지 전달 - 무승부 제안 기능 추가 무승부 제안 요청시 상대방에게 트리거 전달 - 무승부 제안 받을 경우 수락 혹은 거절 - 재대결 요청 기능 추가
130 lines
5.4 KiB
JavaScript
130 lines
5.4 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;
|
|
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: "재대결 거절 처리 중 오류가 발생했습니다." });
|
|
}
|
|
});
|
|
}; |