Commit e41809ef authored by 18신대성's avatar 18신대성

단어입력, 공격모드, 남의 공격 등을 다른 플레이어가 알게 구현

parent dcbdc78c
...@@ -201,7 +201,6 @@ class GameRoom ...@@ -201,7 +201,6 @@ class GameRoom
this.announceToRoom('syncRoomData', toSync); this.announceToRoom('syncRoomData', toSync);
console.log('[ROOM#'+this.roomId+'] Game Start with ' + this.currentPlayer.length + ' players'); console.log('[ROOM#'+this.roomId+'] Game Start with ' + this.currentPlayer.length + ' players');
this.announceToRoom('changePhase', GameServer.Phase.START);
this.announceToRoom('startGame'); this.announceToRoom('startGame');
this.startTime = Date.now(); this.startTime = Date.now();
} }
...@@ -323,7 +322,7 @@ class Player ...@@ -323,7 +322,7 @@ class Player
} }
room.announceToRoom('defeat', this); room.announceToRoom('defeat', this);
console.log('[' + this.id + '] defeated, rank: ' + this.rank + ', ' + room.currentPlayer.length + 'player left'); console.log('[' + this.id + '] defeated, rank: ' + this.rank + ', ' + room.aliveCount + ' player left');
if (socket.playerData.currentRoom.aliveCount === 1) if (socket.playerData.currentRoom.aliveCount === 1)
{ {
......
...@@ -22,6 +22,8 @@ socket.on('setId', function(msg) // {str, num playerNum} ...@@ -22,6 +22,8 @@ socket.on('setId', function(msg) // {str, num playerNum}
console.log(msg.str); console.log(msg.str);
PlayerData.id = msg.num; PlayerData.id = msg.num;
}); });
// init game
socket.on('enterRoom', function() socket.on('enterRoom', function()
{ {
Audio.killSound(ScenesData.menuScene, 'login'); Audio.killSound(ScenesData.menuScene, 'login');
...@@ -82,8 +84,6 @@ socket.on('setRoomCount', function(msg) ...@@ -82,8 +84,6 @@ socket.on('setRoomCount', function(msg)
} }
}, 200); }, 200);
}); });
// init game
socket.on('syncRoomData', function(msg) // {num roomNum, [] players} socket.on('syncRoomData', function(msg) // {num roomNum, [] players}
{ {
//console.log(msg); //console.log(msg);
...@@ -110,12 +110,29 @@ socket.on('changePhase', function(msg) // number Phase ...@@ -110,12 +110,29 @@ socket.on('changePhase', function(msg) // number Phase
{ {
console.log('phase changed from ' + WordSpace.CurrentPhase + ' to ' + msg); console.log('phase changed from ' + WordSpace.CurrentPhase + ' to ' + msg);
WordSpace.CurrentPhase = msg; WordSpace.CurrentPhase = msg;
// 이때 시간 3초 지연시키기
}); });
socket.on('setPlayerTypingRate', function(msg) // number playerTypingRate socket.on('setPlayerTypingRate', function(msg) // number playerTypingRate
{ {
WordSpace.PlayerTypingRate = msg; WordSpace.PlayerTypingRate = msg;
//console.log('rate: ' + msg); //console.log('rate: ' + msg);
}); });
socket.on('writeWord', function(msg) // number playerId
{
console.log(msg + ' write word');
// msg의 id를 가진 사람이 writeWord한다.
});
socket.on('attackMode', function(msg) // number playerId
{
// if (msg's attackMode is false)
console.log(msg + ' is on attack Mode');
// msg의 id를 가진 사람이 attack Mode이다.
});
socket.on('attack', function(msg) // {number attackerId, number targetId}
{
// 이때 위의 attack Mode인 사람(msg.attackerId)을 해제해주자.
console.log(msg.attackerId + ' attack to ' + msg.targetId);
});
socket.on('attacked', function(msg) // object attackData socket.on('attacked', function(msg) // object attackData
{ {
//console.log('attacked by ' + msg.attacker.nickname); //console.log('attacked by ' + msg.attacker.nickname);
...@@ -123,7 +140,7 @@ socket.on('attacked', function(msg) // object attackData ...@@ -123,7 +140,7 @@ socket.on('attacked', function(msg) // object attackData
{ {
WordSpace.generateWord.Attack(ScenesData.gameScene, msg.text, msg.grade, msg.attacker, msg.isStrong, msg.isCountable); WordSpace.generateWord.Attack(ScenesData.gameScene, msg.text, msg.grade, msg.attacker, msg.isStrong, msg.isCountable);
}, 4000); }, 4000);
console.log(timeout); //console.log(timeout);
}); });
socket.on('defeat', function(msg) // object player socket.on('defeat', function(msg) // object player
{ {
...@@ -144,10 +161,9 @@ socket.on('gameEnd', function(msg) // object player ...@@ -144,10 +161,9 @@ socket.on('gameEnd', function(msg) // object player
{ {
console.log(msg.nickname + ' Win!!!!!!'); console.log(msg.nickname + ' Win!!!!!!');
}); });
socket.on('attackSucceed', function(msg) socket.on('attackSucceed', function(msg)
{ {
console.log('client'); //console.log('client');
let tempWord = WordSpace.generateWord.Name(ScenesData.gameScene, true, msg.victim); let tempWord = WordSpace.generateWord.Name(ScenesData.gameScene, true, msg.victim);
tempWord.destroy(); tempWord.destroy();
}); });
...@@ -155,7 +171,7 @@ socket.on('attackSucceed', function(msg) ...@@ -155,7 +171,7 @@ socket.on('attackSucceed', function(msg)
// out game // out game
socket.on('userDisconnect', function(msg) // {num index , num id, str nickname} socket.on('userDisconnect', function(msg) // {num index , num id, str nickname}
{ {
console.log(msg.index + ' / ' + msg.id + ' / ' + msg.nickname + ' disconnected'); //console.log(msg.index + ' / ' + msg.id + ' / ' + msg.nickname + ' disconnected');
RoomData.players[msg.index] = msg; RoomData.players[msg.index] = msg;
RoomData.aliveCount--; RoomData.aliveCount--;
}); });
\ No newline at end of file
...@@ -3,10 +3,7 @@ WordSpace.startCycle = function(scene) ...@@ -3,10 +3,7 @@ WordSpace.startCycle = function(scene)
WordSpace.wordCycle.resetCycle(scene, 3000, 0, true); WordSpace.wordCycle.resetCycle(scene, 3000, 0, true);
WordSpace.nameCycle.resetCycle(scene, 3000, 0, true); WordSpace.nameCycle.resetCycle(scene, 3000, 0, true);
WordSpace.varAdjustCycle.resetCycle(scene, 100, 0, true); WordSpace.varAdjustCycle.resetCycle(scene, 100, 0, true);
WordSpace.playerTypingCycle = setInterval(function() WordSpace.playerTypingCycle.resetCycle(scene, 500, 500, true);
{
socket.emit('setPlayerTyping', WordSpace.playerTyping);
}, 500);
} }
WordSpace.pauseCycle = function(isPause) WordSpace.pauseCycle = function(isPause)
...@@ -15,11 +12,7 @@ WordSpace.pauseCycle = function(isPause) ...@@ -15,11 +12,7 @@ WordSpace.pauseCycle = function(isPause)
WordSpace.nameCycle.currentCycle.paused = isPause; WordSpace.nameCycle.currentCycle.paused = isPause;
WordSpace.varAdjustCycle.currentCycle.paused = isPause; WordSpace.varAdjustCycle.currentCycle.paused = isPause;
WordSpace.attackGauge.pauseCycle(isPause); WordSpace.attackGauge.pauseCycle(isPause);
if (isPause) clearInterval(WordSpace.playerTypingCycle); WordSpace.playerTypingCycle.currentCycle.paused = isPause;
else WordSpace.playerTypingCycle = setInterval(function()
{
socket.emit('setPlayerTyping', WordSpace.playerTyping);
}, 500);
} }
class Cycle //앞으로 cycle은 이 클래스를 사용해서 구현할 것 class Cycle //앞으로 cycle은 이 클래스를 사용해서 구현할 것
...@@ -65,4 +58,10 @@ WordSpace.varAdjustCycle = new Cycle(function() ...@@ -65,4 +58,10 @@ WordSpace.varAdjustCycle = new Cycle(function()
//WordSpace.GetPhase(); //WordSpace.GetPhase();
//WordSpace.GetPlayerTypingRate(); //WordSpace.GetPlayerTypingRate();
WordSpace.AdjustVarByPhase(WordSpace.playerTypingRate, WordSpace.CurrentPhase); WordSpace.AdjustVarByPhase(WordSpace.playerTypingRate, WordSpace.CurrentPhase);
});
// playerTypingRate 갱신용 사이클
WordSpace.playerTypingCycle = new Cycle(function()
{
socket.emit('setPlayerTyping', {playerTyping: WordSpace.playerTyping, isWord: WordSpace.setPlayerTyping.writeWord, isAttackMode: Input.attackMode} );
WordSpace.setPlayerTyping.writeWord = false;
}); });
\ No newline at end of file
...@@ -21,7 +21,7 @@ WordSpace.wordPhysicsGroup = null; ...@@ -21,7 +21,7 @@ WordSpace.wordPhysicsGroup = null;
WordSpace.GradeProb = [0.35, 0.6, 0.8]; WordSpace.GradeProb = [0.35, 0.6, 0.8];
WordSpace.Phase = {READY: 0, START: 1, MAIN: 2, MUSIC: 3}; WordSpace.Phase = {READY: 0, START: 1, MAIN: 2, MUSIC: 3};
WordSpace.CurrentPhase = WordSpace.Phase.READY; WordSpace.CurrentPhase = WordSpace.Phase.START;
WordSpace.playerTyping = 0; WordSpace.playerTyping = 0;
WordSpace.playerTypingRate = 0; WordSpace.playerTypingRate = 0;
...@@ -372,11 +372,13 @@ WordSpace.findWord = function(wordText) ...@@ -372,11 +372,13 @@ WordSpace.findWord = function(wordText)
WordSpace.setPlayerTyping = WordSpace.setPlayerTyping =
{ {
totalTyping: 0, totalTyping: 0,
writeWord: false,
add: function(wordText) add: function(wordText)
{ {
this.totalTyping += wordText != null ? WordReader.getWordTyping(wordText) : 0; this.totalTyping += wordText != null ? WordReader.getWordTyping(wordText) : 0;
WordSpace.playerTyping = this.totalTyping / WordSpace.gameTimer.now * 60 * 1000; WordSpace.playerTyping = this.totalTyping / WordSpace.gameTimer.now * 60 * 1000;
this.text.setText('현재 타수 : ' + WordSpace.playerTyping.toFixed(1)); this.text.setText('현재 타수 : ' + WordSpace.playerTyping.toFixed(1));
this.writeWord = wordText != '' ? true : false;
}, },
initiate: function(scene) initiate: function(scene)
{ {
......
...@@ -58,22 +58,29 @@ io.on('connection', function(socket) ...@@ -58,22 +58,29 @@ io.on('connection', function(socket)
{ {
try try
{ {
socket.playerData.playingData.playerTyping = msg; socket.playerData.playingData.playerTyping = msg.playerTyping;
if (socket.playerData.currentRoom.maxTypingPlayer.playerTyping < msg) if (socket.playerData.currentRoom.maxTypingPlayer.playerTyping < msg.playerTyping)
{ {
socket.playerData.currentRoom.maxTypingPlayer = socket.playerData.playingData; socket.playerData.currentRoom.maxTypingPlayer = socket.playerData.playingData;
} }
if (socket.playerData.currentRoom.minTypingPlayer.playerTyping > msg) if (socket.playerData.currentRoom.minTypingPlayer.playerTyping > msg.playerTyping)
{ {
socket.playerData.currentRoom.minTypingPlayer = socket.playerData.playingData; socket.playerData.currentRoom.minTypingPlayer = socket.playerData.playingData;
} }
let playerTypingRate = (msg - (socket.playerData.currentRoom.minTypingPlayer.playerTyping - socket.playerData.currentRoom.rateArrangePoint)) / let playerTypingRate = (msg.playerTyping - (socket.playerData.currentRoom.minTypingPlayer.playerTyping - socket.playerData.currentRoom.rateArrangePoint)) /
(socket.playerData.currentRoom.maxTypingPlayer.playerTyping - socket.playerData.currentRoom.minTypingPlayer.playerTyping + socket.playerData.currentRoom.rateArrangePoint * 2); (socket.playerData.currentRoom.maxTypingPlayer.playerTyping - socket.playerData.currentRoom.minTypingPlayer.playerTyping + socket.playerData.currentRoom.rateArrangePoint * 2);
socket.emit('setPlayerTypingRate', playerTypingRate); socket.emit('setPlayerTypingRate', playerTypingRate);
if (msg.isWord)
{
socket.playerData.currentRoom.announceToRoom('writeWord', socket.playerData.id);
}
if (msg.isAttackMode)
{
socket.playerData.currentRoom.announceToRoom('attackMode', socket.playerData.id);
}
} }
catch (e) catch (e) {console.log('[ERR] error catched on setPlayerTyping')}
{
}
}); });
socket.on('endCount', function() socket.on('endCount', function()
...@@ -88,6 +95,7 @@ io.on('connection', function(socket) ...@@ -88,6 +95,7 @@ io.on('connection', function(socket)
socket.on('attack', function(msg) socket.on('attack', function(msg)
{ {
socket.playerData.currentRoom.announceToTarget(msg.target, 'attacked', msg); socket.playerData.currentRoom.announceToTarget(msg.target, 'attacked', msg);
socket.playerData.currentRoom.announceToRoom('attack', {attackerId: msg.attacker.id, targetId: msg.target});
//console.log('attack ' + msg.target + ' by ' + msg.attacker.id + ' with ' + msg.text); //console.log('attack ' + msg.target + ' by ' + msg.attacker.id + ' with ' + msg.text);
setTimeout(function() setTimeout(function()
{ {
......
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