Commit 0d4ff0b4 authored by 18신대성's avatar 18신대성 Committed by Chae Ho Shin

자잘한 오류 수정 및 사이클 분리

parent 9730f4ec
...@@ -77,7 +77,7 @@ class GameRoom ...@@ -77,7 +77,7 @@ class GameRoom
{ {
this.roomId = GameServer.getRoomNumber(); this.roomId = GameServer.getRoomNumber();
this.roomIndex = -1; this.roomIndex = -1;
this.startCount = 4; this.startCount = 2;
this.maxPlayer = 100; this.maxPlayer = 100;
this.nextRank = 100; this.nextRank = 100;
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<script src="js/Background.js"></script> <script src="js/Background.js"></script>
<script src="js/Input.js"></script> <script src="js/Input.js"></script>
<script src="js/WordSpace.js"></script> <script src="js/WordSpace.js"></script>
<script src="js/GameCycle.js"></script>
<script src="js/WordObject.js"></script> <script src="js/WordObject.js"></script>
<script src="js/WordReader.js"></script> <script src="js/WordReader.js"></script>
<script src="js/CSVParsing.js"></script> <script src="js/CSVParsing.js"></script>
......
...@@ -5,10 +5,16 @@ socket.emit('idRequest'); ...@@ -5,10 +5,16 @@ socket.emit('idRequest');
socket.on('alert', function(msg) // string errorcode socket.on('alert', function(msg) // string errorcode
{ {
let toAlert = 'null alert'; //let toAlert = 'null alert';
if (msg === 'errNicknameOverlaped') toAlert = '이미 사용중인 닉네임입니다.'; if (msg === 'errNicknameOverlaped') alert('이미 사용중인 닉네임입니다.');
if (msg === 'gameWin') toAlert = '승리!'; if (msg === 'gameWin')
alert(toAlert); {
//toAlert = '승리!';
ScenesData.gameScene.add.text(640, 360, '승리!!!!', {fontSize: '30pt'})
.setPadding(5,5,5,5).setOrigin(0.5, 0.5).setDepth(11)
.setColor('#000000').setBackgroundColor('#ffffff');
}
//alert(toAlert);
}); });
socket.on('setId', function(msg) // {str, num playerNum} socket.on('setId', function(msg) // {str, num playerNum}
...@@ -113,10 +119,11 @@ socket.on('setPlayerTypingRate', function(msg) // number playerTypingRate ...@@ -113,10 +119,11 @@ socket.on('setPlayerTypingRate', function(msg) // number playerTypingRate
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);
setTimeout(function() var timeout = setTimeout(function()
{ {
WordSpace.generateWord.Attack(ScenesData.gameScene, msg.text, msg.grade, msg.attacker, msg.isStrong); WordSpace.generateWord.Attack(ScenesData.gameScene, msg.text, msg.grade, msg.attacker, msg.isStrong);
}, 4000); }, 4000);
console.log(timeout);
}); });
socket.on('defeat', function(msg) // object player socket.on('defeat', function(msg) // object player
{ {
......
WordSpace.startCycle = function(scene)
{
WordSpace.wordCycle.resetCycle(scene, 3000, 0, true);
WordSpace.nameCycle.resetCycle(scene, 3000, 0, true);
WordSpace.varAdjustCycle.resetCycle(scene, 100, 0, true);
WordSpace.playerTypingCycle = setInterval(function()
{
socket.emit('setPlayerTyping', WordSpace.playerTyping);
}, 500);
}
WordSpace.pauseCycle = function(isPause)
{
WordSpace.wordCycle.currentCycle.paused = isPause;
WordSpace.nameCycle.currentCycle.paused = isPause;
WordSpace.varAdjustCycle.currentCycle.paused = isPause;
WordSpace.attackGauge.pauseCycle(isPause);
if (isPause) clearInterval(WordSpace.playerTypingCycle);
else WordSpace.playerTypingCycle = setInterval(function()
{
socket.emit('setPlayerTyping', WordSpace.playerTyping);
}, 500);
}
class Cycle //앞으로 cycle은 이 클래스를 사용해서 구현할 것
{
constructor(_callback)
{
this.delay = 0;
this.currentCycle = null;
this.callbackFunction = _callback;
}
resetCycle(scene, _delay, _startAt, _loop)
{
this.delay = _delay;
var option =
{
startAt: _startAt,
delay: _delay,
callback: this.callbackFunction,
callbackScope: scene,
loop: _loop
};
if (this.currentCycle != null) this.currentCycle = this.currentCycle.reset(option);
else this.currentCycle = scene.time.addEvent(option);
}
}
//단어 생성 사이클
WordSpace.wordCycle = new Cycle(function()
{
WordSpace.genWordByProb(this);
});
//게임 오버 사이클
WordSpace.gameOverCycle = new Cycle(gameOver);
//호패 생성 사이클
WordSpace.nameCycle = new Cycle(function()
{
WordSpace.generateWord.Name(ScenesData.gameScene, false, null);
});
//이건 뭐지
WordSpace.varAdjustCycle = new Cycle(function()
{
//나중에는 메세지 분석해서 Phase랑 playerTypingRate 받겠지만 일단 이렇게 해둠
//WordSpace.GetPhase();
//WordSpace.GetPlayerTypingRate();
WordSpace.AdjustVarByPhase(WordSpace.playerTypingRate, WordSpace.CurrentPhase);
});
\ No newline at end of file
...@@ -121,13 +121,7 @@ var gameScene = new Phaser.Class( ...@@ -121,13 +121,7 @@ var gameScene = new Phaser.Class(
WordSpace.spaceInitiate(this); WordSpace.spaceInitiate(this);
WordSpace.attackGauge.resetCycle(this); WordSpace.attackGauge.resetCycle(this);
WordSpace.wordCycle.resetCycle(this, 3000, 0, true); WordSpace.startCycle(this);
WordSpace.nameCycle.resetCycle(this, 3000, 0, true);
WordSpace.varAdjustCycle.resetCycle(this, 100, 0, true);
WordSpace.playerTypingCycle = setInterval(function()
{
socket.emit('setPlayerTyping', WordSpace.playerTyping);
}, 500);
WordSpace.setPlayerTyping.initiate(this); WordSpace.setPlayerTyping.initiate(this);
......
...@@ -34,56 +34,10 @@ WordSpace.delay = ...@@ -34,56 +34,10 @@ WordSpace.delay =
GameOver: 5000, GameOver: 5000,
} }
WordSpace.playerTypingCycle = null;
WordSpace.NameSpawnReduce = 1000; WordSpace.NameSpawnReduce = 1000;
WordSpace.gravityPoint = {x: 640, y: 280}; WordSpace.gravityPoint = {x: 640, y: 280};
class Cycle //앞으로 cycle은 이 클래스를 사용해서 구현할 것
{
constructor(_callback)
{
this.delay = 0;
this.currentCycle = null;
this.callbackFunction = _callback;
}
resetCycle(scene, _delay, _startAt, _loop)
{
this.delay = _delay;
var option =
{
startAt: _startAt,
delay: _delay,
callback: this.callbackFunction,
callbackScope: scene,
loop: _loop
};
if (this.currentCycle != null) this.currentCycle = this.currentCycle.reset(option);
else this.currentCycle = scene.time.addEvent(option);
}
}
//단어 생성 사이클
WordSpace.wordCycle = new Cycle(function()
{
WordSpace.genWordByProb(this);
});
//게임 오버 사이클
WordSpace.gameOverCycle = new Cycle(gameOver);
//호패 생성 사이클
WordSpace.nameCycle = new Cycle(function()
{
WordSpace.generateWord.Name(ScenesData.gameScene, false, null);
});
//이건 뭐지
WordSpace.varAdjustCycle = new Cycle(function()
{
//나중에는 메세지 분석해서 Phase랑 playerTypingRate 받겠지만 일단 이렇게 해둠
//WordSpace.GetPhase();
//WordSpace.GetPlayerTypingRate();
WordSpace.AdjustVarByPhase(WordSpace.playerTypingRate, WordSpace.CurrentPhase);
});
WordSpace.getSpawnPoint = function(_lenRate) WordSpace.getSpawnPoint = function(_lenRate)
{ {
let lenRate = 1; let lenRate = 1;
...@@ -312,14 +266,14 @@ WordSpace.pushWord = function(scene, word, lenRate) ...@@ -312,14 +266,14 @@ WordSpace.pushWord = function(scene, word, lenRate)
function gameOver() function gameOver()
{ {
WordSpace.wordCycle.currentCycle.remove(); WordSpace.pauseCycle(true);
WordSpace.nameCycle.currentCycle.remove();
WordSpace.varAdjustCycle.currentCycle.remove();
clearInterval(WordSpace.playerTypingCycle);
//To Do
socket.emit('defeated'); socket.emit('defeated');
console.log('defeat'); console.log('defeat');
alert('defeat'); ScenesData.gameScene.add.text(640, 360, '패배', {fontSize: '30pt'})
.setPadding(5,5,5,5).setOrigin(0.5, 0.5).setDepth(10)
.setColor('#000000').setBackgroundColor('#ffffff');
//alert('defeat');
} }
//게임 오버 판정을 위한 타이머 //게임 오버 판정을 위한 타이머
......
...@@ -56,18 +56,24 @@ io.on('connection', function(socket) ...@@ -56,18 +56,24 @@ io.on('connection', function(socket)
socket.on('setPlayerTyping', function(msg) // number playerTyping socket.on('setPlayerTyping', function(msg) // number playerTyping
{ {
socket.playerData.playingData.playerTyping = msg; try
if (socket.playerData.currentRoom.maxTypingPlayer.playerTyping < msg)
{ {
socket.playerData.currentRoom.maxTypingPlayer = socket.playerData.playingData; socket.playerData.playingData.playerTyping = msg;
if (socket.playerData.currentRoom.maxTypingPlayer.playerTyping < msg)
{
socket.playerData.currentRoom.maxTypingPlayer = socket.playerData.playingData;
}
if (socket.playerData.currentRoom.minTypingPlayer.playerTyping > msg)
{
socket.playerData.currentRoom.minTypingPlayer = socket.playerData.playingData;
}
let playerTypingRate = (msg - (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.emit('setPlayerTypingRate', playerTypingRate);
} }
if (socket.playerData.currentRoom.minTypingPlayer.playerTyping > msg) catch (e)
{ {
socket.playerData.currentRoom.minTypingPlayer = socket.playerData.playingData;
} }
let playerTypingRate = (msg - (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.emit('setPlayerTypingRate', playerTypingRate);
}); });
socket.on('endCount', function() socket.on('endCount', 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