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

중간발표본

parents 429e22d3 2fdf73fd
var GameServer = GameServer || {};
GameServer.Phase = {READY: 0, START: 1, MAIN: 2, MUSIC: 3};
GameServer.startCount = 2;
GameServer.startCount = 4;
GameServer.currentPlayer = [];
GameServer.playingRoom = [];
......@@ -57,14 +57,32 @@ GameServer.findRoomIndex = function(roomNum)
GameServer.enterRoom = function(roomIdx, playerData)
{
let room = this.playingRoom[roomIdx];
let player = new Player(room.currentPlayer.length, playerData);
let nextIdx = -1;
for (let i = 0; i < room.currentPlayer.length; i++)
{
if (room.currentPlayer[i] === null)
{
nextIdx = i;
break
}
}
let player = new Player((nextIdx != -1 ? nextIdx : room.currentPlayer.length), playerData);
room.currentPlayer.push(player);
room.currentSocket.push(playerData);
if (nextIdx != -1)
{
room.currentPlayer[nextIdx] = player;
room.currentSocket[nextIdx] = playerData;
}
else
{
room.currentPlayer.push(player);
room.currentSocket.push(playerData);
}
playerData.playingData = player;
playerData.currentRoom = room;
console.log('[' + playerData.id + '] entered to room #' + room.roomNum);
playerData.socketId.emit('enterRoom');
if (room.currentPlayer.length >= this.startCount) GameServer.startRoom(roomIdx);
return room;
}
......@@ -91,6 +109,10 @@ GameServer.startRoom = function(roomIdx)
room.currentPhase = this.Phase.START;
room.maxTypingPlayer = room.currentPlayer[0];
room.minTypingPlayer = room.currentPlayer[0];
room.currentSocket.forEach(function(element)
{
element.isReceivable = true;
});
// sync roomData
let toSync =
......@@ -118,7 +140,7 @@ GameServer.announceToTarget = function(roomIdx, targetNum, _message, _data = nul
{
return element.id === targetNum;
});
if (targetSocket != undefined) targetSocket.socketId.emit(_message, _data);
if (targetSocket != undefined && targetSocket.isReceivable) targetSocket.socketId.emit(_message, _data);
}
// 데이터 동기화 함수 만들기
// 동기화할것: 유저리스트(id - nickname 쌍)
......
......@@ -12,6 +12,7 @@
<script src="js/WordReader.js"></script>
<script src="js/CSVParsing.js"></script>
<script src="js/SelectWord.js"></script>
<script src="js/BGMsound.js"></script>
</head>
<body>
<script src="js/Client.js"></script>
......
var Audio = Audio || {}
Audio.loadSound = function(scene)
{
scene.load.audio('menuBackground', 'assets/sound/BGM_twochae.ogg')
}
Audio.playSound = function(scene)
{
bgm = scene.sound.play('menuBackground')
}
Audio.pauseSound = function(scene)
{
bgm = scene.sound.pause()
}
Audio.resumeSound = function(scene)
{
bgm = scene.sound.resume()
}
Audio.stopSound = function(scene)
{
bgm = scene.sound.stop()
}
// var Audio = new Audio('assets/sound/BGM_twochae.ogg');
// Audio.play();
\ No newline at end of file
......@@ -7,6 +7,14 @@ socket.on('setId', function(msg) // {str, num playerNum}
console.log(msg.str);
PlayerData.idNum = msg.num;
});
socket.on('errNicknameOverlaped', function()
{
alert('이미 사용중인 닉네임입니다.');
});
socket.on('enterRoom', function()
{
game.scene.remove('menuScene');
});
// init game
socket.on('syncRoomData', function(msg) // {num roomNum, [] players}
......@@ -43,6 +51,11 @@ socket.on('defeat', function(msg) // object player
console.log(RoomData.players[msg.index].nickname + ' defeated');
});
socket.on('attackSucceed', function(msg)
{
WordSpace.nameGroup.push(new NameWord(msg.victim, true));
});
// out game
socket.on('userDisconnect', function(msg) // {num index , num id, str nickname}
{
......
......@@ -16,8 +16,7 @@ Input.gameSceneEnterReaction = function()
{
if (!Input.isEntered)
{
Input.convInput = Input.removeConVow(Input.convInput);
if (Input.attackMode) WordSpace.attack(Input.convInput, Input.attackOption.wordGrade);
if (Input.attackMode) WordSpace.attack(Input.removeConVow(Input.convInput), Input.attackOption.wordGrade);
else WordSpace.findWord(Input.convInput);
Input.reset();
Input.isEntered = true;
......@@ -26,12 +25,11 @@ Input.gameSceneEnterReaction = function()
Input.menuSceneEnterReaction = function()
{
Input.convInput = Input.removeConVow(Input.convInput);
if (Input.convInput.length > 0)
if (Input.convInput.length > 1)
{
socket.emit('setNickname', Input.convInput);
PlayerData.nickname = Input.convInput;
Input.reset();
game.scene.remove('menuScene');
}
else
{
......
......@@ -13,12 +13,14 @@ var menuScene = new Phaser.Class(
{
Input.inputField.loadImage(this);
BackGround.loadImage(this);
Audio.loadSound(this);
},
create: function()
{
Input.inputField.generate(this, Input.menuSceneEnterReaction);
BackGround.drawMenu(this);
Audio.playSound(this);
}
});
......@@ -85,7 +87,7 @@ var gameScene = new Phaser.Class(
let tempNames = '';
WordSpace.nameGroup.forEach(function(element)
{
tempNames += element.wordText + element.isStrong + '\n';
tempNames += element.wordText + (element.isStrong?' [강]':'') + '\n';
});
WordSpace.nameWordTextForTest.setText('현재 가진 호패들 : \n' + tempNames);
......
......@@ -135,13 +135,12 @@ class AttackWord extends WordObject
super(text);
this.wordGrade = _wordGrade;
this.wordWeight = WordReader.getWordWeight(this.wordGrade);
if(WordReader.getWordTyping(_playerData.nickname) <= 9)
if(WordReader.getWordTyping(_playerData.nickname) > 9)
this.wordWeight += this.wordWeight * 0.2 * (WordReader.getWordTyping(_playerData.nickname) - 9);
this.wordWeight *= isStrong ? 3 : 2;
this.attacker = _playerData;
//서버 사용하게 되면 PlayerTyping을 피격자의 것으로 바꿔야 함
this.counterTime = WordSpace.gameTimer.now + 1000 * (this.wordTyping <= (5 - _wordGrade) * 2.5 ? this.wordTyping * (WordSpace.playerTyping / 60) * 2 :
((5 - _wordGrade) * 2.5 + (this.wordTyping - (5 - _wordGrade) * 2.5) * 3) * (WordSpace.playerTyping / 60) * 2);
this.counterTime = WordSpace.gameTimer.now + 1000 * (this.wordTyping <= (5 - _wordGrade) * 2.5 ? this.wordTyping / (Math.max(200, WordSpace.playerTyping) / 60) * 1.5 :
((5 - _wordGrade) * 3 + (this.wordTyping - (5 - _wordGrade) * 2.5) * 2.5) / (Math.max(200, WordSpace.playerTyping) / 60) * 1.5);
console.log('Attack text : ' + text + ', Attacker : ' + this.attacker.nickname + ', Weight : ' + this.wordWeight);
console.log('Counter time : ' + this.counterTime);
}
......@@ -155,7 +154,10 @@ class AttackWord extends WordObject
case 3: WordSpace.attackGauge.add(0.5); break;
default: console.log('[ERR] wrong grade of word'); break;
}
if(WordSpace.gameTimer.now < this.counterTime) WordSpace.nameGroup.push(new NameWord(this.attacker, true));
if(WordSpace.gameTimer.now < this.counterTime)
{
WordSpace.nameGroup.push(new NameWord(this.attacker, true));
}
//강호패 넣기 구현해야됨
//WordSpace.generateWord.Name(WordSpace.gameSceneForTest, true);
super.destroy();
......
......@@ -292,7 +292,7 @@ WordSpace.setGameOverTimer = function()
if(this.brainCapacity < this.totalWeight && !this.isTimerOn)
{
this.isTimerOn = true;
WordSpace.gameOverCycle.resetCycle(WordSpace.gameSceneForTest, WordSpace.delay.gameOver, 0, false);
WordSpace.gameOverCycle.resetCycle(WordSpace.gameSceneForTest, WordSpace.delay.GameOver, 0, false);
}
}
......@@ -354,8 +354,14 @@ WordSpace.findWord = function(wordText)
{
if(WordSpace.getEditDistance(wordText, element.wordText) == minDist)
{
//강호패 보내야 함
console.log('Attack word : ' + element.wordText + ' of ' + element.attacker.nickname + ' 오타임');
let victimData =
{
roomNum: RoomData.roomNum,
victim: RoomData.myself,
target: element.attacker.idNum
}
socket.emit('defenseFailed', victimData);
}
});
this.attackGauge.sub(2);
......@@ -400,6 +406,8 @@ WordSpace.attack = function(wordText, grade)
});
//테스트용, 자기 자신에게 공격함
//WordSpace.generateWord.Attack(WordSpace.gameSceneForTest, wordText, grade, PlayerData, false);
WordSpace.generateWord.Name(WordSpace.gameSceneForTest, false);
WordSpace.generateWord.Name(WordSpace.gameSceneForTest, false);
WordSpace.nameGroup = [];
WordSpace.attackGauge.resetValue();
......@@ -425,8 +433,8 @@ WordSpace.nameQueue =
tempQueue[tempLength - 1] = tempQueue[tempIdx];
tempQueue[tempIdx] = tempElement;
}
tempQueue.forEach(function(element){
//console.log(element.id + ' ' + PlayerData.idNum);
tempQueue.forEach(function(element)
{
if(element.id != PlayerData.idNum && element.isAlive)
WordSpace.nameQueue.queue.push(element);
});
......
......@@ -78,6 +78,11 @@
"type-is": "~1.6.17"
}
},
"browser-media-mime-type": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/browser-media-mime-type/-/browser-media-mime-type-1.0.0.tgz",
"integrity": "sha1-oVNKitk48Lz0tkL1QPo1YFZT0Ok="
},
"bytes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
......@@ -134,6 +139,14 @@
"ms": "2.0.0"
}
},
"define-properties": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"requires": {
"object-keys": "^1.0.12"
}
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
......@@ -144,6 +157,11 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"dom-walk": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
"integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
......@@ -222,6 +240,29 @@
"has-binary2": "~1.0.2"
}
},
"es-abstract": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
"integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
"requires": {
"es-to-primitive": "^1.2.0",
"function-bind": "^1.1.1",
"has": "^1.0.3",
"is-callable": "^1.1.4",
"is-regex": "^1.0.4",
"object-keys": "^1.0.12"
}
},
"es-to-primitive": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
"integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
"requires": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
"is-symbol": "^1.0.2"
}
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
......@@ -283,6 +324,14 @@
"unpipe": "~1.0.0"
}
},
"for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
"requires": {
"is-callable": "^1.1.3"
}
},
"forwarded": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
......@@ -293,6 +342,28 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"global": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
"integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
"requires": {
"min-document": "^2.19.0",
"process": "~0.5.1"
}
},
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
"function-bind": "^1.1.1"
}
},
"has-binary2": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
......@@ -306,6 +377,11 @@
"resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
"integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
},
"has-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
"integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
......@@ -341,6 +417,56 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"is-callable": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
"integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
},
"is-date-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
},
"is-dom": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz",
"integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==",
"requires": {
"is-object": "^1.0.1",
"is-window": "^1.0.2"
}
},
"is-function": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
"integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU="
},
"is-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
"integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA="
},
"is-regex": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
"requires": {
"has": "^1.0.1"
}
},
"is-symbol": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
"integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
"requires": {
"has-symbols": "^1.0.0"
}
},
"is-window": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz",
"integrity": "sha1-LIlspT25feRdPDMTOmXYyfVjSA0="
},
"isarray": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
......@@ -379,6 +505,14 @@
"mime-db": "1.40.0"
}
},
"min-document": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
"integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
"requires": {
"dom-walk": "^0.1.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
......@@ -389,11 +523,21 @@
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"object-component": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
"integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
},
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
},
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
......@@ -402,6 +546,15 @@
"ee-first": "1.1.1"
}
},
"parse-headers": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz",
"integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==",
"requires": {
"for-each": "^0.3.3",
"string.prototype.trim": "^1.1.2"
}
},
"parseqs": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
......@@ -428,6 +581,11 @@
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"process": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
"integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
},
"proxy-addr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
......@@ -458,6 +616,11 @@
"unpipe": "1.0.0"
}
},
"right-now": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz",
"integrity": "sha1-bolgne69fc2vja7Mmuo5z1haCRg="
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
......@@ -511,6 +674,15 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"simple-media-element": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/simple-media-element/-/simple-media-element-1.1.0.tgz",
"integrity": "sha1-TlfDozxg86IREqqN0L/GhDd4OKo=",
"requires": {
"browser-media-mime-type": "^1.0.0",
"is-dom": "^1.0.5"
}
},
"socket.io": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz",
......@@ -600,6 +772,16 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"string.prototype.trim": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
"integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
"requires": {
"define-properties": "^1.1.2",
"es-abstract": "^1.5.0",
"function-bind": "^1.0.2"
}
},
"to-array": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
......@@ -634,6 +816,19 @@
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"web-audio-player": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/web-audio-player/-/web-audio-player-1.3.3.tgz",
"integrity": "sha512-eeBz+aa6sI7jZ5GRRaTVrpTfMT2DC2aTbq7BXPRNkw49SJvPvQ8/T9QcZvknLhDwvLsHwkfnAS1lR/tF4VxFnw==",
"requires": {
"browser-media-mime-type": "^1.0.0",
"object-assign": "^4.0.1",
"right-now": "^1.0.0",
"simple-media-element": "^1.0.0",
"xhr": "^2.2.0",
"xhr-progress": "0.0.0"
}
},
"ws": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",
......@@ -642,11 +837,32 @@
"async-limiter": "~1.0.0"
}
},
"xhr": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz",
"integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==",
"requires": {
"global": "~4.3.0",
"is-function": "^1.0.1",
"parse-headers": "^2.0.0",
"xtend": "^4.0.0"
}
},
"xhr-progress": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/xhr-progress/-/xhr-progress-0.0.0.tgz",
"integrity": "sha1-3oNDV/E3ZYJYPGS/c7MOrwXKZqY="
},
"xmlhttprequest-ssl": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
"integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"yeast": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
......
......@@ -14,6 +14,7 @@
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"socket.io": "^2.2.0"
"socket.io": "^2.2.0",
"web-audio-player": "^1.3.3"
}
}
......@@ -28,8 +28,7 @@ io.on('connection', function(socket)
socketId: socket,
currentRoom: null,
playingData: null,
playerTyping: 0
isReceivable: false
};
GameServer.currentPlayer.push(socket.playerData);
console.log('['+socket.playerData.id+'] client request');
......@@ -42,9 +41,19 @@ io.on('connection', function(socket)
socket.on('setNickname', function(msg) // string new_nickname
{
socket.playerData.nickname = msg;
console.log('['+socket.playerData.id+'] nickname set to ' + msg);
GameServer.enterEmptyRoom(socket.playerData);
let isAlreadyHave = false;
GameServer.currentPlayer.forEach(function(element)
{
if (element.nickname === msg) isAlreadyHave = true;
});
if (isAlreadyHave) socket.emit('errNicknameOverlaped');
else
{
socket.playerData.nickname = msg;
console.log('['+socket.playerData.id+'] nickname set to ' + msg);
GameServer.enterEmptyRoom(socket.playerData);
}
});
socket.on('setPlayerTyping', function(msg) // number playerTyping
......@@ -72,16 +81,22 @@ io.on('connection', function(socket)
{
socket.playerData.playingData.isAlive = false;
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)
{
GameServer.announceToTarget(GameServer.findRoomIndex(msg.roomNum), msg.target, 'attackSucceed', msg);
});
socket.on('disconnect', function(reason)
{
let data = socket.playerData;
console.log('['+ data.id +'] client disconnected, reason: ' + reason);
if (data.id === undefined)
if (typeof data.id === undefined)
{
console.log('[ERROR] data.id is undefined');
console.log(GameServer.currentPlayer);
......@@ -98,10 +113,18 @@ io.on('connection', function(socket)
// 룸에서도 제거
if (data.currentRoom != null)
{
data.playingData.isAlive = false;
if (data.playingData.rank === -1) data.playingData.rank = data.currentRoom.nextRank--;
data.currentRoom.currentSocket.splice(data.playingData.index, 1);
GameServer.announceToRoom(GameServer.findRoomIndex(data.currentRoom.roomNum), 'userDisconnect', data.playingData);
if (data.currentRoom.currentPhase === GameServer.Phase.READY)
{
data.currentRoom.currentPlayer[data.playingData.index] = null;
data.currentRoom.currentSocket[data.playingData.index] = null;
}
else
{
data.playingData.isAlive = false;
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);
}
}
}
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