Commit d6375559 authored by 18신대성's avatar 18신대성 Committed by 18류지석

방에 혼자남으면 승리표시 뜸

parent 2fdf73fd
var GameServer = GameServer || {}; var GameServer = GameServer || {};
GameServer.Phase = {READY: 0, START: 1, MAIN: 2, MUSIC: 3}; GameServer.Phase = {READY: 0, START: 1, MAIN: 2, MUSIC: 3};
GameServer.startCount = 4; GameServer.startCount = 2;
GameServer.currentPlayer = []; GameServer.currentPlayer = [];
GameServer.playingRoom = []; GameServer.playingRoom = [];
...@@ -30,12 +30,14 @@ GameServer.findPlayer = function(playerId) ...@@ -30,12 +30,14 @@ GameServer.findPlayer = function(playerId)
GameServer.nextRoomNumber = 0; GameServer.nextRoomNumber = 0;
GameServer.makeRoom = function() GameServer.makeRoom = function()
{ {
// 나중에 room 삭제시 생긴 null에 채워넣는식으로 만들것, 룸의 인덱스를 고정
var roomOption = var roomOption =
{ {
roomNum: GameServer.nextRoomNumber++, roomNum: GameServer.nextRoomNumber++,
maxPlayer: 5, maxPlayer: 5,
nextRank: 5, nextRank: 5,
currentPlayer: [], currentPlayer: [],
aliveCount: -1,
currentSocket: [], currentSocket: [],
currentPhase: GameServer.Phase.READY, currentPhase: GameServer.Phase.READY,
...@@ -107,6 +109,8 @@ GameServer.startRoom = function(roomIdx) ...@@ -107,6 +109,8 @@ GameServer.startRoom = function(roomIdx)
{ {
let room = this.playingRoom[roomIdx]; let room = this.playingRoom[roomIdx];
room.currentPhase = this.Phase.START; room.currentPhase = this.Phase.START;
room.nextRank = room.currentPlayer.length;
room.aliveCount = room.currentPlayer.length;
room.maxTypingPlayer = room.currentPlayer[0]; room.maxTypingPlayer = room.currentPlayer[0];
room.minTypingPlayer = room.currentPlayer[0]; room.minTypingPlayer = room.currentPlayer[0];
room.currentSocket.forEach(function(element) room.currentSocket.forEach(function(element)
...@@ -127,6 +131,27 @@ GameServer.startRoom = function(roomIdx) ...@@ -127,6 +131,27 @@ GameServer.startRoom = function(roomIdx)
this.announceToRoom(roomIdx, 'changePhase', this.Phase.START); this.announceToRoom(roomIdx, 'changePhase', this.Phase.START);
this.announceToRoom(roomIdx, 'startGame'); this.announceToRoom(roomIdx, 'startGame');
} }
GameServer.playerDefeat = function(playerData)
{
playerData.playingData.isAlive = false;
playerData.playingData.rank = playerData.currentRoom.nextRank--;
playerData.isReceivable = false;
playerData.currentRoom.aliveCount--;
// 끝내기단어 체크
GameServer.announceToRoom(this.findRoomIndex(playerData.currentRoom.roomNum), 'defeat', playerData.playingData);
console.log('['+playerData.id+']'+ ' defeated, rank: ' + playerData.playingData.rank);
if (playerData.currentRoom.aliveCount === 1)
{
let winner = playerData.currentRoom.currentPlayer.find(function(element)
{
return element.isAlive;
});
GameServer.announceToRoom(this.findRoomIndex(playerData.currentRoom.roomNum), 'gameEnd', winner);
GameServer.announceToTarget(this.findRoomIndex(playerData.currentRoom.roomNum), winner.id, 'alert', 'gameWin');
console.log('['+winner.id+']' + ' winner! ' + winner.nickname);
}
}
GameServer.announceToRoom = function(roomIdx, _message, _data = null) GameServer.announceToRoom = function(roomIdx, _message, _data = null)
{ {
this.playingRoom[roomIdx].currentSocket.forEach(function(element) this.playingRoom[roomIdx].currentSocket.forEach(function(element)
......
...@@ -2,15 +2,20 @@ var socket = io.connect(); ...@@ -2,15 +2,20 @@ var socket = io.connect();
// init account // init account
socket.emit('idRequest'); socket.emit('idRequest');
socket.on('alert', function(msg) // string errorcode
{
let toAlert = 'null alert';
if (msg === 'errNicknameOverlaped') toAlert = '이미 사용중인 닉네임입니다.';
if (msg === 'gameWin') toAlert = '승리!';
alert(toAlert);
});
socket.on('setId', function(msg) // {str, num playerNum} socket.on('setId', function(msg) // {str, num playerNum}
{ {
console.log(msg.str); console.log(msg.str);
PlayerData.idNum = msg.num; PlayerData.idNum = msg.num;
}); });
socket.on('errNicknameOverlaped', function()
{
alert('이미 사용중인 닉네임입니다.');
});
socket.on('enterRoom', function() socket.on('enterRoom', function()
{ {
game.scene.remove('menuScene'); game.scene.remove('menuScene');
...@@ -50,6 +55,10 @@ socket.on('defeat', function(msg) // object player ...@@ -50,6 +55,10 @@ socket.on('defeat', function(msg) // object player
RoomData.aliveCount--; RoomData.aliveCount--;
console.log(RoomData.players[msg.index].nickname + ' defeated'); console.log(RoomData.players[msg.index].nickname + ' defeated');
}); });
socket.on('gameEnd', function(msg) // object player
{
console.log(msg.nickname + ' Win!!!!!!');
});
socket.on('attackSucceed', function(msg) socket.on('attackSucceed', function(msg)
{ {
......
...@@ -46,7 +46,7 @@ io.on('connection', function(socket) ...@@ -46,7 +46,7 @@ io.on('connection', function(socket)
{ {
if (element.nickname === msg) isAlreadyHave = true; if (element.nickname === msg) isAlreadyHave = true;
}); });
if (isAlreadyHave) socket.emit('errNicknameOverlaped'); if (isAlreadyHave) socket.emit('alert' ,'errNicknameOverlaped');
else else
{ {
socket.playerData.nickname = msg; socket.playerData.nickname = msg;
...@@ -79,12 +79,7 @@ io.on('connection', function(socket) ...@@ -79,12 +79,7 @@ io.on('connection', function(socket)
socket.on('defeated', function() socket.on('defeated', function()
{ {
socket.playerData.playingData.isAlive = false; GameServer.playerDefeat(socket.playerData);
socket.playerData.playingData.rank = socket.playerData.currentRoom.nextRank--;
socket.playerData.isReceivable = false;
// 패배단어 체크
GameServer.announceToRoom(socket.playerData.currentRoom.roomNum, 'defeat', socket.playerData.playingData);
console.log('['+socket.playerData.id+']'+ ' defeated');
}); });
socket.on('defenseFailed', function(msg) socket.on('defenseFailed', function(msg)
...@@ -118,13 +113,11 @@ io.on('connection', function(socket) ...@@ -118,13 +113,11 @@ io.on('connection', function(socket)
data.currentRoom.currentPlayer[data.playingData.index] = null; data.currentRoom.currentPlayer[data.playingData.index] = null;
data.currentRoom.currentSocket[data.playingData.index] = null; data.currentRoom.currentSocket[data.playingData.index] = null;
} }
else else if (data.playingData.isAlive)
{ {
data.playingData.isAlive = false; GameServer.playerDefeat(socket.playerData);
if (data.playingData.rank === -1) data.playingData.rank = data.currentRoom.nextRank--;
data.currentRoom.currentSocket[data.playingData.index].isReceivable = false;
GameServer.announceToRoom(GameServer.findRoomIndex(data.currentRoom.roomNum), 'userDisconnect', data.playingData);
} }
GameServer.announceToRoom(GameServer.findRoomIndex(data.currentRoom.roomNum), 'userDisconnect', data.playingData);
} }
} }
console.log('['+ data.id +'] disconnect complete'); console.log('['+ data.id +'] disconnect complete');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment